Artisio Webhooks
Artisio has built-in support of webhooks for the following Objects:
Webhook Configuration
Webhooks can be configured upon your request. You provide your endpoint(s) and tell us for which objects you want webhooks to be configured. We'll let you know once it is done.
Webhooks are triggered and executed synchronously. If 10 Lots are created with bulk action, webhooks will be executed one after another and every next request will be made only after the previous one is completed or failed.
Keep in mind
If request is not successful, system will try it 3 times in total until it will move to next request.
Webhook Payload Example
{
"action": "",
"object": "",
"data": {}
}
action
will be one of the following events:CREATE
,UPDATE
,DELETE
object
will be one of the supported models:Department
,Category
,Auction
,Lot
,Customer
,Invoice
,Settlement
data
contains the information about the object.- Every request is sent with
POST
request method - Every request has
Content-Type application/json
header
Webhook Authentication
Authentication is required with Auth bearer token, which should be provided before enabling webhooks
Reusable(Core) Model Definitions
Objects that will be pushed using webhook (such as: Customer
, Auction
, etc...) might contain nested objects inside, here are several common core models, that might be part of the multiple objects.
TranslatableModel
TranslatableModel is an object, where the key is the language code and the value is corresponding text on that language. TranslatableModel might contain texts for 1 or more languages. Used in Auction, Lot, Department or Category.
TranslatableModel {
"en": "English Text",
"es": "Spanish Text",
...
}
ImageModel
Used in Auction and Lot models.
ImageModel {
"uuid": "UUID (Primary Key)",
"name": "Varchar(255) (Image name)",
"position": "Integer (Sorting position of an image)",
"data": {
"lg": "<ImageDetailModel> (Large resolution)",
"sm": "<ImageDetailModel> (Small resolution)",
"thumb": "<ImageDetailModel> (Thumbnail)",
}
}
ImageDetailModel
Used in ImageModel model.
ImageDetailModel {
"url": "Text (Full url of image)",
"width": "Integer",
"height": "Integer"
}
DynamicFieldsTemplateModel
Used in Category model.
DynamicFieldsTemplateModel {
"fieldName1": {
"label": "fieldName1 Label",
"rules": {
"required": false
}
},
"fieldName2": {
"label": "fieldName2 Label",
"rules": {
"required": true
}
},
...
}
DynamicTranslatableModel
Used in Lot model.
DynamicTranslatableModel {
"en": {
"fieldName1": "Text",
"fieldName2": "Text",
...
},
...
}
AddressModel
Used in Customer model.
AddressModel {
"uuid": "UUID (Primary Key)",
"customer_uuid": "UUID (Primary Key) Primary key of customer",
"type": "<'shipping','billing'>",
"is_primary": "Boolean",
"country_code": "Varchar(2) (ISO 3166 country code Ex.: 'GB')",
"address_1": "Text",
"address_2": "Text",
"city": "Text",
"state": "Text",
"tax_rate": "Integer",
"zip_code": "Varchar(55)",
"created_at": "DateTime",
"updated_at": "DateTime",
"phone": "Varchar(55)",
"email": "Varchar(55)"
}
Webhook Payload Models
Here are definition of models that will be passed to webhook events.
Customer Model
{
"action": "<'CREATE','UPDATE','DELETE'>",
"object": "CUSTOMER",
"data": {
"uuid": "UUID (Primary Key)",
"first_name": "Varchar(155)",
"middle_name": "Varchar(155)",
"last_name": "Varchar(155)",
"company_name": "Varchar(155)",
"personal_id": "Varchar(45)",
"is_company": "Boolean",
"email": "Varchar(155)",
"phone": "Varchar(55)",
"status": "<'active','pending','blocked'>",
"title": "Varchar(55)",
"acquisition_source": "Varchar(255)",
"optin": "Boolean",
"tags": "Text (Comma seperated strings)",
"customer_no": "Varchar(15)",
"display_name": "Varchar(255) Read Only ",
"enable_estimate_request": "Boolean",
"created_at": "DateTime",
"updated_at": "DateTime",
"mobile": "Varchar(55)",
"skip_auction_deposit_requirement": true,
"birth_date": "Date",
"addresses": "List<AddressModel>",
"timezone": "VarChar(55)"
}
}
Auction Model
{
"action": "<'CREATE','UPDATE','DELETE'>",
"object": "AUCTION",
"data": {
"uuid": "UUID (Primary Key)",
"title": "<TranslatableModel>",
"description": "<TranslatableModel>",
"sale_no": "Varchar(55), (Unique Sale Number)",
"currency_code": "Varchar(3) (ISO 4217 currency code Ex.: 'USD')",
"department_uuid": "UUID (Primary Key of Department)",
"branch_uuid": "UUID (Primary Key of Branch)",
"type": "Enum<'timed', 'live'>",
"start_date": "DateTime",
"end_date": "DateTime",
"viewing_start_date": "DateTime",
"viewing_end_date": "DateTime",
"status": "Enum<'draft', 'published', 'listed', 'completed'>",
"images": "List<ImageModel>",
"increments": "List<IncrementModel>",
"premium_terms": "List<PremiumTierModel>",
"delay_batch": "Integer",
"delay_interval": "Integer",
"bidding_extension": "Integer",
"bidder_approval": "Boolean",
"max_total_delay": "Integer",
"is_private_treaty": "Integer"
}
}
Lot Model
{
"action": "<'CREATE','UPDATE','DELETE'>",
"object": "LOT",
"data": {
"uuid": "UUID (Primary Key)",
"auction_uuid": "UUID (Primary Key of Auction))",
"category_uuid": "UUID (Primary Key of Category)",
"department_uuid": "UUID (Primary Key of Department)",
"inventory_uuid": "UUID (Primary Key of Inventory)",
"branch_uuid": "UUID (Primary Key of Branch)",
"status": "Enum<'lotted','sold','withdrawn','unsold'>",
"lot_no": "Varchar(10) (Lot number)",
"quantity": "Integer",
"low": "Float (Low estimate)",
"high": "Float (High estimate)",
"reserve": "Float (Reserve price)",
"buy_now_price": "Float (Buy Now price)",
"start_price": "Float (Start price)",
"images": "List<ImageModel>",
"dynamic_fields": "<DynamicTranslatableModel>",
"is_draft": "Boolean"
}
}
Department Model
{
"action": "<'CREATE','UPDATE','DELETE'>",
"object": "DEPARTMENT",
"data": {
"uuid": "Primary Key (Read-Only)",
"name": "<TranslatableModel>"
}
}
Category Model
{
"action": "<'CREATE','UPDATE','DELETE'>",
"object": "CATEGORY",
"data": {
"uuid": "Primary Key (Read-Only)",
"department_uuid": "UUID (Primary Key of Department)",
"name": "<TranslatableModel>",
"dynamic_fields_template": "<DynamicFieldsTemplateModel>"
}
}
For two different categories dynamic_fields_template
might be different, but the format of each dynamic field will be the same. See DynamicFieldsTemplateModel.
Invoice Model
{
"action": "<'CREATE','UPDATE','DELETE'>",
"object": "INVOICE",
"data": {
"uuid": "UUID (Primary Key)",
"invoice_no": "String",
"status": "String",
"type": "String",
"sale_no": "String",
"is_credit_note": "Boolean",
"is_credited": "Boolean",
"comment": "String",
"total_amount": "Float",
"paid_amount": "Float",
"outstanding_amount": "Float",
"deposit_sale_no": "String",
"auction_uuid": "UUID",
"customer_uuid": "UUID",
"hammer_price": "Float",
"shipping_vat": "Float",
"deposit_amount": "Float",
"hammer_vat": "Float",
"premium": "Float",
"premium_vat": "Float",
"miscellaneous_charge": "Float",
"miscellaneous_vat": "Float",
"shipping_amount": "Float",
"extra_charge": "Float",
"extra_charge_vat": "Float",
"extra_charge_data": "JSON",
"miscellaneous_data": "JSON"
}
}
Settlement Model
{
"action": "<'CREATE','UPDATE','DELETE'>",
"object": "SETTLEMENT",
"data": {
"uuid": "UUID (Primary Key)",
"settlement_no": "String",
"status": "String",
"type": "String",
"sale_no": "String",
"auction_uuid": "UUID",
"customer_uuid": "UUID",
"hammer_price": "Float",
"shipping_amount": "Float",
"shipping_vat": "Float",
"shipping_tracking_code": "String",
"shipping_taxable": "String",
"date": "Date",
"payable_amount": "Float",
"hammer_vat": "Float",
"hammer_adjustment": "Float",
"hammer_adjustment_vat": "Float",
"commission": "Float",
"commission_vat": "Float",
"miscellaneous": "Float",
"miscellaneous_vat": "Float",
"miscellaneous_data": "JSON",
"lot_handling_charge": "Float",
"lot_handling_vat": "Float",
"insurance_fee": "Float",
"insurance_vat": "Float"
}
}