Metadata-Version: 2.1
Name: odoo-addon-usability_webhooks
Version: 15.0.1.1.0
Requires-Python: >=3.8
Requires-Dist: odoo>=15.0a,<15.1dev
Summary: REST API for Webhook
Home-page: https://github.com/ecosoft-odoo/ecosoft-addons
License: AGPL-3
Author: Ecosoft, Odoo Community Association (OCA)
Author-email: support@odoo-community.org
Classifier: Programming Language :: Python
Classifier: Framework :: Odoo
Classifier: Framework :: Odoo :: 15.0
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Description-Content-Type: text/x-rst

.. image:: https://odoo-community.org/readme-banner-image
   :target: https://odoo-community.org/get-involved?utm_source=readme
   :alt: Odoo Community Association

====================
REST API for Webhook
====================

.. 
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! This file is generated by oca-gen-addon-readme !!
   !! changes will be overwritten.                   !!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! source digest: sha256:9d78ef318d12e0e0095e5d25fa06df2d7608f594693ce94ed91fa785e896ccb3
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
    :target: https://odoo-community.org/page/development-status
    :alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
    :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
    :alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-ecosoft--odoo%2Fecosoft--addons-lightgray.png?logo=github
    :target: https://github.com/ecosoft-odoo/ecosoft-addons/tree/15.0/usability_webhooks
    :alt: ecosoft-odoo/ecosoft-addons

|badge1| |badge2| |badge3|

This module is base webhooks standard and keep all log that interface

Step to see logs:

1. Go to Settings > Technical > API Configuration > API Logs
2. this table will keep all log that interface '/api/create_data' or '/api/create_update_data'
3. Users can used this table for test API by click 'Update API'

**Table of contents**

.. contents::
   :local:

Usage
=====

Before sending a REST API request to Odoo, an initial call to authenticate the API is necessary.
You can achieve this by calling the ``/web/session/authenticate`` route.

The authentication format requires a header with ``Content-type`` set to ``application/json``,
and the body should include:

.. code-block:: python

   {
      "jsonrpc": "2.0",
      "method": "call",
      "params": {
         "db": "<db_name>",
         "login": "<username>",
         "password": "<password>"
      }
   }

Following successful authentication, you can proceed with five API routes:

1. ``/api/create_data``: This route allows the creation of new data only.
   The format for creating data should be in the following structure:

   .. code-block:: python

      {
         "params": {
            "model": "<model name>",
            "vals": {
               "payload": {
                  "field1": "value1",
                  ...
               },
               "result_field": ["field1", ...]  # optional
            }
         }
      }

2. ``/api/create_update_data``: This route facilitates updating data.
   If the data does not exist, it will automatically create it.
   The format follows that of ``create_data``, but it requires a unique key in the field to update the values.

   .. code-block:: python

      {
         "params": {
            "model": "<model name>",
            "vals": {
               "search_key": {
                  "<key_field>": "value",  # can be ID or name search string
               },
               "payload": {
                  "field1": "value1",
                  ...
               },
               "result_field": ["field1", ...]  # optional
            }
         }
      }

3. ``/api/update_data``: This route allows updating existing data,
   using a unique key in the field to find the desired data and update values in that recordset.

   .. code-block:: python

      {
         "params": {
            "model": "<model name>",
            "vals": {
               "search_key": {
                  "<key_field>": "value",  # can be ID or name search string
               },
               "payload": {
                  "field1": "value1",
                  ...
               }
            }
         }
      }

4. ``/api/search_data``: This route allows you to search for the value of a desired field in a model
   by using a search domain to find the desired recordset. You can also limit and order the resulting data.

   .. code-block:: python

      {
         "params": {
            "model": "<model name>",
            "vals": {
               "payload": {
                  "search_field": ["field1", "field2", "field3{subfield1, subfield2}", ...],
                  "search_domain": "[('field', 'operator', 'value')]",
                  "limit": 1,
                  "order": "field1 , field2 desc, ..."
               }
            }
         }
      }

5. ``/api/call_function``: This route allows you to call a function on a model object based on the provided input.

   **Parameters**:
      - **name** (*str*): The name of the model to perform the function on.
      - **method** (*str*): The name of the function to call.
      - **parameter** (*dict*): A dictionary containing the arguments to pass to the function (if any).

   .. code-block:: python

      {
         "params": {
            "model": "<model name>",
            "vals": {
               "search_key": {
                  "<key_field>": "value",  # can be ID or name search string
               },
               "payload": {
                  "method": "<method>",
                  "parameter": {"<key>": "<value>", ...}
               }
            }
         }
      }

**Note**:
If you want to attach a file to a record, you can add the key "attachment_ids" at any level of the payload.

   **Example Request with Attachment**:

   .. code-block:: python

      {
         "params": {
            "model": "<model name>",
            "vals": {
               "search_key": {
                  "<key_field>": "value",  # can be ID or name search string
               },
               "payload": {
                  "attachment_ids": [
                     {
                        "name": "<file_name>",
                        "datas": "<base64_encoded_data>"
                     }
                  ],
                  ...
               }
            }
         }
      }

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/ecosoft-odoo/ecosoft-addons/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/ecosoft-odoo/ecosoft-addons/issues/new?body=module:%20usability_webhooks%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Ecosoft

Contributors
~~~~~~~~~~~~

* Kitti Upariphutthiphong <kittiu@ecosoft.co.th>
* Saran Lim. <saranl@ecosoft.co.th>

Maintainers
~~~~~~~~~~~

This module is part of the `ecosoft-odoo/ecosoft-addons <https://github.com/ecosoft-odoo/ecosoft-addons/tree/15.0/usability_webhooks>`_ project on GitHub.

You are welcome to contribute.
