Skip to main content

API v2

Offorte API Reference Docs - Version 2

Proposals

Proposals list

Returns a paginated list of proposals by status (edit|open|won|lost|closed).

Searching can be done by using the optional query parameter, the provided status will then be ignored.

You can sort the list using the optional sort query parameter, by default the list is sorted by name. Sort options: name, date_created, date_modified, date_openclient

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Proposal details

Returns all proposal details

Responses

Response samples

Content type
application/json
{
  • "account_user_email": "[email protected]",
  • "account_user_id": 1234,
  • "account_user_name": "Elon Musk",
  • "comments": [
    ],
  • "contact": {
    },
  • "content": {
    },
  • "date_modified": "2024-03-22T08:26:46.000000Z",
  • "design_template_id": 1234,
  • "emails": [
    ],
  • "id": 1234,
  • "logs": {
    },
  • "name": "Proposal you can't refuse",
  • "price_total": "$999.99",
  • "price_total_original": 999.99,
  • "price_total_override": 999.99,
  • "proposal_language": "nl",
  • "proposal_nr": "nr 000142",
  • "receivers": [],
  • "remarks": "Make some modifications as requested by Vegan Seagal",
  • "status": "open",
  • "text_template_id": 1234
}

Create proposal

Create a new proposal.

Parameters

name type description
account_user_id integer The proposal is assigned to this user and will be send out in name of this user
contact_people array List with contact_person_id's who are going to receive the proposal; These are the contacts belonging to an organisation who are going to receive the proposal. Make sure they got an email filled in.
contact_id integer The proposal is assigned to this main contact id
proposal_template_id integer The proposal template (favorite) id which is used to create the proposal. See Favorite templates list.
design_template_id integer Design template id
name string Name of the proposal
price_total float Proposal value as calculated by pricetables
status string Proposal status. Possible values: edit, open, won, lost, closed
text_template_id integer Text template id (language template id)
content object Content for the proposal (see below)

Content: Pricetables
Optionally you have the option to add rows to pricetables. Make sure you updated the 'Unique ID' field through the pricetable settings in your proposal template. Then you can target this pricetable to add rows to.

Fields per row type:

type fields
price type, content, quantity, price, vat_percentage, selectable (false, check, radio), user_selected, user_quantity, discount_type (false, percentage, amount), discount_value, recurring_type (false, month, year), recurring_include_in_totals, hide_price, hide_quantity, unique_id, product_id, sku
discount type, content, discount_type (percentage, amount), discount_value
subtotal type, content
title type, content
Request Body schema: application/json
account_user_id
number
automations_set_id
number
contact_id
number
contact_people
Array of numbers
object
design_template_id
number
name
string
proposal_template_id
number
text_template_id
number

Responses

Request samples

Content type
application/json
{
  • "account_user_id": 1234,
  • "automations_set_id": 1234,
  • "contact_id": 1234,
  • "contact_people": [
    ],
  • "content": {
    },
  • "design_template_id": 1234,
  • "name": "Proposal you can't refuse",
  • "proposal_template_id": 1234,
  • "text_template_id": 1234
}

Response samples

Content type
application/json
{
  • "id": 1234,
  • "version_id": 1234
}

Send proposal

Send a proposal

Parameters

name type description
password_reset boolean Optional: Reset the existing passwords when proposal was send before
send_method string Optional: Choose if you want to send it through Offorte or send the proposal your self. Defaults to 'offorte'. Possible values: offorte,self
send_message string The actual message you want to send in plain text. If not provided you must provide the 'send_message_id'
send_message_id integer The id of the email template you want to use as the accompanying message
Request Body schema: application/json
send_message_id
number

Responses

Request samples

Content type
application/json
{
  • "send_message_id": 1234
}

Response samples

Content type
application/json
{}

Update proposal

Updates the proposal details with the provided attributes. Other (unprovided) attributes remain unchanged

Parameters

name type description
account_user_id integer The proposal is assigned to this user and will be send out in name of this user
contact_people array List with contact people id's who are going to receive the proposal; Make sure they got an email filled in
contact_id integer The proposal is assigned to this contact
design_template_id integer Design template id
name string Name of the proposal
price_total float Proposal value as calculated by pricetables
status string Proposal status. Possible values: edit, open, won, lost, closed
text_template_id integer Text template id
Request Body schema: application/json
account_user_id
number
contact_id
number
contact_people
Array of numbers
design_template_id
number
name
string
price_total
number
status
string
text_template_id
number

Responses

Request samples

Content type
application/json
{
  • "account_user_id": 1234,
  • "contact_id": 1234,
  • "contact_people": [
    ],
  • "design_template_id": 1234,
  • "name": "Proposal you can't refuse",
  • "price_total": 999.99,
  • "status": "won",
  • "text_template_id": 1234
}

Response samples

Content type
application/json
{
  • "status": "200 OK"
}

Delete proposal

Deletes a proposal

It will be moved to the trashcan and can be manually restored via the interface (settings/trashcan)

Responses

Response samples

Content type
text/plain

Favorite templates list

Returns a list of proposal favorites (templates).

Deprecated fields:
type,config_language_id,proposal_tpl_id

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Contacts

Contacts organisations list

Returns a paginated list of contacts of type organisation.

Searching on name can be done by using the optional query parameter

Contact tags and custom fields are only included in the contact details request and not included in the list

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Contacts people list

Returns a paginated list of contacts of type person.

Searching on name can be done by using the optional query parameter

Contact tags and custom fields are only included in the contact details request and not included in the list

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Contact details

Returns all contact details

Responses

Response samples

Content type
application/json
{
  • "account_user_id": 1,
  • "account_user_name": "Dennis Wiemer",
  • "city": "Breda",
  • "coc_number": "12345678",
  • "country": "the Netherlands",
  • "date_created": "2010-03-23T09:22:28.000000Z",
  • "email": "[email protected]",
  • "facebook": "facebook.com/example",
  • "fax": "+31 76 12344567",
  • "id": 1234,
  • "instagram": "instagram.com/example",
  • "internet": "www.example.com",
  • "linkedin": "linkedin.com/example",
  • "name": "Example Inc",
  • "people": [
    ],
  • "phone": "+31 76 12344567",
  • "proposals": [
    ],
  • "state": "Noord-Brabant",
  • "street": "Ginnekenweg 1",
  • "tags": [
    ],
  • "twitter": "x.nl",
  • "type": "organisation",
  • "vat_number": "NL123455678",
  • "zipcode": "4800AA"
}

Delete contact

Deletes a contact.

It will be moved to the trashcan and can be manually restored via the interface (settings/trashcan)

Responses

Response samples

Content type
text/plain

Update contact

Updates the main contact details with the provided attributes. Other (unprovided) attributes remain unchanged.

Parameters

name type description
name string
street string
zipcode string
city string
state string
country string
phone string
email string
internet string
linkedin string
facebook string
twitter string
instagram string
fax string type: organisation
coc_number string type: organisation
vat_number string type: organisation
firstname string type: person
lastname string type: person
salutation string type: person
mobile string type: person
tags array Array of strings. Existing tags will be assigned, new ones will be created
custom_* string Any custom field using the field id. For example: custom_specialism
Request Body schema: application/json
city
string
coc_number
string
country
string
custom_specialism
string
email
string
facebook
string
fax
string
instagram
string
internet
string
linkedin
string
name
string
phone
string
state
string
street
string
tags
Array of strings
twitter
string
vat_number
string
zipcode
string

Responses

Request samples

Content type
application/json
{
  • "city": "Breda",
  • "coc_number": "12345678",
  • "country": "the Netherlands",
  • "custom_specialism": "training",
  • "email": "[email protected]",
  • "facebook": "facebook.com/example",
  • "fax": "+31 76 12344567",
  • "instagram": "instagram.com/example",
  • "internet": "www.example.com",
  • "linkedin": "linkedin.com/example",
  • "name": "Example Inc",
  • "phone": "+31 76 12344567",
  • "state": "Noord-Brabant",
  • "street": "Ginnekenweg 1",
  • "tags": [
    ],
  • "twitter": "twitter.com/example",
  • "vat_number": "NL123455678",
  • "zipcode": "4800AA"
}

Response samples

Content type
application/json
{
  • "status": "200 OK"
}

Create contact organisation

Creates a new main contact of type organisation

Parameters

name type description
name string required
type string value: organisation (required)
street string
zipcode string
city string
state string
country string
phone string
fax string
email string
internet string
linkedin string
facebook string
twitter string
instagram string
coc_number string
vat_number string
tags array Array of strings. Existing tags will be assigned, new ones will be created
custom_* string Any custom field using the field id. For example: custom_specialism
Request Body schema: application/json
city
string
country
string
custom_hobby
string
email
string
facebook
string
firstname
string
instagram
string
internet
string
lastname
string
linkedin
string
mobile
string
name
string
phone
string
salutation
string
state
string
street
string
tags
Array of strings
twitter
string
type
string
zipcode
string

Responses

Request samples

Content type
application/json
Example
{
  • "city": "Breda",
  • "coc_number": "kvk12345678",
  • "country": "the Netherlands",
  • "custom_specialism": "training",
  • "email": "[email protected]",
  • "facebook": "facebook.com/example",
  • "fax": "+31 76 12344567",
  • "instagram": "instagram.com/example",
  • "internet": "www.example.com",
  • "linkedin": "linkedin.com/example",
  • "name": "Example Inc",
  • "phone": "+31 76 12344567",
  • "state": "Noord-Brabant",
  • "street": "Ginnekenweg 1",
  • "tags": [
    ],
  • "twitter": "twitter.com/example",
  • "type": "organisation",
  • "vat_number": "NL123455678",
  • "zipcode": "4800AA"
}

Response samples

Content type
application/json
{
  • "account_user_id": 1,
  • "account_user_name": "John Knowles",
  • "city": "Breda",
  • "contact_id": 1234,
  • "country": "the Netherlands",
  • "custom_hobby": "knitting",
  • "date_created": "2024-03-23T08:26:24.000000Z",
  • "email": "[email protected]",
  • "facebook": "facebook.com/example",
  • "firstname": "Chuck",
  • "fullname": "Chuck Norris1",
  • "id": 1234,
  • "instagram": "instagram.com/example",
  • "internet": "www.example.com",
  • "lastname": "Norris",
  • "linkedin": "linkedin.com/example",
  • "mobile": "+31 6 1234567",
  • "name": "Chuck Norris",
  • "phone": "+31 76 12344567",
  • "proposals": [ ],
  • "salutation": "Mr",
  • "state": "Noord-Brabant",
  • "street": "Ginnekenweg 1",
  • "tags": [
    ],
  • "twitter": "twitter.com/example",
  • "type": "person",
  • "zipcode": "4800AA"
}

Organisation people list

Returns a paginated list of the people in an organisation

Contact tags and custom fields are only included in the contact details request and not included in the list

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create organisation person

Creates a new person in an organisation.

Parameters

name type description
name string required
firstname string
lastname string
salutation string
street string
zipcode string
city string
state string
country string
phone string
mobile string
email string
internet string
linkedin string
facebook string
twitter string
instagram string
tags array Array of strings. Existing tags will be assigned, new ones will be created
custom_* string Any custom field using the field id. For example: custom_specialism
Request Body schema: application/json
city
string
country
string
email
string
facebook
string
firstname
string
fullname
string
internet
string
lastname
string
linkedin
string
mobile
string
phone
string
salutation
string
state
string
street
string
twitter
string
zipcode
string

Responses

Request samples

Content type
application/json
{
  • "city": "Breda",
  • "country": "the Netherlands",
  • "email": "[email protected]",
  • "facebook": "facebook.com/example",
  • "firstname": "Chuck",
  • "fullname": "Chuck Norris",
  • "internet": "www.example.com",
  • "lastname": "Norris",
  • "linkedin": "linkedin.com/example",
  • "mobile": "+31 76 12344567",
  • "phone": "+31 76 12344567",
  • "salutation": "Mr",
  • "state": "Noord-Brabant",
  • "street": "Ginnekenweg 1",
  • "twitter": "twitter.com/example",
  • "zipcode": "4800AA"
}

Response samples

Content type
application/json
{
  • "city": "Breda",
  • "contact_id": 1234,
  • "country": "the Netherlands",
  • "custom_hobby": "knitting",
  • "date_created": "2024-03-23T08:26:24.000000Z",
  • "email": "[email protected]",
  • "facebook": "facebook.com/example",
  • "firstname": "Chuck",
  • "fullname": "Chuck Norris1",
  • "id": 1234,
  • "instagram": "instagram.com/example",
  • "internet": "www.example.com",
  • "lastname": "Norris",
  • "linkedin": "linkedin.com/example",
  • "mobile": "+31 6 1234567",
  • "phone": "+31 76 12344567",
  • "salutation": "Mr",
  • "state": "Noord-Brabant",
  • "street": "Ginnekenweg 1",
  • "tags": [
    ],
  • "twitter": "twitter.com/example",
  • "zipcode": "4800AA"
}

Organisation person details

Returns all details of a person (part of organisation)

Responses

Response samples

Content type
application/json
{
  • "city": "Breda",
  • "contact_id": 1234,
  • "country": "the Netherlands",
  • "custom_description": false,
  • "custom_hobby": "knitting",
  • "date_created": "2024-03-23T08:26:24.000000Z",
  • "email": "[email protected]",
  • "facebook": "facebook.com/example",
  • "firstname": "Chuck",
  • "fullname": "Chuck Norris",
  • "id": 1234,
  • "instagram": "instagram.com/example",
  • "internet": "www.example.com",
  • "lastname": "Norris",
  • "linkedin": "linkedin.com/example",
  • "mobile": "+31 6 1234567",
  • "phone": "+31 76 12344567",
  • "salutation": "Mr",
  • "state": "Noord-Brabant",
  • "street": "Ginnekenweg 1",
  • "twitter": "twitter.com/example",
  • "zipcode": "4800AA"
}

Update organisation person

Updates the organisation person details with the provided attributes. Other (unprovided) attributes remain unchanged

Parameters

name type description
name string
firstname string
lastname string
salutation string
street string
zipcode string
city string
state string
country string
phone string
mobile string
email string
internet string
linkedin string
facebook string
twitter string
instagram string
tags array Array of strings. Existing tags will be assigned, new ones will be created
custom_* string Any custom field using the field id. For example: custom_specialism
Request Body schema: application/json
city
string
country
string
custom_hobby
string
email
string
facebook
string
firstname
string
instagram
string
internet
string
lastname
string
linkedin
string
mobile
string
name
string
phone
string
salutation
string
state
string
street
string
tags
Array of strings
twitter
string
zipcode
string

Responses

Request samples

Content type
application/json
{
  • "city": "Breda",
  • "country": "the Netherlands",
  • "custom_hobby": "knitting",
  • "email": "[email protected]",
  • "facebook": "facebook.com/example",
  • "firstname": "Chuck",
  • "instagram": "instagram.com/example",
  • "internet": "www.example.com",
  • "lastname": "Norris",
  • "linkedin": "linkedin.com/example",
  • "mobile": "+31 6 1234567",
  • "name": "Chuck Norris",
  • "phone": "+31 76 12344567",
  • "salutation": "Mr",
  • "state": "Noord-Brabant",
  • "street": "Ginnekenweg 1",
  • "tags": [
    ],
  • "twitter": "twitter.com/example",
  • "zipcode": "4800AA"
}

Response samples

Content type
application/json
{
  • "status": "200 OK"
}

Delete organisation person

Deletes a person from an organisation

Responses

Response samples

Content type
text/plain

Templates & Settings

Design templates list

Returns a list of design templates.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Email templates list

Returns a list of email templates.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Tags list

Returns a list of text / language templates.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Text / Language templates list

Returns a list of text / language templates.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

VAT (tax) groups list

Returns a list of VAT groups.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Products

Products list

List the products for a directory.

Deprecated fields:
optional.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create product

Creates a new product.

Parameters details

name type description
sku string
price float
vat_id integer
selectable string Row is optional to choose by the customer. Check is multiple choice, Radio is single choice. Types: check, radio, false
recurring string Row is recurring and from type: month, year
name string
descr_short string

_Deprecated fields:_optional.

Request Body schema: application/json
descr_short
string
name
string
price
number
recurring
string
selectable
string
sku
number
vat_id
number

Responses

Request samples

Content type
application/json
{
  • "descr_short": "Hello here is my descr",
  • "name": "API some new product",
  • "price": 3000,
  • "recurring": "month",
  • "selectable": "radio",
  • "sku": 1234,
  • "vat_id": 7
}

Response samples

Content type
application/json
{
  • "product_id": 1234
}

Delete product

Deletes a product

Responses

Response samples

Content type
text/plain

Update product

Updates the product with the provided attributes.

Parameters details

name type description
sku string
price float
vat_id integer
selectable string Row is optional to choose by the customer. Check is multiple choice, Radio is single choice. Types: check, radio, false
recurring string Row is recurring and from type: month, year
name string
descr_short string

_Deprecated fields:_optional.

Request Body schema: application/json
descr_short
string
directory_id
number
name
string
price
string
recurring
string
selectable
string
sku
string
vat_id
number

Responses

Request samples

Content type
application/json
{
  • "descr_short": "This is a description",
  • "directory_id": 1,
  • "name": "Example Inc",
  • "price": "1000",
  • "recurring": "month",
  • "selectable": "check",
  • "sku": "abc12345678",
  • "vat_id": 1
}

Response samples

Content type
application/octet-stream
true

Product directories list

List the product directories

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create product directory

Creates a new product directory

Request Body schema: application/json
name
string

Responses

Request samples

Content type
application/json
{
  • "name": "Example Inc"
}

Response samples

Content type
application/json
{
  • "status": "201 Created"
}

Delete product directory

Deletes a product directory. The directory should not contain any products, otherwise the request will fail.

Responses

Response samples

Content type
text/plain

Update product directory

Updates the product directory with the provided attributes

Request Body schema: application/json
name
string

Responses

Request samples

Content type
application/json
{
  • "name": "Example Inc"
}

Response samples

Content type
application/json
{
  • "status": "200 OK"
}

Automations

Automations sets list

Returns a list of automations sets

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Account

Users list

Returns a list of active account users.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Webhooks

Webhooks list

Returns a list of webhooks.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create webhook

Creates a new webhook

Parameters details

name type desscription
payload_url string Url where the data will be posted to; must be a full https url
payload_content_type string Content type header: json
active boolean Is it active or not
events array Events to subscribe to
Request Body schema: application/json
active
boolean
events
Array of strings
payload_content_type
string
payload_url
string

Responses

Request samples

Content type
application/json
{
  • "active": true,
  • "events": [
    ],
  • "payload_content_type": "json",
}

Response samples

Content type
application/json
{
  • "webhook_id": 1
}

Webhook details

Returns the webhook details.

Responses

Response samples

Content type
application/json
{
  • "active": true,
  • "api_version": 2,
  • "date_created": "2024-03-22T08:26:46.000000Z",
  • "date_failed": "2024-03-22T08:26:46.000000Z",
  • "date_modified": "2024-03-22T08:26:46.000000Z",
  • "events": [
    ],
  • "id": 1,
  • "payload_content_type": "json",
}

Delete webhook

Deletes a webhook

Responses

Response samples

Content type
text/plain

Update webhook

Updates the webhook details with the provided attributes. Other (unprovided) attributes remain unchanged

Parameters details

name type desscription
payload_url string Url where the data will be posted to; must be a full https url
payload_content_type string Content type header: json
active boolean Is it active or not
events array Events to subscribe to
Request Body schema: application/json
active
boolean
events
Array of strings
payload_content_type
string
payload_url
string

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "status": "200 OK"
}