<commit_before>.. explicit references must be used in this file (not references.rst) to ensure they are directly rendered on Github
.. :changelog:

Changes
*******

`Unreleased <https://github.com/Ouranosinc/Magpie/tree/master>`_ (latest)
------------------------------------------------------------------------------------

* Nothing new for the moment.

`3.20.1 <https://github.com/Ouranosinc/Magpie/tree/3.20.1>`_ (2022-01-19)
------------------------------------------------------------------------------------

Bug Fixes
~~~~~~~~~~~~~~~~~~~~~
* Fix `Twitcher` ``/verify`` endpoint integrated through ``MagpieAdapter`` to validate synchronized authentication
  policies across both services. The endpoint now supports query parameter credentials to facilitate call directly
  within a web browser (not assuming JSON contents) and properly parses cookies from both policies to report more
  detailed error messages in case of failure.
* Fix ``error`` and ``type`` representation when handling raised exception by ``evaluate_call`` utility function.

`3.20.0 <https://github.com/Ouranosinc/Magpie/tree/3.20.0>`_ (2022-01-06)
------------------------------------------------------------------------------------

Features / Changes
~~~~~~~~~~~~~~~~~~~~~
* Add missing ``ServiceWFS`` permissions according to `OGC WFS standard <https://www.ogc.org/standards/wfs>`_.
* Add missing ``DescribeLayer`` permission to ``ServiceGeoserverWMS`` according
  to `GeoServer WMS implementation <https://docs.geoserver.org/latest/en/user/services/wms/reference.html>`_.
* Add support of specific hierarchy of ``Resource`` type ``Layer`` nested under ``Workspace``
  for ``ServiceGeoserverWMS``.
* Add support of ``Resource`` type ``Layer`` under ``ServiceWFS``.
* Allow ``Resource`` and ``Service`` name to contain colon (``:``) character in order to define scoped names
  as it is often the case for ``Layer`` names.
* Add ``child_structure_allowed`` attribute to ``Service`` implementations allowing them to define specific
  structures of allowed ``Resource`` types hierarchies in order to control which combinations of nested ``Resource``
  types are valid under their root ``Service``. When not defined under a ``Service`` implementation, any defined
  ``Resource`` type will remain available for creation at any level of the hierarchy, unless the corresponding
  ``Resource`` in the tree already defined ``child_resource_allowed = False``. This was already the original behaviour
  in previous versions.
* Add ``GET /resources/{id}/types`` endpoint that allows retrieval of applicable children ``Resource`` types under
  a given ``Resource`` considering the nested hierarchy definition of its root ``Service`` defined by the new
  attribute ``child_structure_allowed``.
* Add ``child_structure_allowed`` attribute to the response of ``GET /service/{name}`` endpoint.
  For backward compatibility, ``resource_types_allowed`` parameter already available in the same response will continue
  to report all possible ``Resource`` types *at any level* under the ``Service`` hierarchy, although not necessarily
  applicable as immediate child ``Resource`` under that ``Service``.
* Add ``configurable`` attribute to ``Service`` types that supports custom definitions modifying their behaviour.
* Add ``service_configurable`` to response of ``GET /service/{name}`` endpoint.
* Adjust UI to consider ``child_structure_allowed`` definitions to propose only applicable ``Resource`` types in the
  combobox when creating a new ``Resource`` in the tree hierarchy.
* Add UI submission field to provide ``Service`` JSON configuration at creation when supported by the type.

Bug Fixes
~~~~~~~~~~~~~~~~~~~~~
* Remove invalid ``params_expected`` parameter from ``Service`` implementations (``ServiceAccess``, ``ServiceAPI``,
  ``ServiceTHREDDS``) that don't make use of it since they don't derive from ``ServiceOWS``.
* Fix base ``Permission`` definitions for all variants of `WMS` according to their reference implementations.
* Remove multiple invalid schema path definitions that are not mapped against any concrete API endpoint.
* Fix reporting of ``Service`` configuration for any type that supports it. Unless overridden during creation with a
  custom configuration, ``ServiceTHREDDS`` instances would not report their default ``configuration`` field and would
  instead return ``null``, making it difficult to know from the API if default or no configuration was being applied
  for a given ``Service``.
* Fix `Effective Resolution` of ``Permission`` applied for ``ServiceGeoserverWMS`` to consider ``Scope`` modifier
  of ``Service`` and ``Workspace`` for access to be resolved at the ``Layer`` level.

`3.20.0 <https://github.com/Ouranosinc/Magpie/tree/3.20.0>`_ (2022-01-06)
------------------------------------------------------------------------------------

Features / Changes
~~~~~~~~~~~~~~~~~~~~~
* Add improved UI display of long ``Permission`` titles for ``Resource`` hierarchy tree headers.<commit_msg>adjust changelog<commit_after>.. explicit references must be used in this file (not references.rst) to ensure they are directly rendered on Github
.. :changelog:

Changes
*******

`Unreleased <https://github.com/Ouranosinc/Magpie/tree/master>`_ (latest)
------------------------------------------------------------------------------------

Features / Changes
~~~~~~~~~~~~~~~~~~~~~
* Add missing ``ServiceWFS`` permissions according to `OGC WFS standard <https://www.ogc.org/standards/wfs>`_.
* Add missing ``DescribeLayer`` permission to ``ServiceGeoserverWMS`` according
  to `GeoServer WMS implementation <https://docs.geoserver.org/latest/en/user/services/wms/reference.html>`_.
* Add support of specific hierarchy of ``Resource`` type ``Layer`` nested under ``Workspace``
  for ``ServiceGeoserverWMS``.
* Add support of ``Resource`` type ``Layer`` under ``ServiceWFS``.
* Allow ``Resource`` and ``Service`` name to contain colon (``:``) character in order to define scoped names
  as it is often the case for ``Layer`` names.
* Add ``child_structure_allowed`` attribute to ``Service`` implementations allowing them to define specific
  structures of allowed ``Resource`` types hierarchies in order to control which combinations of nested ``Resource``
  types are valid under their root ``Service``. When not defined under a ``Service`` implementation, any defined
  ``Resource`` type will remain available for creation at any level of the hierarchy, unless the corresponding
  ``Resource`` in the tree already defined ``child_resource_allowed = False``. This was already the original behaviour
  in previous versions.
* Add ``GET /resources/{id}/types`` endpoint that allows retrieval of applicable children ``Resource`` types under
  a given ``Resource`` considering the nested hierarchy definition of its root ``Service`` defined by the new
  attribute ``child_structure_allowed``.
* Add ``child_structure_allowed`` attribute to the response of ``GET /service/{name}`` endpoint.
  For backward compatibility, ``resource_types_allowed`` parameter already available in the same response will continue
  to report all possible ``Resource`` types *at any level* under the ``Service`` hierarchy, although not necessarily
  applicable as immediate child ``Resource`` under that ``Service``.
* Add ``configurable`` attribute to ``Service`` types that supports custom definitions modifying their behaviour.
* Add ``service_configurable`` to response of ``GET /service/{name}`` endpoint.
* Adjust UI to consider ``child_structure_allowed`` definitions to propose only applicable ``Resource`` types in the
  combobox when creating a new ``Resource`` in the tree hierarchy.
* Add UI submission field to provide ``Service`` JSON configuration at creation when supported by the type.

Bug Fixes
~~~~~~~~~~~~~~~~~~~~~
* Remove invalid ``params_expected`` parameter from ``Service`` implementations (``ServiceAccess``, ``ServiceAPI``,
  ``ServiceTHREDDS``) that don't make use of it since they don't derive from ``ServiceOWS``.
* Fix base ``Permission`` definitions for all variants of `WMS` according to their reference implementations.
* Remove multiple invalid schema path definitions that are not mapped against any concrete API endpoint.
* Fix reporting of ``Service`` configuration for any type that supports it. Unless overridden during creation with a
  custom configuration, ``ServiceTHREDDS`` instances would not report their default ``configuration`` field and would
  instead return ``null``, making it difficult to know from the API if default or no configuration was being applied
  for a given ``Service``.
* Fix `Effective Resolution` of ``Permission`` applied for ``ServiceGeoserverWMS`` to consider ``Scope`` modifier
  of ``Service`` and ``Workspace`` for access to be resolved at the ``Layer`` level.

`3.20.1 <https://github.com/Ouranosinc/Magpie/tree/3.20.1>`_ (2022-01-19)
------------------------------------------------------------------------------------

Bug Fixes
~~~~~~~~~~~~~~~~~~~~~
* Fix `Twitcher` ``/verify`` endpoint integrated through ``MagpieAdapter`` to validate synchronized authentication
  policies across both services. The endpoint now supports query parameter credentials to facilitate call directly
  within a web browser (not assuming JSON contents) and properly parses cookies from both policies to report more
  detailed error messages in case of failure.
* Fix ``error`` and ``type`` representation when handling raised exception by ``evaluate_call`` utility function.

`3.20.0 <https://github.com/Ouranosinc/Magpie/tree/3.20.0>`_ (2022-01-06)
------------------------------------------------------------------------------------

Features / Changes
~~~~~~~~~~~~~~~~~~~~~
* Add improved UI display of long ``Permission`` titles for ``Resource`` hierarchy tree headers.
{'fraction_non_alphanumeric': 0.17302591307896348, 'fraction_numerical': 0.008161599673536014, 'mean_word_length': 3.8625992063492065, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 14, 'https://': 11, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1484938', 'n_tokens_mistral': 2310, 'n_tokens_neox': 2232, 'n_words': 1060}