Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
27753c8
[ADD] fastapi_log
paradoxxxzero Jul 15, 2025
5a5d5d7
[REF] fastapi_log: Extract common features to `api_log`
SirPyTech Apr 15, 2025
345eb9d
[ADD] fastapi_log_mail
SirPyTech Apr 22, 2025
9d7f3c4
[FIX] fastapi_log: Manage multi-slash endpoints
SirPyTech Apr 28, 2025
5c6c8d5
[IMP] api_log: Hide sensitive headers
SirPyTech Apr 28, 2025
7d2c19f
[IMP] api_log: Add collection of logs
SirPyTech Jun 25, 2025
db5a554
[ADD] api_log_mail: Notify user about logged exceptions
SirPyTech Jun 25, 2025
a10c29c
[IMP] fastapi_log: Adapt to log collection
SirPyTech Jun 25, 2025
3d2c2a9
[IMP] fastapi_log_mail: Adapt to log collection
SirPyTech Jun 25, 2025
d25a39b
[IMP] api_log: Inject Log record identifier
SirPyTech Aug 21, 2025
a27cbdf
[IMP] fastapi_log: Use dedicated cursor for logs
SirPyTech Sep 9, 2025
121ea03
[IMP] fastapi_log_mail: Use dedicated cursor in tests
SirPyTech Sep 9, 2025
60e88f2
[IMP] fastapi_log: In tests, check Log identifier in response
SirPyTech Oct 20, 2025
af40022
[MIG] api_log
paradoxxxzero Jan 14, 2026
b00d2ae
[MIG] api_log_mail
paradoxxxzero Jan 14, 2026
8afeb3c
[MIG] fastapi_log
paradoxxxzero Jan 14, 2026
06bcc77
[MIG] fastapi_log_mail
paradoxxxzero Jan 14, 2026
d0e28d9
[UPD] Update api_log.pot
May 27, 2026
8148447
[UPD] Update api_log_mail.pot
May 27, 2026
f2409ea
[UPD] Update fastapi_log.pot
May 27, 2026
3eb5f86
[UPD] Update fastapi_log_mail.pot
May 27, 2026
d2dd4e5
[BOT] post-merge updates
OCA-git-bot May 27, 2026
56cb5c3
Added translation using Weblate (Italian)
mymage May 29, 2026
27c4913
Added translation using Weblate (Italian)
mymage May 29, 2026
fc81215
Added translation using Weblate (Italian)
mymage May 29, 2026
51b76b3
Added translation using Weblate (Italian)
mymage May 29, 2026
a1531dd
Translated using Weblate (Italian)
mymage Jun 3, 2026
52f8b96
[MIG] api_log: Migration to 19.0
TheClaud99 Jun 12, 2026
838af3b
[MIG] api_log_mail: Migration to 19.0
TheClaud99 Jun 12, 2026
e9cee47
[MIG] fastapi_log: Migration to 19.0
TheClaud99 Jun 12, 2026
ee2a120
[MIG] fastapi_log_mail: Migration to 19.0
TheClaud99 Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions api_log/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=======
API Log
=======

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

.. |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-OCA%2Frest--framework-lightgray.png?logo=github
:target: https://github.com/OCA/rest-framework/tree/19.0/api_log
:alt: OCA/rest-framework
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/rest-framework-19-0/rest-framework-19-0-api_log
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/rest-framework&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows to store request and response logs for any API.

When a response is logged, the header ``API_LOG_ENTRY_ID`` is injected
in the response header. This header stores the identifier of the log
record produced from the response.

**Table of contents**

.. contents::
:local:

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/rest-framework/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/OCA/rest-framework/issues/new?body=module:%20api_log%0Aversion:%2019.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
-------

* Akretion

Contributors
------------

- Florian Mounier florian.mounier@akretion.com
- Guewen Baconnier guewen.baconnier@camptocamp.com
- Simone Orsi simahawk@gmail.com
- `PyTech <https://www.pytech.it>`__:

- Simone Rubino <simone.rubino@pytech.it>

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-paradoxxxzero| image:: https://github.com/paradoxxxzero.png?size=40px
:target: https://github.com/paradoxxxzero
:alt: paradoxxxzero

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-paradoxxxzero|

This module is part of the `OCA/rest-framework <https://github.com/OCA/rest-framework/tree/19.0/api_log>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions api_log/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
20 changes: 20 additions & 0 deletions api_log/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2025 Akretion (http://www.akretion.com).
# @author Florian Mounier <florian.mounier@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "API Log",
"version": "19.0.1.0.0",
"author": "Akretion, Odoo Community Association (OCA)",
"license": "AGPL-3",
"summary": "Log API requests in database",
"category": "Tools",
"depends": ["web"],
"website": "https://github.com/OCA/rest-framework",
"data": [
"security/res_groups.xml",
"security/ir_model_access.xml",
"views/api_log_views.xml",
],
"maintainers": ["paradoxxxzero"],
}
241 changes: 241 additions & 0 deletions api_log/i18n/api_log.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * api_log
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: api_log
#: model:ir.actions.act_window,name:api_log.api_log_action
#: model:ir.ui.menu,name:api_log.menu_api_log
msgid "API Log"
msgstr ""

#. module: api_log
#: model:res.groups,name:api_log.group_api_log
msgid "API Log Access"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__collection_id
#: model_terms:ir.ui.view,arch_db:api_log.api_log_view_search
msgid "Collection"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__collection_model
msgid "Collection Model"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__collection_ref
msgid "Collection Ref"
msgstr ""

#. module: api_log
#: model:ir.model,name:api_log.model_api_log_collection_mixin
msgid "Collection of API logs"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__create_uid
msgid "Created by"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__create_date
msgid "Created on"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__display_name
msgid "Display Name"
msgstr ""

#. module: api_log
#: model_terms:ir.ui.view,arch_db:api_log.api_log_view_search
msgid "Error"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__id
msgid "ID"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__write_uid
msgid "Last Updated by"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__write_date
msgid "Last Updated on"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log_collection_mixin__log_requests
msgid "Log Requests"
msgstr ""

#. module: api_log
#: model:ir.model,name:api_log.model_api_log
msgid "Log for API"
msgstr ""

#. module: api_log
#: model:ir.model.fields,help:api_log.field_api_log_collection_mixin__log_requests
msgid "Log requests in database."
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log_collection_mixin__log_ids
msgid "Logs"
msgstr ""

#. module: api_log
#: model_terms:ir.ui.view,arch_db:api_log.api_log_view_search
msgid "Method"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__name
msgid "Name"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__referrer
msgid "Referrer"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_body
msgid "Request Body"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_b64
msgid "Request Content"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_content_length
msgid "Request Content Length"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_content_type
msgid "Request Content Type"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_date
msgid "Request Date"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_headers
msgid "Request Headers"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_headers_preview
msgid "Request Headers Preview"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_method
msgid "Request Method"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_preview
msgid "Request Preview"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_time
msgid "Request Time"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_url
msgid "Request Url"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_body
msgid "Response Body"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_b64
msgid "Response Content"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_content_length
msgid "Response Content Length"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_content_type
msgid "Response Content Type"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_date
msgid "Response Date"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_headers
msgid "Response Headers"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_headers_preview
msgid "Response Headers Preview"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_preview
msgid "Response Preview"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_status_code
msgid "Response Status Code"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_time
msgid "Response Time"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__stack_trace
msgid "Stack Trace"
msgstr ""

#. module: api_log
#: model_terms:ir.ui.view,arch_db:api_log.api_log_view_search
msgid "Success"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__time
msgid "Time"
msgstr ""

#. module: api_log
#: model_terms:ir.ui.view,arch_db:api_log.api_log_view_search
msgid "Url"
msgstr ""
Loading
Loading