The number of results that will be returned per page.
Kanbert (v1)
Available sorts are offer_number, title, date_of_offer, sum_net, sum_tax, sum_external_costs, sum_gross, created_at, updated_at, computed_fields.<alias>.
You can sort by multiple options by separating them with a comma. To sort in descending order, use - sign in front of the sort, for example: -title.
Available includes are external_costs, line_items, discounts. You can include multiple options by separating them with a comma.
Allowed filter fields (with allowed operators):
| Field | Type | Operators |
|---|---|---|
archived | enum: with, only, without | eq |
title | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
offer_number | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
date_of_offer | date | eq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull |
date_of_expiry | date | eq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull |
sum_net | currency | eq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, contains, like, startswith, endswith, isnull, isnotnull, notnull |
sum_tax | currency | eq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, contains, like, startswith, endswith, isnull, isnotnull, notnull |
sum_gross | currency | eq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, contains, like, startswith, endswith, isnull, isnotnull, notnull |
editor.id | id<UserData> | eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull |
editor.external_id | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
editor.email | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
client.id | id<ClientData> | eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull |
client.name | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
client.external_id | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
client.shortcode | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
project.id | id<ProjectData> | eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull |
project.title | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
project.external_id | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
project.shortcode | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
company.id | id<CompanyData> | eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull |
company.company_name:string | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
line_items | Relation- title (string) - price (currency) - amount (float) - project.id (id) - project.title (string) - project.external_id (string) - project.shortcode (string) - total_net (currency) - total_net_base (currency) - total_gross (currency) - total_gross_base (currency) - purchase_total (currency) - type (enum) | any, none, count, all |
external_costs | Relation- title (string) - amount (float) - project.id (id) - project.title (string) - project.external_id (string) - project.shortcode (string) - supplier.id (id) - supplier.name (string) - price (currency) - total (currency) | any, none, count, all |
Filtering expression. Accepts either JSON (array/tree of conditions) or a readable string DSL.
You can check the full syntax at Docs Filtering section.
Special values:
- me.id — current authenticated user id (usable on fields of type id). Example:
id eq me.id - now — current date-time. Example:
dueOn lt now - sow/eow — start/end of week. Examples:
dueOn gt sow,dueOn lt eow - som/eom — start/end of month. Examples:
dueOn gt som,dueOn lt eom - today — special date for today; with eq it expands to the whole day range. Example:
dueOn eq today - today±Nd — relative day offset. Examples:
today-30d,today+5d.
Dynamic computed relation fields (computed_fields[alias])
Declare ad-hoc aggregates per request using: computed_fields[<alias>] = relation.aggregate(args)
Syntax:
- Count:
relation.count()orrelation.count(<where>) - Sum/Avg/Min/Max:
relation.sum(<column>)orrelation.sum(<column>, <where>)
Where is written using the same Filter DSL and is validated against the relation's allowed fields.
Use the prefix computed_fields. when referencing these aliases in filter or sort, e.g., filter=computed_fields.tasks_done gte 1 or sort=-computed_fields.tasks_done. Bare aliases are accepted for backward compatibility but deprecated.
Allowed relations for computed_fields (deny-all by default):
- line_items (→ lineItems): aggregates: count, sum, avg, min, max; coalesce default: 0
- external_costs (→ internalCosts): aggregates: count, sum, avg, min, max; coalesce default: 0
Example: ?computed_fields[tasks_done]=tasks.count(status%20eq%20%22Completed%22)&filter=computed_fields.tasks_done%20gt%200
- https://api.kanbert.com/api/v1/offers
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.kanbert.com/api/v1/offers?sort=sort%3D-created_at%2Ctitle&include=string&page%5Bsize%5D=30&page%5Bcursor%5D=string&filter=title+contains+%22Acme%22+and+%28created_at+%3E%3D+%222024-01-01%22+or+client.name+contains+%22Corp%22%29&computed_fields%5Balias%5D=computed_fields%5Btasks_done%5D%3Dtasks.count%28status%2520eq%2520%2522Completed%2522%29' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'The cursor paginated collection of OfferData
The list of items
open Offer in draft |
approval_pending Offer was submitted for internal approval |
approval_approved Offer was internally approved |
transformed Customer approved offer |
cancelled Customer declined offer |
Offer skipped internal approval process - can also be true if offer is still open, due to reopening
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
The key is the field name for your custom field, value type depends on the field type
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
Can be used to add an identifier to the project from an external system, must be unique
If originated from external system origin is added
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
The key is the field name for your custom field, value type depends on the field type
Excluding all discounts
Does not reflect total value over performance range
Including unit discount (not offer discounts)
Does not reflect total value over performance range
Excluding all discounts
Does not reflect total value over performance range
Including unit discount (not offer discounts)
Does not reflect total value over performance range
Can be used to add an identifier to the project from an external system, must be unique
If originated from external system origin is added
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
The key is the field name for your custom field, value type depends on the field type
If true, the unit will be excluded from offer-wide discounts
If true, the amount will multiply discount absolute
If true, purchase_amount will be in sync with amount
Interval if payment partial type is monthly or `yearly
| Type | Interval | Description |
|---|---|---|
once | any | Once per offer |
monthly | 1 | Every month in performance range |
monthly | 3 | Every 3 months in performance range |
monthly | 6 | Every 6 monthsin performance range |
yearly | 1 | Every year in performance range |
yearly | 3 | Every 3 years in performance range |
yearly | 6 | Every 6 years in performance range |
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
Can be used to add an identifier to the project from an external system, must be unique
If originated from external system origin is added
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
The key is the field name for your custom field, value type depends on the field type
Interval if payment partial type is monthly or `yearly
| Type | Interval | Description |
|---|---|---|
once | any | Once per offer |
monthly | 1 | Every month in performance range |
monthly | 3 | Every 3 months in performance range |
monthly | 6 | Every 6 monthsin performance range |
yearly | 1 | Every year in performance range |
yearly | 3 | Every 3 years in performance range |
yearly | 6 | Every 6 years in performance range |
{ "data": [ { … } ], "links": [ "string" ], "meta": { "path": "string", "per_page": 0, "next_cursor": "string", "next_cursor_url": "string", "prev_cursor": "string", "prev_cursor_url": "string" } }
- https://api.kanbert.com/api/v1/offers/{id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.kanbert.com/api/v1/offers/{id}?find_by=id&origin=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'OfferData
open Offer in draft |
approval_pending Offer was submitted for internal approval |
approval_approved Offer was internally approved |
transformed Customer approved offer |
cancelled Customer declined offer |
Offer skipped internal approval process - can also be true if offer is still open, due to reopening
Can be used to add an identifier to the client from an external system, must be unique
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
The key is the field name for your custom field, value type depends on the field type
Can be used to add an identifier to the client from an external system, must be unique
Can be used to add an identifier to the project from an external system, must be unique
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
The key is the field name for your custom field, value type depends on the field type
Excluding all discounts
Does not reflect total value over performance range
Including unit discount (not offer discounts)
Does not reflect total value over performance range
Excluding all discounts
Does not reflect total value over performance range
Including unit discount (not offer discounts)
Does not reflect total value over performance range
Can be used to add an identifier to the project from an external system, must be unique
If originated from external system origin is added
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
The key is the field name for your custom field, value type depends on the field type
If true, the unit will be excluded from offer-wide discounts
If true, the amount will multiply discount absolute
If true, purchase_amount will be in sync with amount
Interval if payment partial type is monthly or `yearly
| Type | Interval | Description |
|---|---|---|
once | any | Once per offer |
monthly | 1 | Every month in performance range |
monthly | 3 | Every 3 months in performance range |
monthly | 6 | Every 6 monthsin performance range |
yearly | 1 | Every year in performance range |
yearly | 3 | Every 3 years in performance range |
yearly | 6 | Every 6 years in performance range |
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
Can be used to add an identifier to the project from an external system, must be unique
If originated from external system origin is added
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
The key is the field name for your custom field, value type depends on the field type
Interval if payment partial type is monthly or `yearly
| Type | Interval | Description |
|---|---|---|
once | any | Once per offer |
monthly | 1 | Every month in performance range |
monthly | 3 | Every 3 months in performance range |
monthly | 6 | Every 6 monthsin performance range |
yearly | 1 | Every year in performance range |
yearly | 3 | Every 3 years in performance range |
yearly | 6 | Every 6 years in performance range |
{ "id": "string", "offer_number": "string", "title": "string", "status": "open", "approvals_needed": 0, "is_direct_approved": true, "date_of_offer": "2019-08-24T14:15:22Z", "date_of_expiry": "2019-08-24T14:15:22Z", "performance_range_start": "2019-08-24T14:15:22Z", "performance_range_end": "2019-08-24T14:15:22Z", "locale": "string", "currency": "string", "address": "string", "address_changed": true, "company": { "id": "string", "external_id": "string", "external_origin": "string", "vendor_identifier": "string", "company_name": "string", "locale": "string", "tax_uid": "string", "taxation_enabled": true, "iban": "string", "bic": "string", "email": "string", "email_general": "string", "phone": "string", "fax": "string", "homepage": "string", "invoices_by_post": false, "invoices_by_email": false, "business_field": { … }, "company_size": { … }, "company_revenue": { … }, "person_attention_to": "string", "address_invoice_title": "string", "address_invoice_street": "string", "address_invoice_house": "string", "address_invoice_street2": "string", "address_invoice_zip": "string", "address_invoice_state": "string", "address_invoice_town": "string", "address_invoice_country": { … }, "address_invoice_is_delivery": true, "delivery_person_attention_to": "string", "address_delivery_title": "string", "address_delivery_street": "string", "address_delivery_house": "string", "address_delivery_street2": "string", "address_delivery_zip": "string", "address_delivery_state": "string", "address_delivery_town": "string", "address_delivery_country": { … }, "client": { … }, "tags": [ … ], "contacts": [ … ], "custom_fields": "['custom_field_1' => 'value', 'custom_field_2' => true]", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "contact_company": { … } }, "editor": { "id": "string", "first_name": "string", "last_name": "string", "email": "string", "type": "user", "space": { … } }, "client": { "id": "string", "external_id": "string", "external_origin": "string", "name": "string", "shortcode": "string", "primary_contact": { … }, "origin_space": { … } }, "project": { "id": "string", "external_id": "string", "external_origin": "string", "title": "string", "shortcode": "string", "po_number": "string", "project_type": { … }, "status": "string", "is_acquisition": true, "is_private": true, "start_date": "2019-08-24", "end_date": "2019-08-24", "client": { … }, "tags": [ … ], "custom_fields": "['custom_field_1' => 'value', 'custom_field_2' => true]", "origin_space": { … }, "team": [ … ], "guests": [ … ], "computed_fields": { … } }, "taxation_enabled": true, "sum_net": 0, "sum_tax": 0, "sum_gross": 0, "sum_external_costs": 0, "line_items": [ { … } ], "external_costs": [ { … } ], "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "deleted_at": "2019-08-24T14:15:22Z", "computed_fields": { "property1": 0, "property2": 0 } }
Available sorts are title, price, total, purchase_price, purchase_total, created_at, updated_at.
You can sort by multiple options by separating them with a comma. To sort in descending order, use - sign in front of the sort, for example: -title.
Allowed filter fields (with allowed operators):
| Field | Type | Operators |
|---|---|---|
title | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
price | float | eq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull |
amount | float | eq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, isnull, isnotnull, notnull |
project.id | id<ProjectData> | eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull |
project.title | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
project.external_id | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
project.shortcode | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
total | currency | eq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, contains, like, startswith, endswith, isnull, isnotnull, notnull |
purchase_price | currency | eq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, contains, like, startswith, endswith, isnull, isnotnull, notnull |
purchase_total | currency | eq, ne, neq, lt, lte, le, gt, gte, ge, in, nin, notin, contains, like, startswith, endswith, isnull, isnotnull, notnull |
type | enum<AccountingLineItemType> | eq, ne, neq, in, nin, notin |
metric.id | id<MetricData> | eq, ne, neq, in, nin, notin, isnull, isnotnull, notnull |
metric.title | string | in, nin, notin, eq, ne, neq, contains, like, startswith, endswith, isnull, isnotnull, notnull |
Filtering expression. Accepts either JSON (array/tree of conditions) or a readable string DSL.
You can check the full syntax at Docs Filtering section.
Special values:
- me.id — current authenticated user id (usable on fields of type id). Example:
id eq me.id - now — current date-time. Example:
dueOn lt now - sow/eow — start/end of week. Examples:
dueOn gt sow,dueOn lt eow - som/eom — start/end of month. Examples:
dueOn gt som,dueOn lt eom - today — special date for today; with eq it expands to the whole day range. Example:
dueOn eq today - today±Nd — relative day offset. Examples:
today-30d,today+5d.
- https://api.kanbert.com/api/v1/offers/{id}/line-items
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.kanbert.com/api/v1/offers/{id}/line-items?find_by=id&origin=string&sort=sort%3D-created_at%2Ctitle&page%5Bsize%5D=30&page%5Bcursor%5D=string&filter=title+contains+%22Acme%22+and+%28created_at+%3E%3D+%222024-01-01%22+or+client.name+contains+%22Corp%22%29' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'The cursor paginated collection of OfferLineItemData
The list of items
Excluding all discounts
Does not reflect total value over performance range
Including unit discount (not offer discounts)
Does not reflect total value over performance range
Excluding all discounts
Does not reflect total value over performance range
Including unit discount (not offer discounts)
Does not reflect total value over performance range
Can be used to add an identifier to the project from an external system, must be unique
If originated from external system origin is added
Can be used to add an identifier to the client from an external system, must be unique
If originated from external system origin is added
The key is the field name for your custom field, value type depends on the field type
If true, the unit will be excluded from offer-wide discounts
If true, the amount will multiply discount absolute
If true, purchase_amount will be in sync with amount
Interval if payment partial type is monthly or `yearly
| Type | Interval | Description |
|---|---|---|
once | any | Once per offer |
monthly | 1 | Every month in performance range |
monthly | 3 | Every 3 months in performance range |
monthly | 6 | Every 6 monthsin performance range |
yearly | 1 | Every year in performance range |
yearly | 3 | Every 3 years in performance range |
yearly | 6 | Every 6 years in performance range |
{ "data": [ { … } ], "links": [ "string" ], "meta": { "path": "string", "per_page": 0, "next_cursor": "string", "next_cursor_url": "string", "prev_cursor": "string", "prev_cursor_url": "string" } }
- https://api.kanbert.com/api/v1/offers/{id}/pdf
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.kanbert.com/api/v1/offers/{id}/pdf?find_by=id&origin=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'No content