Odoo Webhooks
Webhooks(A user-defined HTTP callbacks) are a useful tool for apps that want to execute code after a specific event happens on an Odoo, for example, after a warehouse manager creates a new product, updates a stock quantity for existing products or sales manager confirm the quotation, etc.
Edition:
Odoo Community & Enterprise
App Description Page
Instead of telling your app to make an API call every X number of minutes to check if a specific event has occured on an Odoo, you can register webhooks, which send an HTTP request from the Odoo telling your app that the event has occurred. This uses many less API requests overall, allowing you to build more robust apps, and update your app instantly after a webhook is received.
Webhook event data can be stored as JSON or XML, and is commonly used when:
- Placing an order
- Changing a productРђЎs price
- Collecting data for data-warehousing
- Integrating your accounting software
- Filtering the order items and informing various shippers about the order
Webhook Authentication
- OAuth1 Authentication
POST /restapi/1.0/common/oauth1/request_token (Temporary Credential Request endpoint)
GET /restapi/1.0/common/oauth1/authorize (Resource Owner Authorization endpoint)
POST /restapi/1.0/common/oauth1/access_token (Token Credentials Request endpoint)
- OAuth2 Authentication
GET /restapi/1.0/common/oauth2/authorize (Resource Owner Authorization endpoint)
POST /restapi/1.0/common/oauth2/access_token (Token Credentials Request endpoint)
Webhook Endpoints
- Get a Webhooks
GET /restapi/1.0/webhooks (Get a list of all webhooks)
GET /restapi/1.0/webhooks/{id} (Get a single webhook by its id)
GET /restapi/1.0/webhooks?ids={comma_separated_ids} (Get a list of webhooks of particular ids)
GET /restapi/1.0/webhooks/?domain={comma_separated_list_of_args} (Get a list of specific webhooks using domain filter)
- Get a count of Webhooks
GET /restapi/1.0/webhooks/count
- Create a new Webhook
POST /restapi/1.0/webhooks?vals={values_for_the_object's_fields}
- Update an existing Webhook
PUT /restapi/1.0/webhooks/{id}?vals={fields_and_values_to_update} (Update a single webhook by its id)
PUT /restapi/1.0/webhooks?ids={comma_separated_ids}&vals={fields_and_values_to_update} (Update a list of webhooks of particular ids)
- Delete a Webhook from the database
DELETE /restapi/1.0/webhooks/{id} (Delete a single webhook by its id)
DELETE /restapi/1.0/webhooks?ids={comma_separated_ids} (Delete a list of webhooks of particular ids)
Receive a webhook
Once you register a webhook URL with Odoo, it will issue a HTTP POST request to the URL specified every time that event occurs. The requestРђЎs POST parameters will contain XML/JSON data relevant to the event that triggered the request.
The trouble with testing your webhooks is that you need a publicly visible URL to handle them.
There are a couple of tools that make working with webhooks during development much easier such as RequestBin, Pagekite and ngrok.
Respond to a webhook
Your webhook acknowledges that it received data by sending a 200 OK response. Any response outside of the 200 range will let Odoo know that you did not receive your webhook. Odoo has implemented a configurable timeout period and a retry period for subscriptions under Settings > General Settings > Webhook Configuration.
We wait for a response to each request till configured timeout period (default is 5 seconds), and if there isnРђЎt one or we get an error, we retry the connection for configured retry periods (default is 5 times). A webhook request job will be deleted if there are N number of consecutive failures for the exact same webhook (N being a configured retry period, default is 5 times). You should monitor the admin of your webhook tool for failing webhooks.
If youРђЎre receiving an Odoo webhook, the most important thing to do is respond quickly. There have been several historical occurrences of apps that do some lengthy processing when they receive a webhook that triggers the timeout. This has led to situations where webhooks were removed from functioning apps.
To make sure that apps don't accidentally run over the timeout limit, we now recommend that apps defer processing until after the response has been sent.
Dependencies
This module is depend on restapi module, which is also available on Odoo App Store, Here are links for:
Odoo REST API (Version 9.0 Community & Enterprise)
Odoo REST API (Version 10.0 Community & Enterprise)
Odoo REST API (Version 11.0 Community & Enterprise)
Webhook Quick Reference Guide
Click Here for a quick reference guide to use the odoo webhooks.
Notes:
- All the apps are to be purchased separately, for individual versions and individual edition.
- One month free bug support period will be offered pertaining to any one server used, testing or live.
- Synconics is only responsible for providing the module zip file on your registered email, purchased from our app store or directly through our company.
- Synconics is not responsible for installation or updating of the module on any of your server.
- If an error appears in our app due to other custom modules installed in your system or if Odoo base source code is not updated on your system, to make it compatible with your source code, we'll charge you for our efforts to resolve those errors and make the module compatible with your source code.
- Please refer the document for configuration. If any support is needed for module configuration, installation, updating or any help is needed, it will be considered in paid support.
- Please note that you are not allowed to distribute or resell this module after purchase.
- This module is tested and working on Odoo vanilla with Ubuntu OS.
- Support services will be provided from Monday to Friday, 10:30 AM to 7:30 PM IST (Indian Standard Time).
- Support will not be provided during Indian public holidays or company holidays.
Once the user has seen at least one product this snippet will be visible.