[](https://github.com/plone/plone.restapi/actions/workflows/tests.yml)
[](https://coveralls.io/github/plone/plone.restapi?branch=main)
[](https://plonerestapi.readthedocs.io/en/latest/)
[](https://pypi.org/project/plone.restapi/)
# Introduction
`plone.restapi` is a RESTful hypermedia API for Plone.
# Documentation
<https://plonerestapi.readthedocs.io/en/latest/>
# Getting started
A live demo of Plone 6 with the latest `plone.restapi` release is
available at:
<https://demo.plone.org/>
An example GET request on the portal root is the following.
```shell
curl -i https://demo.plone.org/++api++ -H "Accept: application/json"
```
An example POST request to create a new document is the following.
```shell
curl -i -X POST https://demo.plone.org/++api++ \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
--data-raw '{"@type": "Document", "title": "My Document"}' \
--user admin:admin
```
> [!NOTE]
> You will need some kind of API browser application to explore the API.
> You will also need to first obtain a basic authorization token.
> We recommend using [Postman](https://www.postman.com/) which makes it
> easier to obtain a basic authorization token.
# Installation
`plone.restapi` is included in Plone 6 if you install the `Plone` package.
If it is not installed, add it using requirements.txt or as a dependency of another package.
# Python / Plone Compatibility
plone.restapi 9 requires Python 3 and works with Plone 5.2 and Plone
6.x.
plone.restapi 8 entered "maintenance" mode with the release of
plone.restapi 9 (September 2023). It is not planned to backport any
features to this version and we highly recommend to upgrade to
plone.restapi 9.
Python versions that reached their
[end-of-life](https://devguide.python.org/versions/), including Python
3.6 and Python 3.7, are not supported any longer.
Use plone.restapi 7 if you are running Python 2.7 or Plone versions
below 5.2.
# Contribute
- Issue Tracker: <https://github.com/plone/plone.restapi/issues>
- Source Code: <https://github.com/plone/plone.restapi>
- Documentation: <https://plonerestapi.readthedocs.io/en/latest>
# Examples
`plone.restapi` has been used in production since its first alpha
release. It can be seen in action at the following sites:
- Zeelandia GmbH & Co. KG: <https://www.zeelandia.de> (by kitconcept
GmbH)
- VHS-Ehrenamtsportal: <https://vhs-ehrenamtsportal.de> (by kitconcept
GmbH)
- German Physical Society: <https://www.dpg-physik.de> (by kitconcept
GmbH)
# Support
If you are having issues, please let us know via the [issue
tracker](https://github.com/plone/plone.restapi/issues).
If you require professional support, here is a list of Plone solution
providers that contributed significantly to `plone.restapi` in the past.
- [kitconcept GmbH](https://kitconcept.com) (Germany)
- [4teamwork](https://www.4teamwork.ch/en) (Switzerland)
- [CodeSyntax](https://www.codesyntax.com/en) (Spain)
# License
The project is licensed under the GPLv2.
# Contributors
<!--
Note:
Place names and roles of the people who contribute to this package in
this file, one to a line, like so:
-->
- Timo Stollenwerk, Original Author
- Thomas Buchberger
- Lukas Graf
- Víctor Fernández de Alba
- Paul Roeland
- Mikel Larreategi
- Eric Brehault
- Andreas Zeidler
- Carsten Senger
- Tom Gross
- Roel Bruggink
- Yann Fouillat, alias Gagaro
- Sune Brøndum Wøller
- Philippe Gross
- Andrea Cecchi
- Luca Bellenghi
- Giacomo Monari
- Alin Voinea
- Rodrigo Ferreira de Souza
- Jens W. Klein
- Maurits van Rees
- Gil Forcada Codinachs
- David Glick
- Philip Bauer
- Tiberiu Ichim
- Érico Andrei
- Jonas Baumann
- Cédric Messiant
- Héctor Velarde
- Johannes Raggam
- Simone Deponti
- Wesley Barroso Lopes
- Elio Schmutz
- Gauthier Bastien
- Katja Süss
- Jon Pentland
- Leonardo J. Caballero G.
- Steve Piercy
# Changelog
<!--
You should *NOT* be adding new change log entries to this file.
You should create a file in the news directory instead.
For helpful instructions, please see:
https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst
-->
<!-- towncrier release notes start -->
## 9.15.2 (2025-08-22)
### Bug fixes:
- Serialize the `layout` of a Plone Site if it is a Plone 6 site. @erral #1939
- When deserializing datetimes into an empty field, store them as timezone-aware datetimes. @davisagli
## 9.15.1 (2025-06-16)
### Bug fixes:
- Optimize `@navroot` endpoint: fields `items` and `@components` are no longer computed/returned. @pgrunewald #1841
- In the `@search` service, fix an `AttributeError` that could occur with bad input. @davisagli #1898
- In the `@controlpanels` service, removed empty `data` and `schema` from special control panels that do not use a schema (`dexterity-types` and `rules`). @davisagli #1927
## 9.15.0 (2025-06-10)
### New features:
- Include all summary fields when serializing `next_item` and `previous_item`. @davisagli
### Bug fixes:
- In the `RelationListFieldSerializer`, fix `list` used a default argument. @ale-rt #1922
### Documentation:
- Fix contributor documentation. @davisagli
## 9.14.0 (2025-05-12)
### New features:
- `@site` service: Add a way for add-ons to add additional data using an `ISiteEndpointExpander` adapter. @davisagli #1921
## 9.13.5 (2025-04-27)
### Bug fixes:
- Fix exposing protected fields in schema serializer.
[maethu] #1916
- Fix `AttributeError` when updating the default blocks layout for a content type. @nileshgulia, @davisagli #1917
### Documentation:
- Pin plone-sphinx-theme to prepare for PLIP 4097. See https://github.com/plone/Products.CMFPlone/issues/4097. @stevepiercy #4097
## 9.13.4 (2025-04-23)
### Bug fixes:
- Micro-optimization for validation in vocabulary serializer. @davisagli #1906
- In the teaser block serializer, don't include data from the target item if the current user doesn't have View permission on it. @davisagli #1911
- Avoid finding control panel adapters when looking up normal views. @rohnsha0, @davisagli #4156
### Internal:
- Add tests for inherit service. @ujsquared #1897
## 9.13.3 (2025-03-25)
### Bug fixes:
- In the `@inherit` endpoint, don't nest results under `inherit` unless it is used as an expander. @davisagli #1899
## 9.13.2 (2025-03-17)
### Bug fixes:
- Fix deserializing datetime fields when timezone naive values are stored. @petschki #1891
- Fix imports from packaging.version. @davisagli #1893
- Fix `@inherit` service to serialize data with the correct context. @davisagli #1895
## 9.13.1 (2025-03-14)
### Bug fixes:
- Fix wheel compatibility with older versions of setuptools and buildout. @davisagli #1890
## 9.13.0 (2025-03-13)
### New features:
- Apply block serialization and deserialization transforms also to JSON fields.
This includes converting internal URLs to resolveuid URLs. @davisagli #1886
- Add a new endpoint, `@inherit`, for getting values from behaviors inherited from ancestors in the object hierarchy. @davisagli #1887
### Bug fixes:
- In the `@users` add endpoint, ignore the `sendPasswordReset` parameter if self registration is enabled. @MrTango #1888
### Internal:
- Restore configuration of Vale, and upgrade to its latest version. @stevepiercy #1885
## 9.12.0 (2025-03-10)
### New features:
- Add a `@userschema/registration` endpoint to get the fields for the registration form. @erral #1873
- Added `multilingual` feature to @site endpoint. @sneridagh #1884
### Bug fixes:
- Save effective and expires date into Plone with right hours (according to current timezone) @cekk #1192
- Correct the HTTP response status code to `200 OK` from `201 Create` for the `aliases` GET service. @Faakhir30 #1862
- Do not hardcode `show_inactive` in search; let `Products.CMFPlone` handle that. @gyst #1879
- Replace `pkg_resources` with `importlib.metadata`/`importlib.resources`/`packaging` @gforcada #4126
### Internal:
- Update configuration files @plone
## 9.11.0 (2025-01-31)
New features:
- Support working copies of the Plone Site. This feature is available
when using `plone.app.iterate` 6.1.0 or later. @wesleybl (#1823)
## 9.10.0 (2025-01-27)
New features:
- Add a `@login` endpoint to get external login services' links.
@erral (#1757)
- In the `@registry` endpoint, added support for filtering the list of
registry records. @Faakhir30 (#1861)
Bug fixes:
- Changed bad int inputs into 500 Exceptions to 400 BadRequest so they
can be filtered out of logs more easily. @djay (#1855)
- Handle TypeError on querystringsearch as BadRequest. @djay (#1857)
- Add parse_int to handle all cases of BadRequests from ints passed
in. @djay (#1858)
- In the `@contextnavigation` endpoint, return `"icon": null` for
Files with a mimetype not found in the `content_type_registry`,
instead of raising `TypeError`. @mamico (#1864)
- In the `@locking` endpoint, fixed edge cases where the user who owns
the lock was not found correctly. @mamico (#1867)
- Prevent deprecation warnings. @mauritsvanrees (#4090)
Internal:
- Update CI. @davisagli (#1685)
## 9.9.0 (2024-12-18)
New features:
- When a Link content item is linked by UID, resolve its URL as the
linked target URL for anonymous users. @cekk (#1847)
Bug fixes:
- Fix resolving paths in deserializer if the target was moved in the
same request. @cekk (#1848)
- Make slate block linkintegrity checking more robust in case data
isn't in the expected format. @cekk (#1849)
- Optimized performance of DexterityObjectPrimaryFieldTarget adapter.
@maurits (#1851)
Internal:
- Fix time-dependence of tests. @davisagli (#1850)
## 9.8.5 (2024-11-25)
Bug fixes:
- Fix log in after changing email when "email as login" is enabled
@erral (#1835)
- Fix tests after #1839 and plone.app.event#411 @erral (#1844)
- Do not change request during relation fields serialization @cekk
(#1845)
Internal:
- Test that recurrence serialization provides correct data @erral
(#1809)
- Additional tests to login name changes @erral (#1840)
Documentation:
- `html_use_opensearch` value must not have a trailing slash. Clean up
comments. @stevepiercy (#1846)
## 9.8.4 (2024-11-05)
Bug fixes:
- URL Management control panel: Fix error handling in CSV upload.
@davisagli (#1837)
## 9.8.3 (2024-11-01)
Bug fixes:
- Fixed Plone Site serialization when there is a field with
read_permission set. @ericof (#1830)
## 9.8.2 (2024-10-30)
Bug fixes:
- `@search` service: Remove parentheses from search query. @tedw87
(#1828)
## 9.8.1 (2024-10-23)
Bug fixes:
- Fix `ComponentLookupError` for
`Products.CMFPlone.ManagePortalAliases` permission, which could
happen depending on package load order. @davisagli (#1827)
## 9.8.0 (2024-10-23)
New features:
- Added create and fetch aliases in CSV format. @Faakhir30 (#1812)
- Site service: Indicate whether the site supports filtering URL
aliases by date. @davisagli (#1826)
Bug fixes:
- Fix error getting allow_discussion value when p.a.discussion is not
activated. @maurits (#1808)
- Fix incorrect condition for `show_excluded_items` setting in the
`@navigation` API. @mamico (#1816)
- Fix response of `RelationListFieldSerializer` by filtering out
invalid items. @Faakhir30 (#1818)
- Aliases endpoint: Use "Manage Portal Aliases" and "Manage Content
Aliases" permissions. @jackahl (#1820)
Documentation:
- Use Plone Sphinx Theme for documentation. Build docs when there are
changes to http-examples. @stevepiercy (#1815)
- Fixed spelling of prerequisites. @stevepiercy (#1822)
## 9.7.2 (2024-09-05)
Bug fixes:
- Fixed Dexterity content serializer: Return an empty object for
`next_item` and `previous_item` unless the parent has next/previous
support enabled. @JeffersonBledsoe, @davisagli (#1799)
- Fixed implementation of the `jwt_auth` plugin. It now can be added,
and its properties, `use_keyring` and `store_tokens`, can be
updated. @sauzher (#1802)
Internal:
- Explicitly globally disable comments in the tests that need it.
@maurits (#244)
Documentation:
- Update contributing docs for Plone 6, and switch from Netlify to
Read the Docs for pull request previews. @stevepiercy (#1798)
## 9.7.1 (2024-06-29)
Bug fixes:
- Remove use of `portal_properties` in context navigation.
Theoretically we checked
`portal_properties.site_properties.sortAttribute`. @maurits
(#125)
Internal:
- Update test-no-uncommitted-doc-changes to run on Python 3.12 instead
of 3.9. @tisto, @davisagli (#1794)
## 9.7.0 (2024-06-15)
New features:
- Add cache rules for `@site` and `@navroot`. @mamico (#1779)
- Added TeaserBlockSerializer which updates the contents of a teaser
block from its target if the block has `"overwrite":
false`. @pbauer, @davisagli (#1788)
Bug fixes:
- Returns an error message when an Invalid error occurs when
validating a controlpanel field. Also translates the message.
@wesleybl (#1771)
- Users service: Fixed edge case AttributeError if a user is
enumerated but doesn't actually exist. @davisagli (#1775)
- Add Plone 6.1 support to classifiers and test against it. @tisto
(#1780)
- Make plone.app.discussion an optional dependency (core add-on).
@jensens (#1781)
- Fix require plone.app.iterate on test extras. @jensens (#1782)
- Fix require plone.app.upgrade on test extras. @jensens (#1783)
Documentation:
- Fix event start & end timezone in documentation examples.
@davisagli (#1776)
- Move sharing endpoint docs to the correct section. @davisagli
(#1778)
## 9.6.1 (2024-04-25)
Bug fixes:
- Fixed password reset issue by replacing `username` with
`target_user` to correctly authenticate using email. @Hrittik20
(#943)
- In Plone 6, uses `plone.textindexer` to add block texts to the
SearchableText index, instead of `plone.indexer`. This ensures that
behaviors can add fields to SearchableText with `plone.textindexer`.
@wesleybl (#1744)
- Use the `mode` parameter instead of `direction` when calling the
`scale` method. Also change value to `scale`. @wesleybl (#1758)
- image_scales in serializer are returned as json_compatible format.
@cekk (#1772)
Internal:
- Test to ensure that the scale hash of an image is the same as the
hash of the image block with this image. @sneridagh (#1716)
- Bump all the versions in GitHub workflows. @stevepiercy (#1762)
## 9.6.0 (2024-03-03)
New features:
- Add available languages information to the @site endpoint. @erral
(#1738)
- Add the site timezone to the @site endpoint return result.
@folix-01 (#1749)
Internal:
- Use last version of Python 3.12 in tests.
<https://github.com/python/cpython/issues/113267> has been fixed.
@wesleybl (#1740)
## 9.5.0 (2024-02-27)
Bug fixes:
- Fixed the permission check for adding users to groups and removing
users from groups, so that it is allowed for users with the Site
Administrator role. @wesleybl (#1750)
- Enhanced Makefile paths to address whitespace compatibility issues.
@Vivek-04022001 (#1753)
## 9.4.2 (2024-02-16)
Bug fixes:
- Fixed `allow_discussion` serialization for the Plone Site, to return
a boolean like other content types. @Akshat2Jain (#1674)
- Fixed an edge case in the blocks resolveuid transforms with a
trailing slash before a fragment. @sneridagh (#1748)
Internal:
- Remove debug-exceptions = on from the buildout instance section.
@wesleybl (#1734)
## 9.4.1 (2024-02-02)
Bug fixes:
- Fixed the logic for converting public URLs to and from internal
UID-based URLs. Now if the URL includes a fragment, it is preserved.
@sneridagh (#1746)
## 9.4.0 (2024-01-26)
New features:
- Translate validation error messages in the deserializer. @wesleybl
(#1742)
## 9.3.0 (2024-01-10)
New features:
- Give Site Administrator permission to manage users. To make this
possible, we now check the "plone.app.controlpanel.UsersAndGroups"
permission instead of "cmf.ManagePortal" in a lot of operations in
the users and groups endpoints. @wesleybl (#1712)
Internal:
- Use Python 3.12.0 in tests to work around
<https://github.com/python/cpython/issues/113267>. @wesleybl
(#1740)
## 9.2.1 (2023-12-14)
Bug fixes:
- Remove wrong `preview_image_link` addition from blocks
(de)serializers. @sneridagh (#1737)
## 9.2.0 (2023-11-23)
New features:
- Added preview_image and preview_image_link to the list of smart
fields for resolveuid and link integrity. @sneridagh (#1735)
Internal:
- Does not test Python 3.7. @wesleybl (#1732)
- Use plone.recipe.precompiler to generate mo files to test.
@wesleybl (#1733)
## 9.1.2 (2023-11-04)
Bug fixes:
- Fix jwt_auth extractCredentials plugin to only try to read
credentials from the request body if there is a `Content-Type:
application/json` header. @davisagli (#1728)
- Temporarily disable form memory limit checking for files and images.
This fixes a regression due to a low Zope form memory limit of 1MB
used since Plone 6.0.7. See [CMFPlone issue
3848](https://github.com/plone/Products.CMFPlone/issues/3848) and
@Zope PR 1142(https://github.com/zopefoundation/Zope/pull/1142).
@maurits (#3848)
Documentation:
- Remove regular expression from `sphinx-copybutton` configuration,
now that `linenos` are excluded by default. @stevepiercy (#1725)
## 9.1.1 (2023-10-28)
Bug fixes:
- Be more strict when checking if mimetype is allowed to be displayed
inline. @maurits (#1167)
## 9.1.0 (2023-10-18)
New features:
- Add support for Python 3.12. @tisto (#1722)
Bug fixes:
- Treat sub-items like items in `@linkintegrity` endpoint. @jaroel
(#1714)
- Limits the use of multilingual services only if multilingual is
actually installed. @mamico (#1723)
Internal:
- Remove unused code. @davisagli (#1703)
- Replace deprecated assert methods. @gforcada (#1719)
- Drop, already unused plone.app.robotframework test. @gforcada
(#1720)
Documentation:
- Fix redirect for <https://json-schema.org/>. @stevepiercy (#1718)
## 9.0.0 (2023-09-23)
Breaking changes:
- Remove deprecated @unlock, @refresh-lock endpoints @avoinea
(#1235)
- Remove `plone.tiles` and the `@tiles` endpoint. @tisto (#1308)
- Change the @linkintegrity endpoint to add `items_total`, the number
of contained items which would be deleted. @davisagli, @danalvrz,
@pgrunewald (#1636)
- The default branch was renamed from `master` to `main`. @tisto,
@davisagli (#1695)
- Drop support for Python 3.7. Set python_requires to >= 3.8 @tisto
(#1709)
New features:
- Add Spanish translation @macagua (#1684)
- Add support for getting the `/@querystring` endpoint in a specific
context. @davisagli (#1704)
Bug fixes:
- Fix stored XSS (Cross Site Scripting) for SVG image in user
portrait. Done by forcing a download instead of displaying inline.
Normal accessing via an image tag is not affected and is safe. See
[security
advisory](https://github.com/plone/plone.restapi/security/advisories/GHSA-hc5c-r8m5-2gfh).
@maurits (#1)
- Use incoming request to produce location for `@tus-upload`.
@instification (#1570)
- Undeprecate comma separated expansion parameters (that were
deprecated in plone.restapi 8) @tisto (#1696)
- Undeprecate token parameter from vocabularies endpoint @tisto
(#1697)
- Improve RESOLVEUID_RE regexp to catch also paths generated by Link
content-types. @cekk (#1699)
Internal:
- Upgrade buildout: Plone 6.0.6 -> 6.0.7 and Plone 5.2.12 -> 5.2.14
@tisto (#1706)
Documentation:
- Added translation code through expansion. @Akshat2Jain (#1374)
- Restores formatting and fixes some MyST syntax from #1689.
@stevepiercy (#1691)
- Documentation fixes for #1599. @stevepiercy (#1692)
- Fix linkcheckbroken 301 redirect to <https://www.4teamwork.ch/en>.
@stevepiercy (#1693)
- Polish docs for v9 release. @stevepiercy (#1698)
## 8.43.0 (2023-08-23)
New features:
- Allow passing additional parameters to the delete users endpoint to
request not to delete local roles and memberareas @erral (#1598)
## 8.42.1 (2023-08-23)
Bug fixes:
- Fix broken relations info. @ksuess (#1673)
Internal:
- Fix test cleanup. @davisagli (#1680)
Documentation:
- Move expansion docs from endpoints to usage, and add a list of all
expandable components. Fixes #1677. @stevepiercy (#1678)
## 8.42.0 (2023-07-17)
New features:
- When serializing blocks, `image_scales` is now added to blocks that
contain a resolveuid-based `url`. When deserializing blocks,
`image_scales` is removed. @davisagli (#1642)
Bug fixes:
- Remove the hard code dependency by plone.app.multilingual, use it
conditionally instead @@folix-01 (#1639)
- Fix timezone of dates for revisions in the `@history` service.
@davisagli (#1647)
- Fix types expander in root for Plone 5.2 (for non-Dexterity Plone
Site Root) @sneridagh (#1669)
Internal:
- Updated package installation to use constraints.txt for black
package, ensuring compatibility and consistent versions.
@Akshat2Jain (#1671)
- Update Makefile and buildout to use Plone 6.0.6. @davisagli (#1672)
Documentation:
- added instruction to ensure consistent code formatting.
@Akshat2Jain (#1664)
## 8.41.0 (2023-06-29)
New features:
- Add `visit_blocks` util for finding all nested blocks. @davisagli
(#1648)
Bug fixes:
- Fix path2uid method, to handle suffix with non-traversable objects.
@cekk @mamico (#1649)
Internal:
- Allow GHA tests to run on PRs from forks. @Akshat2Jain (#1656)
Documentation:
- Fix html_meta tags, and remove stray spaces that prevented the
glossary from rendering. @stevepiercy (#1663)
## 8.40.0 (2023-06-06)
New features:
- Added `@site` and `@navroot` endpoints. @erral (#1464)
Bug fixes:
- Validate input to the `@querystring-search` service. Input which
can't be processed now results in a 400 response instead of 500.
@davisagli (#1653)
## 8.39.2 (2023-06-01)
Bug fixes:
- Fix content serializer with an old version of an item that was
renamed. @davisagli (#1651)
## 8.39.1 (2023-05-30)
Bug fixes:
- Fix possible startup error by explicitly loading
`plone.app.contentrules` zcml. Also: only load code related to
contentrules when this package is available. @maurits (#1644)
## 8.39.0 (2023-05-23)
New features:
- Create relations service. Query, add, delete. @ksuess (#1432)
## 8.38.0 (2023-05-19)
New features:
- Add portal_type title (`type_title`) to content response @razvanMiu
@nileshgulia1 (#1355)
- Added support for nested schemas with resolveuid deserializer
@JeffersonBledsoe (#1595)
Bug fixes:
- Fix missing metadata_fields in Response via GET Request to Endpoint
/@querystring-search @1letter (#1628)
- Respect Password Policy @tschorr (#1630)
Internal:
- Update buildout and requirements to Plone-6.0.4 @1letter (#1632)
## 8.37.0 (2023-04-19)
New features:
- Apply a cache ruleset to the /@querystring-search endpoint.
@ericof (#1626)
## 8.36.1 (2023-04-17)
Bug fixes:
- Fix bugs in handling parameters when the `@querystringsearch`
endpoint is called with the GET method. @davisagli (#1621)
## 8.36.0 (2023-04-07)
New features:
- Add UID to relationvalue_converter summary. @ksuess (#1605)
- Add querystring_search get method. @robgietema (#1616)
Bug fixes:
- Fix a bunch of deprecation warnings in a Plone 5.2 compatible way.
Applied proper isort. Fixed unclosed file issues in a test. Added
Python 3.11 to test matrix. @jensens (#1606)
- No longer declare support for Python 3.6 (it was already not
tested). @davisagli (#1615)
- Fixed encoding issue on Python 3 for some mail servers. This could
result in missing characters in an email body. @maurits (#3754)
## 8.35.3 (2023-03-23)
Bug fixes:
- Fix UnboundLocalError in RelationChoice deserializer. @davisagli
(#1600)
Internal:
- Fixed tests in combination with newer `plone.app.z3cform`.
@maurits (#162)
Documentation:
- Update intersphinx_mapping for training @ksuess (#1596)
## 8.35.2 (2023-03-10)
Bug fixes:
- Fix missing `Decimal` field deserializer. @jensens (#903)
- Fix translation of the error message for a password that is too
short while adding a user. @davisagli (#4395)
## 8.35.1 (2023-03-02)
Bug fixes:
- Provide slateTable block serializer/deserializer to properly convert
URLs to uids (#1590)
## 8.35.0 (2023-02-18)
New features:
- Request of own user data provides joined groups @ksuess (#1581)
- Implement IPurgePaths for RestAPI traversal (++api++) @ericof
(#1587)
## 8.34.0 (2023-02-06)
New features:
- Implement IRuleAction and IRuleCondition schema serialization in
`@controlpanels/content-rules/` endpoint. @ericof (#1579)
Bug fixes:
- Fix Plone Site serialization not returning the review_state in
Plone 6. @ericof (#1574)
- Fix bug with registry service that would not support tuple records.
@ericof (#1575)
## 8.33.3 (2023-01-29)
Bug fixes:
- Fix bug where the `@login` endpoint did not set the correct `__ac`
cookie for Zope users. @davisagli (#1572)
## 8.33.2 (2023-01-19)
Bug fixes:
- Fix context navigation endpoint @contextnavigation to serve the
navigation tree based on depth (bottomLevel). @andreiggr (#1562)
- Fix tests for `zope.schema >= 7.0.0` @petschki
(#1567)
## 8.33.1 (2023-01-10)
Bug fixes:
- Fix blocks linkintegrity to find some links in `url` and `href`
fields that were previously ignored. @davisagli (#1565)
Documentation:
- Pin Sphinx<5,>=3 due to sphinx-book-theme 0.3.3 requirement.
@stevepiercy (#1563)
## 8.33.0 (2022-12-29)
New features:
- Internationalization of `@users` endpoint error messages.
@wesleybl (#1548)
- Add pt_BR translation. @wesleybl (#1557)
- Add fr translation. @jimbiscuit (#1560)
Bug fixes:
- Fix mistaken warnings about sort_on and sort_order parameters in the
@query service. @davisagli (#1558)
Documentation:
- Update links to the demo site in the README. @davisagli (#1555)
- Fix ogp_image URL. @stevepiercy (#1556)
- Update makefile to use Vale for spell, grammar, and style checking.
Fix linkcheckbroken to return the correct exit code for broken
links. Prepare links to use 5.docs.plone.org in preparation for
Plone 6 docs launch. @stevepiercy (#1561)
## 8.32.6 (2022-12-10)
Bug fixes:
- Fix an error when saving content with a slate block that includes an
empty link. @davisagli (#1553)
## 8.32.5 (2022-12-08)
Bug fixes:
- Fix timezone for Locking creation date @iFlameing (#1551)
## 8.32.4 (2022-12-01)
Bug fixes:
- Allow multiple values for sort_on and sort_order parameters in
@search @erral (#1532)
- Mock addon versions in documentation @erral (#1538)
- Add "UID" to content type endpoint response of "Plone Site"
@ksuess (#1546)
## 8.32.3 (2022-11-22)
Bug fixes:
- Fortify user api against missing user data (None) @reebalazs
(#1534)
## 8.32.2 (2022-11-18)
Bug fixes:
- Fix AttributeError for `REQUEST` in linkintegrity when pasting
nested content. @maurits (#1536)
## 8.32.1 (2022-11-14)
Bug fixes:
- Fix time to be returned with a timezone specifier in history
endpoint @reebalazs (#1530)
## 8.32.0 (2022-11-03)
New features:
- Add @upgrade endpoint to preview or run an upgrade of a Plone
instance @ericof (#1525)
Bug fixes:
- Added url field to Actions (#817)
- Updated `statictime` tests following changes to `p.a.discussion`
(see <https://github.com/plone/plone.app.discussion/pull/204>).
@instification (#1520)
- Updated `@portrait` endpoint to use sanitized user id.
@instification (#1524)
## 8.31.0 (2022-10-20)
New features:
- Added @rules endpoint with GET/POST/DELETE/PATCH @valipod
(#1397)
- Add link integrity support for slate blocks @sneridagh (#1522)
Bug fixes:
- New behavior `volto.blocks.editable.layout` to be used with Volto DX
Editable Layout @avoinea (#1476)
- Fixed the `description` field not being included in fieldsets
@JeffersonBledsoe (#1499)
- Fix passwords used in tests. @davisagli (#1513)
Internal:
- Remove plone.recipe.codeanalysis from buildout. @tisto (#1507)
- Don't use -latest when installing Plone for tests. @tisto
(#1512)
- Cache buildout eggs between Github Actions runs. @davisagli
(#1515)
- Use specific version of Plone in requirements.txt. Remove
unnecessary pins. @wesleybl (#1516)
- Remove code-analysis from Makefile. @wesleybl (#1517)
Documentation:
- Merge glossary terms into main plone/documentation. @stevepiercy
(#1508)
- Fix linkintegrity documentation, add missing a response file, and
use MyST syntax. @stevepiercy (#1509)
- Add Matomo Analytics, Remove Google Analytics. @stevepiercy
(#1518)
- Trigger a new deploy core Plone documentation when Volto
documentation is updated @esteele (#1519)
## 8.30.0 (2022-10-02)
New features:
- Add link integrity support for blocks @cekk (#953)
Internal:
- Plone 6 as first class citizen in builds and CI. Remove
non-supported Python versions. Add 3.10 for Plone 6. @sneridagh
(#1503)
## 8.29.0 (2022-10-01)
New features:
- Add @userschema endpoint for getting the user schema. @sneridagh
(#706)
- Add @transactions endpoint to fetch transactions that have been
made through the Plone website. @@MdSahil-oss (#1505)
Bug fixes:
- The `@controlpanels/usergroup` does not work for Plone 5 since it
does not exist there. Bring back the missing `title` just for
Plone 5. @sneridagh (#1501)
## 8.28.0 (2022-09-29)
New features:
- Improve performance of serializing image scales. @davisagli
(#1498)
Bug fixes:
- Revert "When an id is specified explicitly in the content POST
endpoint, return a 400 error response if it is invalid or
unavailable." The fix was incorrect and disallowing ids that should
be allowed. @davisagli (#1488)
- Increase the length of passwords used in tests. @davisagli
(#1492)
- Use json_compatible when serializing users in @users endpoint
@erral (#1493)
Documentation:
- Reorganize navigation. @stevepiercy (#1486)
- Fix Google redirect and hyphenation of word. @stevepiercy (#1495)
## 8.27.0 (2022-09-14)
New features:
- Added @aliases endpoint with GET/POST/DELETE @iulianpetchesi
(#1393)
Bug fixes:
- When an `id` is specified explicitly in the content POST endpoint,
return a 400 error response if it is invalid or unavailable.
@davisagli (#1487)
## 8.26.0 (2022-09-10)
New features:
- Add @portrait endpoint @sneridagh (#1480)
Bug fixes:
- Add portrait to the docs toctree to fix build warning.
@stevepiercy (#1485)
## 8.25.1 (2022-09-02)
Bug fixes:
- Fix the category of the 'Users and groups settings' controlpanel
adapter @sneridagh (#1482)
## 8.25.0 (2022-08-31)
New features:
- Add support for importing profiles in @addons endpoint
@sneridagh (#1479)
Bug fixes:
- Fix @registry endpoint Object of type datetime is not JSON
serializable @iulianpetchesi (#1189)
- Fixed small documentation for error code 404 @rohnsha (#1430)
- Handle subblocks in site root serializer for Plone 5.x @erral
(#1449)
- Do not hard depend on `plone.app.iterate`. It is not an direct core
package and might not be available. @jensens (#1461)
- Sanitise user id when checking for portrait @instification
(#1466)
## 8.24.1 (2022-08-04)
Bug fixes:
- Fix of users endpoint for Membrane users. @ksuess (#1459)
## 8.24.0 (2022-07-15)
New features:
- Add support to search for fullname, email, id on the @users
endpoint with "?search=" @ksuess (#1443)
Bug fixes:
- Tests: add names to behaviors. @maurits (#169)
## 8.23.0 (2022-06-23)
New features:
- Include users data in groups while retrieving @groups
@@nileshgulia1 (#1325)
- Added 'View comments' and 'Reply to item' permission to
discussion @@razvanMiu (#1327)
- better error logging for term lookup errors @ajung (#1365)
- Documentation was converted to MyST from reStructuredText.
@stevepiercy (#1375)
- Move caching rulesets to the ZCML where the endpoints are defined.
@jensens (#1414)
- List Users (@users): Add groups @ksuess List Users (@users):
Support filtering by groups @ksuess (#1419)
- Fix: Update group: Preserve title and description. @ksuess
(#1424)
- Add UsersGroupsSettings to set of control panels. @ksuess Move
configlet UsersGroupsSettings to correct group (Volto control panel
group "Users and Groups") @ksuess (#1436)
Bug fixes:
- Test-only fix: normalize white space in html in some tests. Needed
to not fail with newer plone.outputfilters. @maurits (#49)
- Tests: patch unique url for scale in old or new way. This is only in
serializer tests for images. @maurits (#57)
- Make the PAS plugin compatible with `PyJWT` 1 and 2. [jensens,
maurits] (#1193)
- Fix tests for changes in displayed_types. See
<https://github.com/plone/Products.CMFPlone/issues/3486> @pbauer
(#1359)
- Use JSON instead of JSON Schema for code samples. @stevepiercy
(#1379)
- Control panels and translations are supported in Plone 5 or greater.
@stevepiercy (#1380)
- Add html_meta tags and values for better SEO. @stevepiercy
(#1382)
- Update demo site to 6.demo.plone.org in README.rst. @stevepiercy
(#1383)
- Fixed timestamp calculation in history service on Python 3.10.
@maurits (#1391)
- Fix empty .resp in docs of PATCH controlpanel (#1396)
- Translate addon titles on @addon controlpanel @erral (#1412)
- Do not break path2uid with some edge-cases. @cekk (#1428)
- Sort the roles in the user serializer. @maurits (#1452)
Internal:
- Add naming best practices for URL Attributes (singular vs plural) to
the docs @tisto (#1295)
- Enable Google Analytics 4 @stevepiercy (#1404)
- fixed broken make task docs-linkcheckbroken (#1421)
- Fix broken link to Python requests library docs. @stevepiercy
(#1438)
## 8.22.0 (2022-04-08)
New features:
- Fix broken links. Add `make netlify` as a build target
to preview changes to docs only. Prepare docs for import into main
Plone documentation without significant changes. Use
sphinx-book-them as theme. @stevepiercy (#1337)
Bug fixes:
- Return proper error message when trying to create a content object
with a wrong @type parameter. @tisto (#1188)
- Fix the link in the GitHub menu item "suggest edit" to point to
master branch. @stevepiercy (#1346)
- Fix the redirect link for upc.edu to /en. @stevepiercy (#1351)
- Fix testing matrix to use correct combos of Python and Plone.
@maurits (#1356)
## 8.21.2 (2022-02-21)
Bug fixes:
- Restrict unlinking on Language Root Folders @sneridagh (#1332)
## 8.21.1 (2022-02-21)
Bug fixes:
- Improve handling of linking translations taking into account the
state of the target. Restricting it completely for LRFs. Adding a
transaction note to the action if it succeeds. @sneridagh (#1329)
## 8.21.0 (2022-01-25)
New features:
- Enhance @addons endpoint to return a list of upgradeable addons.
@sneridagh (#1319)
## 8.20.0 (2022-01-19)
New features:
- Add support for DX Plone Site root in Plone 6. Remove blocks
behavior hack for site root in Plone 6. @sneridagh (#1219)
## 8.19.0 (2022-01-19)
New features:
- Add support for multilingual language independent fields in field
serialization @sneridagh (#1316)
Internal:
- Update build to Plone 6 alpha 2 @sneridagh (#1312)
## 8.18.1 (2022-01-06)
Internal:
- Be permissive when testing the schema of the querystring endpoint
@reebalazs (#1307)
## 8.18.0 (2022-01-03)
New features:
- Improve vocabulary endpoint when asking for a list of tokens adding
resilience and deprecation warning @sneridagh (#1298)
- Expandable params as list and deprecations for list as comma
separated @sneridagh (#1300)
Bug fixes:
- Do not break in recursive transition when children already are in
destination state. @cekk (#1291)
- Resolve the bulk of deprecation and resource leak warnings when
running the full test suite. @rpatterson (#1302)
## 8.17.0 (2021-12-21)
New features:
- Enhance the vocabularies serializer to accept a list of tokens
@sneridagh (#1294)
Bug fixes:
- SearchableText indexer should maintain the order of the blocks
@ericof (#1292)
## 8.16.2 (2021-12-03)
Bug fixes:
- Revert "Improve support for missing_value and default story"
because it breaks multilingual @timo (#1289)
## 8.16.1 (2021-11-30)
Bug fixes:
- Improve support and meaning for `default` and `missing_value` in
serializers/deserializers @sneridagh (#1282)
## 8.16.0 (2021-11-29)
New features:
- Enable table blocks indexing @cekk (#1281)
## 8.15.3 (2021-11-29)
Bug fixes:
- Types service: Do not consider TypeSchemaContext as a valid context
@ericof (#1278)
- Improve error status code in vocabularies endpoint refactor
@sneridagh (#1284)
## 8.15.2 (2021-11-24)
Bug fixes:
- Adjust restrictions of vocabularies endpoint @ksuess (#1258)
## 8.15.1 (2021-11-24)
Bug fixes:
- Fix schema generation when /@types/ is used in a context. @ericof
(#1271)
## 8.15.0 (2021-11-23)
New features:
- Return non-batched vocabularies given a query param `b_size=-1`
@sneridagh (#1264)
Bug fixes:
- Remove all traces of `Products.CMFQuickInstaller`. It was removed in
Plone 5.2. BBB code was in `plone.app.upgrade` only. Plone with
Restapi broke if
`plone.app.upgrade` was not available, like when depending on `Products.CMFPlone`
only. @jensens (#1267)
- Fix installation of JWT PAS plugin with default profile. @jensens
(#1269)
## 8.14.0 (2021-11-11)
New features:
- Add root (INavigationRoot) for the current object information in
@translations endpoint @sneridagh (#1263)
## 8.13.0 (2021-11-05)
New features:
- Implement IJSONSummarySerializerMetadata allowing addons to extend
the metadata returned by Summary serializer. @ericof (#1250)
- Enable usage of metadata_fields also for POST calls @cekk (#1253)
## 8.12.1 (2021-10-14)
Bug fixes:
- Fix wrong @id attribute on the Plone root serialization when using
the new ++api++ traversal (introduced in plone.rest 2.0.0)
@sneridagh (#1248)
## 8.12.0 (2021-10-11)
New features:
- Add missing backend logout actions for the @logout endpoint (delete
cookie, etc) @sneridagh (#1239)
## 8.11.0 (2021-09-29)
New features:
- Make masking specific validation errors configurable in DX
DeserializeFromJson. @fredvd (#1211)
Bug fixes:
- Normalize unstable generated behavior names in http-examples output.
No longer hardcode port 55001 for the tests. @maurits (#1226)
- Avoid `UnboundLocalError` or duplicates in results when using
`@search` endpoint and a brain is orphan or a `KeyError` occurs
during result serialization. @gbastien (#1231)
## 8.10.0 (2021-09-24)
New features:
- Update default allow_headers CORS to include: Lock-Token
@@avoinea (#1181)
- @types endpoint also returns if a content type is immediately
addable in the given context @ericof (#1228)
Bug fixes:
- Fix @users endpoint to use acl_users.searchResults instead of
portal_membership.listMembers @ericof (#1199)
- Fix testing of a checkout instead of a released package. @maurits
(#1213)
- Fix @users endpoint to return list of users ordered by fullname
property @ericof (#1222)
## 8.9.1 (2021-08-27)
Bug fixes:
- Fixes values not being stored during content creation if value is
equal to the one returned by defaultFactory. @ericof (#1207)
## 8.9.0 (2021-08-25)
New features:
- Refactor `@lock` endpoint based on CRUD operations @@avoinea
(#1181)
## 8.8.1 (2021-08-20)
Bug fixes:
- Fix @vocabularies endpoint to search in translated term titles
@sneridagh (#1204)
## 8.8.0 (2021-08-20)
New features:
- Add resolveuid support to Link content type `remoteUrl` field.
@sneridagh (#1197)
Bug fixes:
- Updated tests to not fail when the Plone Site root is dexterity.
@jaroel (#2454)
## 8.7.1 (2021-08-03)
Bug fixes:
- Do not break @workflow endpoint for contents without workflow
@cekk (#1184)
- Do not break @workflow endpoint when trying to change the state of
a content without workflow @cekk (#1190)
## 8.7.0 (2021-07-19)
New features:
- Improve extensibility story for resolveUID field
serializer/deserializer @sneridagh (#1179)
## 8.6.1 (2021-07-16)
Bug fixes:
- Wrong deserialization if the path does not exist but is matched via
acquisition @sneridagh (#1176)
## 8.6.0 (2021-07-13)
New features:
- Set UID of a content during creation if the user has Manage Portal
permission. @ericof (#497)
## 8.5.0 (2021-07-09)
New features:
- Remove Python 2, Plone 4.3, and 5.1 code. @ericof (#1140)
## 8.4.2 (2021-07-08)
Bug fixes:
- In src run `find . -name "*.py"|xargs pyupgrade
--py36-plus`. Then run black and remove six import
leftovers. @jensens (#1162)
- Fix link content serialization when url points to local content but
it does not exist @sneridagh (#1167)
- Fix navigation service not using nav_title metadata. @ericof
(#1169)
## 8.4.1 (2021-07-07)
Bug fixes:
- Fix interpolation variable present in response after serialization
@sneridagh (#1164)
## 8.4.0 (2021-07-06)
New features:
- Pass through field attribute 'widget' for field Dict @ksuess
(#1153)
Bug fixes:
- Use security decorators in PAS plugin. @jensens (#1155)
- Drop coding magic first line. Coding magic is no longer needed in
Python 3, except if different from utf-8. @jensens (#1156)
- Fix PAS plugin ZMI markup for Zope4+. @jensens (#1157)
- Eliminate non-pythonic 'return None' usage. @jensens (#1158)
- Provide value_type of plone.schema / zope.schema Dict field
@ksuess (#1159)
## 8.3.2 (2021-07-05)
Bug fixes:
- Fix navigation endpoint sort by adding default
`sort_on='getObjPositionInParent'` to the query. @valipod
@tiberiuichim (#1107)
## 8.3.1 (2021-07-02)
Bug fixes:
- Unify ZMI, HTML form, and API login. @rpatterson (#1141)
## 8.3.0 (2021-06-07)
New features:
- Add current state and translation to the @workflow endpoint
@sneridagh (#1146)
Bug fixes:
- Remove code to support Python 2, Plone 4.3/5.0/5.1 @timo (#1140)
- Remove unnecessary check for plone.app.iterate which breaks the
@components attributes. @timo (#1148)
## 8.2.0 (2021-06-02)
New features:
- Add working copy (p.a.iterate) support @sneridagh (#1132)
## 8.1.0 (2021-05-27)
New features:
- Add support for volto-slate blocks: use resolveuid for internal
links, index slate blocks in the catalog, support block transforms.
@tiberiuichim (#1125)
Bug fixes:
- Fixed a deprecation warning when importing UnrestrictedUser from
AccessControl (#1129)
Internal:
- Format zcml files with collective.zpretty. Add zpretty Github
workflow. @tiberiuichim
## 8.0.0 (2021-05-14)
Breaking changes:
- Drop support for Python 2 and Plone 5.1 and 4.3. Plone RESTAPI >= 8
supports Python 3 and Plone 5.2/6.x only. @timo (#1121)
## 7.3.5 (2021-05-03)
Bug fixes:
- Fix `@workflow` when executing user has no permissions to access
`review_history` in target state. @deiferni (#999)
## 7.3.4 (2021-04-30)
Bug fixes:
- Fix `@history` when full history is empty. @deiferni (#1113)
## 7.3.3 (2021-04-29)
Bug fixes:
- Fix `@querystring-search` endpoint with correct sort_order @mamico
(#1108)
## 7.3.2 (2021-04-07)
Bug fixes:
- Fix `@search` endpoint with use_site_search_settings flag, for VHM
PhysicalRoot scenarios @tiberiuichim (#1105)
## 7.3.1 (2021-03-27)
Bug fixes:
- Fixes if old p.schema is used @sneridagh (#1103)
## 7.3.0 (2021-03-25)
New features:
- Adjust JSONField adapter to include widget name to use in
serialization @sneridagh (#1089)
Bug fixes:
- Fixes build was using the released version @sneridagh (#1090)
## 7.2.1 (2021-03-22)
Bug fixes:
- @contextnavigation endpoint does not honor nav_title index
@sneridagh (#1092)
## 7.2.0 (2021-03-18)
New features:
- Allow block transforms to run in "subblocks", discovered as the
`blocks` field (or alternatively, `data.blocks`) in a block value.
(#1085)
## 7.1.0 (2021-03-17)
New features:
- Allow passing `use_site_search_settings=1` in the `@search` endpoint
request, to follow Plone's `ISearchSchema` settings. (#1081)
Bug fixes:
- Do not log "No such index" warnings for knonw indexes like
metadata_fields @cekk (#987)
- Respect "Access inactive portal content" permission in @search
endpoint @cekk (#1066)
- Add GSM unsubscribe for test registered adapters in block
transformer tests @tiberiuichim (#1083)
- Pin some package versions to fix buildout @tiberiuichim (#1086)
## 7.0.0 (2021-02-20)
- Re-release 7.0.0b8 as 7.0.0 final. @timo
## 7.0.0b8 (2021-02-19)
New features:
- Mark restapi 7 with a zcml feature flag: `plonerestapi-7`
@sneridagh (#1068)
- Add a couple of additional tests for resolveuid feature reassurance
@sneridagh (#1072)
Bug fixes:
- Avoid duplicate fields within DX RestAPI @avoinea (#1073)
## 7.0.0b7 (2021-02-10)
New features:
- Add `root` element to the @breadcrumbs endpoint @sneridagh
(#1064)
Bug fixes:
- Remove `escape`'d titles @sneridagh (#1061)
## 7.0.0b6 (2021-02-09)
Bug fixes:
- Do not break if some custom code provides an alias for
Products.Archetypes (#1004)
- Handle missing review_state value in @navigation endpoint for items
without a workflow @cekk (#1060)
## 7.0.0b5 (2021-02-03)
Bug fixes:
- Fix transform object_browser href smartfield not working as expected
@sneridagh (#1058)
## 7.0.0b4 (2021-02-01)
Bug fixes:
- Fix href smart field in transformers do not cover the object_widget
use case @sneridagh (#1054)
## 7.0.0b3 (2021-01-26)
New features:
- Add new @contextnavigation endpoint. @tiberiuichim (#1042)
- Refactor navigation endpoint, add new `nav_title` attribute
@sneridagh (#1047)
- Add nav_title attribute to breadcrumbs endpoint @sneridagh
(#1049)
- Unify nav_title and title in navs @sneridagh (#1051)
Bug fixes:
- Fix `@id` when content query has no `fullbojects` @sneridagh
(#837)
## 7.0.0b2 (2021-01-25)
New features:
- Add serializer/deserializer for remoteUrl Link's field @cekk
(#1005)
## 7.0.0b1 (2021-01-08)
New features:
- Register blocks transformers also for Site Root @cekk (#1043)
## 7.0.0a6 (2020-12-18)
New features:
- Add `sort` feature to resort all folder items @petschki (#812)
- Remove unneeded stringtype checks @erral (#875)
- Enable Plone 4 Control Panels: Add-ons, Dexterity Content Types
@avoinea (#984)
- Enhance traceback with `__traceback_info__` on import to detect the
field causing the problem. @jensens (#1009)
Bug fixes:
- Fixed deprecation warnings for `zope.site.hooks`,
`CMFPlone.interfaces.ILanguageSchema` and
`plone.dexterity.utils.splitSchemaName`. @maurits (#975)
- Update tests to fix
<https://github.com/plone/plone.dexterity/pull/137> @@avoinea
(#1001)
- Fix resolveuid blocks transforms @tisto, sneridagh (#1006)
- Fix type hint example in searching documentation. @jensens
(#1008)
- Fixed compatibility with Zope 4.5.2 by making sure Location header
is string. On Python 2 it could be unicode for the users and groups
end points. Fixes [issue
1019](https://github.com/plone/plone.restapi/issues/1019).
@maurits (#1019)
- Check for Plone 5 in content-adding endpoint if
plone.app.multilingual is installed @erral (#1029)
- Do not test if there is a `meta_type` index. It is unused ballast.
@jensens (#2024)
- Fix tests with Products.MailHost 4.10. @maurits (#3178)
## 7.0.0a5 (2020-08-21)
New features:
- Improved blocks transformers: now we can handle generic transformers
@cekk
- Add generic block transformer for handle resolveuid in all blocks
that have a _url_ or _href_ field @cekk
- Add "smart fields" concept: if block has a _searchableText_ field,
this will be indexed in Plone @cekk, tiberiuichim (#952)
## 7.0.0a4 (2020-05-15)
New features:
- Replace internal links to files in blocks with a download url if the
user has no edit permissions @csenger (#930)
## 7.0.0a3 (2020-05-13)
New features:
- In block text indexing, query for IBlockSearchableText named
adapters to allow extraction from any block type. This avoids
hardcoding for the 'text' block type. @tiberiuichim (#917)
## 7.0.0a2 (2020-05-12)
New features:
- Added `IBlockFieldDeserializationTransformer` and its counterpart,
`IBlockFieldSerializationTransformer` concepts, use subscribers to
convert/adjust value of blocks on serialization/deserialization,
this enables an extensible mechanism to transform block values when
saving content.
Added an html block deserializer transformer, it will clean the
content of the "html" block according to portal_transform
x-html-safe settings.
Added an image block deserializer transformer, it will use
resolveuid mechanism to transform the url field to a UID of content.
Move the resolveuid code from the dexterity field deserializer to a
dedicated block converter adapter, using the above mechanism.
@tiberiuichim (#915)
## 7.0.0a1 (2020-05-11)
New features:
- Resolve links in blocks to UIDs during deserialization and back to
paths during serialization. @buchi,timo,cekk (#808)
## 6.15.1 (2021-02-20)
Bug fixes:
- Fixed compatibility with Zope 4.5.2 by making sure Location header
is string. On Python 2 it could be unicode for the users and groups
end points. Fixes [issue
1019](https://github.com/plone/plone.restapi/issues/1019).
@maurits (#1019)
## 6.15.0 (2020-10-08)
New features:
- Add `sort` feature to resort all folder items @petschki (#812)
- Remove unneeded stringtype checks @erral (#875)
Bug fixes:
- Fixed deprecation warnings for `zope.site.hooks`,
`CMFPlone.interfaces.ILanguageSchema` and
`plone.dexterity.utils.splitSchemaName`. @maurits (#975)
- Update tests to fix
<https://github.com/plone/plone.dexterity/pull/137> @@avoinea
(#1001)
- Fix tests with Products.MailHost 4.10. @maurits (#3178)
## 6.14.0 (2020-08-28)
New features:
- Add @types endpoint to be able to add/edit/delete CT schema
@Petchesi-Iulian, avoinea (#951)
## 6.13.8 (2020-08-20)
Bug fixes:
- Removed useless management of metadata_fields in
SearchHandler/LazyCatalogResultSerializer since it is handled in
DefaultJSONSummarySerializer. @gbastien (#970)
## 6.13.7 (2020-07-16)
Bug fixes:
- Add a Decimal() converter @fulv (#963)
## 6.13.6 (2020-07-09)
Bug fixes:
- Fix Plone 5.2.x deprecation message 'ILanguageSchema is
deprecated'. @timo (#975)
- Do not hardcode the port in tests because it may depend on
environment variables @ale-rt (#978)
## 6.13.5 (2020-06-29)
Bug fixes:
- Remove the use of plone.api in upgrade code @erral (#917)
## 6.13.4 (2020-06-18)
Bug fixes:
- Re-add test folder to the release (ignore the tests/images folder
though). @timo (#968)
## 6.13.3 (2020-06-17)
Bug fixes:
- Take the `include_items` parameter into account in
`SerializeCollectionToJson`. @gbastien (#957)
## 6.13.2 (2020-06-15)
Bug fixes:
- Include plone.app.controlpanel permissions.zcml in database service
to avoid ConfigurationExecutionError regarding
'plone.app.controlpanel.Overview' permission while starting Plone
4.3.x @gbastien (#956)
## 6.13.1 (2020-06-03)
Bug fixes:
- PATCH (editing) in @user endpoint now is able to remove existing
values using null @sneridagh (#946)
## 6.13.0 (2020-05-28)
New features:
- Expose author_image in comments endpoint @timo (#948)
## 6.12.0 (2020-05-11)
New features:
- Add database endpoint @timo (#941)
## 6.11.0 (2020-05-08)
New features:
- Add type-schema adapters for: Email, URI and Password @avoinea
(#926)
## 6.10.0 (2020-05-07)
New features:
- Add system endpoint. @timo (#736)
## 6.9.1 (2020-05-07)
Bug fixes:
- Fixed @translations endpoint to only retrieve the translations that
the current user can really access using
`get_restricted_translations` instead. This fixes the use case where
an user with no permissions on a translation accessing the endpoint
returned a 401. @sneridagh (#937)
## 6.9.0 (2020-05-06)
New features:
- Add endpoints for managing addons. @esteele (#733)
## 6.8.1 (2020-05-04)
Bug fixes:
- Treat next/prev items for unordered folders. @rodfersou (#928)
## 6.8.0 (2020-04-23)
New features:
- Managing Dexterity Type Creation (CRUD) via plone.restapi
@avoinea (#534)
## 6.7.0 (2020-04-21)
New features:
- Make @querystring-search endpoint context aware @sneridagh
(#911)
Bug fixes:
- Fix sphinxbuilder with Python 3.8 @avoinea (#905)
## 6.6.1 (2020-04-17)
Bug fixes:
- call unescape method on received html for richtext before save it in
Plone. @cekk (#913)
- Small fix in IBlocks test, added a missing assert call
@tiberiuichim (#914)
## 6.6.0 (2020-04-07)
New features:
- Add next_item and previous_item attributes to allow to navigate to
the previous and next sibling in the container the document is
located. @rodfersou (#900)
## 6.5.2 (2020-04-01)
Bug fixes:
- Fix for the use case while updating user properties in the @user
endpoint, and the portrait is already previously set but the request
includes the (previously) serialized value as a string because the
user are not updating it @sneridagh (#896)
## 6.5.1 (2020-04-01)
Bug fixes:
- Fix deleting user portrait. @buchi (#751)
## 6.5.0 (2020-03-30)
New features:
- Link translation on content creation feature and new
@translation-locator endpoint @sneridagh (#887)
## 6.4.1 (2020-03-25)
Bug fixes:
- Make discussion endpoint return content that is deserialized via
portal transforms (e.g. 'text/x-web-intelligent') @timo (#889)
## 6.4.0 (2020-03-23)
New features:
- Add targetUrl to the dxcontent serializer for primary file fields to
be able to download a file directly. @csenger (#886)
Bug fixes:
- Fixed package install error with Python 3.6 without locale. See
[coredev issue
642](https://github.com/plone/buildout.coredev/issues/642#issuecomment-597008272).
@maurits (#642)
- plone.app.discussion extends the review workflow for moderation of
comments. This change takes the additional workflow states into
account. @ksuess (#842)
## 6.3.0 (2020-03-03)
New features:
- Allow using object paths and UIDs to link translations @erral
(#645)
Bug fixes:
- Add a catalog serializer guard when returning fullobjects in case
the object doesn't exist anymore because for some reason it failed
to uncatalog itself. @sneridagh (#877)
- Use longer password in tests. @maurits (#3044)
## 6.2.4 (2020-02-20)
Bug fixes:
- fullobjects qs is missing in response batch links in batching
operations @sneridagh (#868)
## 6.2.3 (2020-02-19)
Bug fixes:
- Return proper None instead of string "None" on the choice schema
serializer @sneridagh (#863)
## 6.2.2 (2020-01-24)
Bug fixes:
- Degrade gracefully when a term set in a content field does not
exists in the assigned vocabulary @sneridagh (#856)
## 6.2.1 (2020-01-22)
Bug fixes:
- Sharing POST: Limit roles to ones the user is allowed to delegate.
@lgraf (#857)
## 6.2.0 (2020-01-10)
New features:
- Make ?fullobjects work in AT Collections to get the full JSON
representation of the items @erral (#698)
- Make ?fullobjects work in Dexterity Collections to get the full JSON
representation of the items @erral (#848)
Bug fixes:
- Fix WorkflowException for related items with no review_state.
@arsenico13 (#376)
## 6.1.0 (2020-01-05)
New features:
- Add SearchableText indexing for text in blocks @luca-bellenghi
(#844)
## 6.0.0 (2019-12-22)
Breaking changes:
- Remove IAPIRequest marker interface from plone.restapi. The correct
interface should be imported from plone.rest.interfaces instead. If
anybody was using this marker Interface, it didn't do anything.
(#819)
Bug fixes:
- Prevent converting bytestring ids to unicode ids when reordering
(see upgrade guide for potential migration). @deiferni (#827)
## 5.1.0 (2019-12-07)
New features:
- Add Python 3.8 support @timo (#829)
## 5.0.3 (2019-12-06)
Bug fixes:
- Change to use the short name for the Blocks behavior instead of
using the interface one. It fixes #838. @sneridagh (#838)
## 5.0.2 (2019-11-06)
Bug fixes:
- Fix filtering vocabs and sources by title with non-ASCII characters.
@lgraf (#825)
## 5.0.1 (2019-11-05)
Bug fixes:
- Fix serialization of vocabulary items for fields that need hashable
items (e.g. sets). @buchi (#788)
## 5.0.0 (2019-10-31)
Breaking changes:
- Rename tiles behavior and fields to blocks, migration step. [timo,
sneridagh] (#821)
Bug fixes:
- Fixed startup error when Archetypes is there, but `plone.app.blob`
or `plone.app.collection` not. @maurits (#690)
## 4.6.0 (2019-10-06)
New features:
- Add @sources and @querysources endpoints, and link to them from
JSON schema in @types response. @lgraf (#790)
Bug fixes:
- Explicitly load zcml of dependencies, instead of using
`includeDependencies` @maurits (#2952)
## 4.5.1 (2019-09-23)
Bug fixes:
- Fire ModifiedEvent when field is set to null in a PATCH request.
@phgross (#802)
- Testing: Drop freezegun and instead selectively patch some timestamp
accessors. @lgraf (#803)
## 4.5.0 (2019-09-12)
New features:
- Add @querystring-search endpoint that returns the results of a
search using a p.a.querystring query. @sneridagh (#789)
- Use Plone 5.2 and Python 3 as default to generate documentation.
@timo (#800)
Bug fixes:
- Make group serializer results predictable by returning sorted item
results. @timo (#798)
## 4.4.0 (2019-08-30)
New features:
- Add @querystring endpoint that dumps p.a.querystring config.
@lgraf (#754)
Bug fixes:
- Fix typo in the `tiles_layout` field title name. @sneridagh
(#785)
## 4.3.1 (2019-07-10)
Bug fixes:
- Fix @sharing POST when called on the plone site root @csenger
(#780)
## 4.3.0 (2019-06-30)
New features:
- Support retrieval of additional metadata fields in summaries in the
same way as in search results. @buchi (#681)
## 4.2.0 (2019-06-29)
New features:
- Make @types endpoint expandable. @lgraf (#766)
- Factor out permission checks in @users endpoint to make it more
easily customizable. @lgraf (#771)
Bug fixes:
- Gracefully handle corrupt images when serializing scales. @lgraf
(#729)
- Docs: Make sure application/json+schema examples also get syntax
highlighted. @lgraf (#764)
- Return empty response for status 204 (No Content). @buchi (#775)
- Return status 400 if a referenced object can not be resolved during
deserialization. @lgraf (#777)
## 4.1.4 (2019-06-21)
Bug fixes:
- Set effective_date and reindex obj on workflow transitions.
@wkbkhard (#760)
## 4.1.3 (2019-06-21)
Bug fixes:
- Improve documentation for how to set relations by adding some
examples. @buchi (#732)
- Return an error message if a referenced object can not be resolved.
@buchi (#738)
## 4.1.2 (2019-06-15)
Bug fixes:
- @types endpoint: Fix support for context aware default factories.
@lgraf (#748)
## 4.1.1 (2019-06-13)
Bug fixes:
- Handle `None` as a vocabulary term title in the vocabulary
serializer. @Rotonen (#742)
- Handle a term not having a title attribute in the vocabulary
serializer. @Rotonen (#742)
- Handle a term having a non-ASCII `str` title attribute in the
vocabulary serializer. @Rotonen (#743)
- Fix time freezing in Plone 5.1 tests. @lgraf (#745)
## 4.1.0 (2019-05-25)
New features:
- Use Black on the code base. @timo (#693)
## 4.0.0 (2019-05-09)
Breaking changes:
- @vocabularies service: No longer returns an @id for terms. Results
are batched, and terms are now listed as items instead of terms to
match other batched responses. Batch size is 25 by default but can
be overridden using the b_size parameter. @davisagli
- @types service: Choice fields using named vocabularies are now
serialized with a vocabulary property giving the URL of the
@vocabularies endpoint for the vocabulary instead of including
choices, enum and enumNames inline. The subjects field is now
serialized as an array of string items using the
plone.app.vocabularies.Keywords vocabulary. @davisagli
- Serialize widget parameters into a widgetOptions object instead of
adding them to the top level of the schema property. @davisagli
- Add `title` and `token` filter to the vocabularies endpoint.
@davisagli, sneridagh, timo (#535)
- Use tokens for serialization/deserialization of vocabulary terms.
@buchi (#691)
- Return the token and the title of vocabulary terms in serialization.
See upgrade guide for more information. @buchi (#726)
New Features:
- `@vocabularies` service: Use `title` parameter to filter terms by
title and `token` for getting the title of a term given a token.
(case-insensitive). @davisagli, sneridagh, timo
Bug fixes:
- Standardize errors data structure of email-notification endpoint.
@cekk (#708)
- When renewing an expired or invalid authentication token with
`@login-renew` fail with a `401` error instead of returning a new
authentication token. @thet (#721)
- Use interface name in the `tiles` profile instead of the shorthand
behavior name. This fixes #724. @sneridagh (#724)
- Avoid calculating batch links for catalog results twice.
@davisagli
## 3.9.0 (2019-04-18)
New features:
- Add full support for `fullobjects` support for AT content types.
@sneridagh (#698)
## 3.8.1 (2019-03-21)
Bug fixes:
- Fixed Python 3 incompatibility with workflow service (#676) @ajung
- Hide performance, testing, and tiles profile. (#700) @timo
## 3.8.0 (2019-03-21)
New features:
- Add support for add/update user portraits (@user endpoint)
@sneridagh (#701)
## 3.7.5 (2019-03-14)
Bug fixes:
- Do not depend on the deprecated plone.app.controlpanel package.
@sneridagh (#696)
## 3.7.4 (2019-03-13)
Bug fixes:
- Fix a problem on ZCML loading depending on how the policy package is
named, related to the load of permissions in control panels and
multilingual. @sneridagh (#526)
## 3.7.3 (2019-03-08)
Bug fixes:
- Use environment-markers instead of python-logic to specify
dependencies for py2. @pbauer (#688)
## 3.7.2 (2019-03-07)
Bug fixes:
- Fix TUS upload events
@#689(https://github.com/plone/plone.restapi/issues/689). @buchi
(#689)
## 3.7.1 (2019-03-06)
Bugfixes:
- Fix release to not create universal (Python 2/3) wheels.
@gforcada
- Install zestreleaser.towncrier in the buildout to the changelog is
updated correctly. (#684) @maurits
## 3.7.0 (2019-03-04)
New Features:
- Add group roles to @groups serializer @sneridagh
## 3.6.0 (2019-02-16)
New Features:
- Enhance site root to serialize and deserialize 'tiles' and
'tiles_layout' attributes. @sneridagh
- Fix @workflow endpoint on site root to return an empty object
instead of a 404. @sneridagh
## 3.5.2 (2019-02-14)
Bugfixes:
- Fix serializing the Event type. This fixes
<https://github.com/plone/plone.restapi/issues/664>. [davisagli,
elioschmutz]
## 3.5.1 (2019-02-05)
Bugfixes:
- Do not fail on serializing types with fields having non-parametrized
widgets. Fixes issue
@664(https://github.com/plone/plone.restapi/issues/664).
@elioschmutz
## 3.5.0 (2018-11-06)
New Features:
- Add Python 3 support. @pbauer, davisagli
## 3.4.5 (2018-09-14)
Bugfixes:
- Avoid `AttributeError` on add-on installation (fixes
@#465(https://github.com/plone/plone.restapi/issues/465).
@lukasgraf, hvelarde
- Make search work with a path query containing a list of paths in a
virtual hosting setting. @sunew
## 3.4.4 (2018-08-31)
Bugfixes:
- Generalize the last bugfix solution for searching the userid on
password reset requests, matching it with Plone's one. This covers
all the request use cases. @sneridagh
## 3.4.3 (2018-08-30)
Bugfixes:
- Add "Use UUID as user ID" support for password resets
@sneridagh
## 3.4.2 (2018-08-27)
Bugfixes:
- Add missing "Use UUID as user ID" support to POST @users endpoint
on user creation. Also improve the userid/username chooser by using
the same process as Plone does. This fixes:
<https://github.com/plone/plone.restapi/issues/586> @sneridagh
## 3.4.1 (2018-07-22)
Bugfixes:
- Make sure the default profile is installed on tiles profile
installation. @timo
## 3.4.0 (2018-07-21)
New Features:
- Add tiles profile. @timo
## 3.3.0 (2018-07-20)
New Features:
- Return member fields based on user schema in `@users` endpoint
instead of a fixed list of member properties. @buchi
## 3.2.2 (2018-07-19)
Bugfixes:
- Do not include HTTP examples using data_files anymore, but move them
below src/plone/restapi instead and use package_data to include
them. @lgraf
- Rename Dexterity content before adding it to a container. @buchi
- Avoid hard dependency on Archetypes introduced in 3.0.0. This fixes
@issue 570(https://github.com/plone/plone.restapi/issues/570).
@buchi
- Make setup.py require plone.behavior >= 1.1. This fixes #575.
@timo
- Fixes `test_search` to work with bug fixed `plone.indexer`. Now
`DXTestDocument` explicit got an attribute `exclude_from_nav`. This
fixes [issue
579](https://github.com/plone/plone.restapi/issues/579). Refers to
[Products.CMFPlone Issue
2469](https://github.com/plone/Products.CMFPlone/issues/2469)
@jensens
## 3.2.1 (2018-06-28)
Bugfixes:
- Require plone.schema >= 1.2.0 in setup.py for new tiles endpoint.
@timo
## 3.2.0 (2018-06-28)
New Features:
- Add tiles endpoint for getting all available content tiles and its
JSONSchema. @sneridagh
- Add a tiles behavior to support the new tiles implementation for
plone.restapi. @sneridagh
- Make sure to include HTTP examples in installed egg, so
test_documentation tests also work against a installed release of
plone.restapi. @lgraf
## 3.1.0 (2018-06-27)
New Features:
- Plone 5.2 compatibility. @sunew, davisagli, timo
## 3.0.0 (2018-06-26)
Breaking Changes:
- Fix object creation events. Before this fix, creation events were
fired on empty not yet deserialized objects. Also a modified event
was fired after deserializing e newly created object. Custom content
deserializers now must handle the `create` keyword argument, which
determines if deserialization is performed during object creation or
while updating an object. @buchi
- Include translated role titles in `@sharing` GET. @lgraf
- Image URLs are now created using the cache optimized way. Fixes
#494. @erral
## 2.2.1 (2018-06-25)
Bugfixes:
- Fix ReST on PyPi. @timo
## 2.2.0 (2018-06-25)
New Features:
- Document the use of the `Accept-Language` HTTP header. @erral
- Translate FTI titles on `@types` endpoint. Fixes #337. @erral
- Translate action name, workflow state and transition names in
@history endpoint. @erral
- Enhance `@workflow` endpoint to support applying transitions to all
contained items and to set effective and expiration dates. @buchi
Bugfixes:
- Make sure DX DefaultFieldDeserializer validates field values.
@lgraf
- Reindex AT content on PATCH. This fixes [issue
531](https://github.com/plone/plone.restapi/issues/531). @buchi
- Fix change password on Plone 5.2 @sunew
- Plone 5.2 compatible tests. @sunew
## 2.1.0 (2018-06-23)
New Features:
- Include translated role title in `@roles` GET. @lgraf
## 2.0.1 (2018-06-22)
Bugfixes:
- Hide upgrades from the add-ons control panel. Fixes [issue
532](https://github.com/plone/plone.restapi/issues/532). @maurits
## 2.0.0 (2018-04-27)
Breaking Changes:
- Convert all datetime, DateTime and time instances to UTC before
serializing. @thet
- Use python-dateutil instead of DateTime to parse date strings when
de-serializing. @thet
- Make `@translations` endpoint expandable @erral
- Rename the results attribute in `@translations` endpoint to be
'items' @erral
- Remove 'language' attribute in `@translations` endpoint from the
top-level response entry @erral
New Features:
- Expose the tagged values for widgets in the @types endpoint.
@jaroel
- Render subject vocabulary as items for subjects field. @jaroel
- New permission for accessing user information in the GET @user
endpoint `plone.restapi: Access Plone user information`
mapped by default to Manager role (as it was before). @sneridagh
Bugfixes:
- Add VHM support to @search @csenger
## 1.6.0 (2018-04-17)
New Features:
- Add `expand.navigation.depth` parameter to the `@navigation`
endpoint. @fulv, sneridagh
## 1.5.0 (2018-04-03)
New Features:
- Allow users to update their own properties and password.
@sneridagh
## 1.4.1 (2018-03-22)
Bugfixes:
- Fix serialization of `Discussion Item` and `Collection` content
types when called with `fullobjects` parameter. @sneridagh
## 1.4.0 (2018-03-19)
New Features:
- Add expandable @actions endpoint to retrieve portal_actions.
@csenger,timo,sneridagh
## 1.3.1 (2018-03-14)
Bugfixes:
- Support null in content PATCH requests to delete a field value
(Dexterity only). This fixes #187. @csenger
## 1.3.0 (2018-03-05)
New Features:
- Observe the allow_discussion allowance (global, fti, object) on
object serialization. @sneridagh
- Add '@email-send' endpoint to allow authorized users to send
emails to arbitrary addresses (Plone 5 only). @sneridagh
## 1.2.0 (2018-02-28)
New Features:
- Allow users to get their own user information. @erral
Bugfixes:
- Mark uninstall profile as non-installable. @hvelarde
- Fix the use of fullobjects in Archetypes based sites @search
@erral
- Fix workflow translations with unicode characters. @Gagaro
- Fix workflow encoding in transition endpoint. @Gagaro
## 1.1.0 (2018-01-24)
New Features:
- Add '@email-notification' endpoint to contact the site owner via
email. (Plone 5 only) @sneridagh
Bugfixes:
- Remove warning about alpha version from docs. @timo
## 1.0.0 (2018-01-17)
Bugfixes:
- Remove deprecated getSiteEncoding import. @timo
- Build documentation on Plone 5.0.x (before: Plone 4.3.x). @timo
## 1.0b1 (2018-01-05)
Breaking Changes:
- Rename 'url' attribute on navigation / breadcrumb to '@id'.
@timo
New Features:
- Allow client to ask for the full representation of an object after
creation by setting the 'Prefer' header on a PATCH request.
@Gagaro
- Support deserialization of a relationChoice field using the contents
of the serialization (enhanced by the serializer) output.
@sneridagh
- Allow properties when adding a user. This allows setting the
fullname by anonymous users. @jaroel
- Add support for IContextSourceBinder vocabularies on JSON schema
Choice fields adapters. @sneridagh
- Add upgrade guide. @timo
Bugfixes:
- Fix issue where POST or PATCH a named file with a download link
would always return self.context.image, not the actual file.
@jaroel
- Fix DateTimeDeserializer when posting None for a non-required field.
@jaroel
- Fixed 'required' for DateTime fields. @jaroel
- Batching: Preserve list-like query string params when canonicalizing
URLs. @lgraf
- Fixed NamedFieldDeserializer to take a null to remove files/images.
@jaroel
- Fixed NamedFieldDeserializer to validate required fields. @jaroel
- Prevent a fatal error when we get @workflow without permission to
get review_history workflow variable. @thomasdesvenain
- Make user registration work as default Plone behavior by adding the
Member role to the user. @sneridagh
## 1.0a25 (2017-11-23)
Breaking Changes:
- Remove @components navigation and breadcrumbs. Use top level
@navigation and @breadcrumb endpoints instead. @timo
- Remove "sharing" attributes from GET response. @timo,jaroel
- Convert richtext using .output*relative_to. Direct conversion from
RichText if no longer supported as we *\_always\* need a context for
the ITransformer. @jaroel
New Features:
- Add fullobjects parameter to content GET request. @timo
- Include descriptions of modified fields in object-modified event.
@buchi
- Add uninstall profile @davilima6
- Add `include_items` option to `SerializeFolderToJson`. @Gagaro
Bugfixes:
- Fix error messages for password reset (wrong user and wrong
password). @csenger
- Fix #440, URL and @id wrong in second level get contents call for
folderish items. @sneridagh
- Fix #441, GET in a folderish content with 'fullobjects' is
including all items recursively. @sneridagh
- Fix #443, Ensure the userid returned by `authenticateCredentials` is
a byte string and not unicode. @Gagaro
## 1.0a24 (2017-11-13)
New Features:
- Add 'is_editable' and 'is_deletable' to the serialization of
comments objects. Also refactored the comments endpoint to DRY.
@sneridagh
- Improve is_folderish property to include Plone site and AT content
types @sneridagh
Bugfixes:
- Cover complete use cases of file handling in a content type. This
includes removal of a image/file and being able to feed the PATCH
endpoint with the response of a GET operation the image/file fields
without deleting the existing value. @sneridagh
## 1.0a23 (2017-11-07)
Bugfixes:
- Fix JWT authentication for users defined in the Zope root user
folder. This fixes
<https://github.com/plone/plone.restapi/issues/168> and
<https://github.com/plone/plone.restapi/issues/127>. @buchi
- Fix datetime deserialization for timezone aware fields. This fixes
<https://github.com/plone/plone.restapi/issues/253> @buchi
## 1.0a22 (2017-11-04)
New Features:
- Add @translations endpoint @erral
- Include title in site serialization. @buchi
- Include is_folderish property on GET request responses. Fixes #327.
@sneridagh
Bugfixes:
- Strip spaces from TextLine values to match z3c.form implementation.
@jaroel
- Disallow None and u'' when TextLine is required. Refs #351.
@jaroel
- Make getting '/@types/{type_id}' work for non-DX types, ie "Plone
Site". @jaroel
- Remove Products.PasswortResetTool from setup.py since it is a soft
dependency. It is included in Plone >= 5.1. @tomgross
- Update pytz to fix travis builds @sneridagh
## 1.0a21 (2017-09-23)
New Features:
- Add support for expandable elements. See
<http://plonerestapi.readthedocs.io/en/latest/expansion.html> for
details. @buchi
- Translate titles in @workflow. @csenger
- Add endpoints for locking/unlocking. See
<http://plonerestapi.readthedocs.io/en/latest/locking.html> for
details. @buchi
- Add @controlpanels endpoint. @jaroel, timo
Bugfixes:
- Fix ZCML load order issue by explicitly loading permissions.zcml
from CMFCore. @lgraf
- Fix @id values returned by @search with 'fullobjects' option
@ebrehault
- Re-add skipped tests from @breadcrumbs and @navigation now that
expansion is in place. @sneridagh
## 1.0a20 (2017-07-24)
Bugfixes:
- Support content reordering on the site root. @jaroel
- Support setting Layout on the site root. @jaroel
- Add clarification when using SearchableText parameter in
plone.restapi to avoid confusions @sneridagh
## 1.0a19 (2017-06-25)
New Features:
- Implement tus.io upload endpoint. @buchi
## 1.0a18 (2017-06-14)
New Features:
- Add "&fullobject" parameter in @search to retrieve full objects
@ebrehault
Bugfixes:
- Tweaks to README.rst @tkimnguyen
- Don't list non-DX types in @types endpoint. Refs
<https://github.com/plone/plone.restapi/issues/150> @jaroel
## 1.0a17 (2017-05-31)
Breaking Changes:
- Change RichText field value to use 'output' instead of 'raw' to
fix inline paths. This fixes #302. @erral
New Features:
- Automatically publish docker images on hub.docker.com. @timo
Bugfixes:
- Docs: Fix batching example request/response. @lgraf
## 1.0a16 (2017-05-23)
New Features:
- Add @comments endpoint. @jaroel,timo,pjoshi
- Add @roles endpoint to list defined global roles. @jaroel
- Add JSON schema to @registry listing. @jaroel
- Allow to manipulate the group membership in the @groups endpoint.
@jaroel
- List and mutate global roles assigned to a user in the @users
endpoint. @jaroel
Bugfixes:
- Bind schema field to context to handle context vocabularies. #389
@csenger
- The inherit flag was the wrong way around. Blocked inherit showed up
as non-blocked. @jaroel
## 1.0a15 (2017-05-15)
New Features:
- Add @translations endpoint @erral
- Reorder children in a item using the content endpoint. @jaroel
- Add batched listing of registry entries to @registry endpoint.
@jaroel
## 1.0a14 (2017-05-02)
New Features:
- Add @history endpoint. @jaroel
Bugfixes:
- Fix the @move endpoint fails to return 403 when the user don't
have proper delete permissions over the parent folder. @sneridagh
## 1.0a13 (2017-04-18)
New Features:
- Add support for a 'search' parameter to @sharing. This returns
additional principals in 'entries', also flagging the acquired and
inherited fields. @jaroel
- Add support for setting/modifying 'layout' on DX and AT content
endpoints. @jaroel
- Add support for getting the defined layouts on the root types
endpoint. @jaroel
Bugfixes:
- Add the title to the workflow history in the @workflow endpoint.
This fixes #279. @sneridagh
- Don't fetch unnecessary PasswordResetTool in Plone 5.1 @tomgross
## 1.0a12 (2017-04-03)
Bugfixes:
- Handle special case when user @move content that cannot delete
returning proper 403 @sneridagh
## 1.0a11 (2017-03-24)
Bugfixes:
- Remove zope.intid dependency from copy/move endpoint. Remove
plone.api dependency from principals endpoint. Make
ChoiceslessRelationListSchemaProvider available only if
z3c.relationfield is installed. This fixes
<https://github.com/plone/plone.restapi/issues/288> @erral
- Remove unittest2 imports from tests. @timo
- Add Products.PasswortResetTool to dependencies. This dependency is
gone in Plone 5.1. @timo
- Make import of LocalrolesModifiedEvent conditional, so plone.restapi
doesn't prevent Plone 4.3 deployments < 4.3.4 from booting.
@lgraf
## 1.0a10 (2017-03-22)
New Features:
- Add @sharing endpoint. @timo,csenger,sneridagh
- Add @vocabularies endpoint. @timo,csenger,sneridagh
- Add @copy and @move endpoints. @buchi,sneridagh
- Docs: Convert all HTTP examples to use sphinxcontrib-httpexample.
@lgraf
- Add 'addable' attribute to the @types endpoint. It specifies if
the content type can be added to the current context. See
<https://github.com/plone/plone.restapi/issues/173>. @jaroel
- Add support for named IJsonSchemaProvider adapter to target a single
field in a schema. This allows us to prevent rendering all choices
in relatedItems. See
<https://github.com/plone/plone.restapi/issues/199>. @jaroel
- Add review_state to the folderish summary serializer. @sneridagh
- Add @principals endpoint. It searches for principals and returns a
list of users and groups that matches the query. This is aimed to be
used in the sharing UI widget or other user/groups search widgets.
@sneridagh
- Add reset-password action to the @users endpoint.
<https://github.com/plone/plone.restapi/issues/158> @timo,csenger
Bugfixes:
- Fix coveralls reporting. @timo
- Return correct @id for folderish objects created via POST.
@lgraf
- Fix timezone-related failures when running tests through `coverage`.
@witsch
- @search endpoint: Also prefill path query dict with context path.
This will allow users to supply an argument like path.depth=1, and
still have path.query be prefilled server-side to the context's
path. @lgraf
- Overhaul JSON schema generation for @types endpoint. It now returns
fields in correct order and in their appropriate fieldsets.
@lgraf
- Add missing id to the Plone site serialization, related to issue
#186. @sneridagh
- Add missing adapter for IBytes on JSONFieldSchema generator. This
fixes the broken /@types/Image and /@types/File endpoints.
@sneridagh
- Fix addable types for member users and roles assigned locally on
@types endpoint. @sneridagh
## 1.0a9 (2017-03-03)
New Features:
- Make date and datetime fields provide a 'widget' attribute.
@timo
- Add documentation for types endpoint schema. @timo
- Add basic groups CRUD operations in @groups endpoints @sneridagh
- Make @types endpoint include a 'mode' attribute. This fixes
<https://github.com/plone/plone.restapi/issues/198>. @timo
Bugfixes:
- Fix queries to ensure ordering of container items by
getObjectPositionInParent. @lgraf
## 1.0a8 (2017-01-12)
New Features:
- Add simple user search capabilities in the GET @users endpoint.
@sneridagh
Bugfixes:
- Allow installation of plone.restapi if JWT plugin already exists.
This fixes <https://github.com/plone/plone.restapi/issues/119>.
@buchi
## 1.0a7 (2016-12-05)
Bugfixes:
- Make login endpoint accessible without UseRESTAPI permission. This
fixes <https://github.com/plone/plone.restapi/issues/166>. @buchi
## 1.0a6 (2016-11-30)
New Features:
- Introduce dedicated permission required to use REST API at all
(assigned to everybody by default). @lgraf
Bugfixes:
- When token expires, PAS plugin should return an empty credential.
@ebrehault
## 1.0a5 (2016-10-07)
Bugfixes:
- Remove plone.api dependency from users service. This fixes
<https://github.com/plone/plone.restapi/issues/145>. @timo
## 1.0a4 (2016-10-05)
New Features:
- Make POST request return the serialized object. @timo
- Include 'id' attribute in responses. @timo
## 1.0a3 (2016-09-27)
New Features:
- Add @users endpoint. @timo
Bugfixes:
- Fix bug where disabling the "Use Keyring" flag wasn't persisted
in jwt_auth plugin. @lgraf
## 1.0a2 (2016-08-20)
New Features:
- Implements navigation and breadcrumbs components @ebrehault
- Add `widget` and support for RichText field in @types component.
@ebrehault
- Add fieldsets in @types @ebrehault
Bugfixes:
- Disable automatic CSRF protection for @login and @login-renew
endpoints: If persisting tokens server-side is enabled, those
requests need to be allowed to cause DB writes. @lgraf
- Documentation: Fixed parameter 'data' to JSON format in JWT
Authentication documentation @lccruz
- Tests: Fail tests on uncommitted changes to docs/source/\_json/
@lgraf
- Tests: Use `freezegun` to freeze hard to control timestamps in
response dumps used for documentation. @lgraf
- Tests: Limit available languages to a small set to avoid excessive
language lists in response dumps used for documentation. @lgraf
## 1.0a1 (2016-07-14)
- Initial release. @timo, @buchi, @lukasgraf, et al.
Raw data
{
"_id": null,
"home_page": "https://github.com/plone/plone.restapi/",
"name": "plone.restapi",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "plone rest restful hypermedia api json",
"author": "Timo Stollenwerk (kitconcept GmbH)",
"author_email": "tisto@plone.org",
"download_url": "https://files.pythonhosted.org/packages/77/57/f426be2a333d75b6d2e56f6b0b4cc02905ba502782ace731b0701a67849a/plone_restapi-9.15.2.tar.gz",
"platform": null,
"description": "[](https://github.com/plone/plone.restapi/actions/workflows/tests.yml)\n\n[](https://coveralls.io/github/plone/plone.restapi?branch=main)\n\n[](https://plonerestapi.readthedocs.io/en/latest/)\n\n[](https://pypi.org/project/plone.restapi/)\n\n# Introduction\n\n`plone.restapi` is a RESTful hypermedia API for Plone.\n\n# Documentation\n\n<https://plonerestapi.readthedocs.io/en/latest/>\n\n# Getting started\n\nA live demo of Plone 6 with the latest `plone.restapi` release is\navailable at:\n\n<https://demo.plone.org/>\n\nAn example GET request on the portal root is the following.\n\n```shell\ncurl -i https://demo.plone.org/++api++ -H \"Accept: application/json\"\n```\n\nAn example POST request to create a new document is the following.\n\n```shell\ncurl -i -X POST https://demo.plone.org/++api++ \\\n -H \"Accept: application/json\" \\\n -H \"Content-Type: application/json\" \\\n --data-raw '{\"@type\": \"Document\", \"title\": \"My Document\"}' \\\n --user admin:admin\n```\n\n> [!NOTE] \n> You will need some kind of API browser application to explore the API.\n> You will also need to first obtain a basic authorization token.\n> We recommend using [Postman](https://www.postman.com/) which makes it\n> easier to obtain a basic authorization token.\n\n# Installation\n\n`plone.restapi` is included in Plone 6 if you install the `Plone` package.\n\nIf it is not installed, add it using requirements.txt or as a dependency of another package.\n\n# Python / Plone Compatibility\n\nplone.restapi 9 requires Python 3 and works with Plone 5.2 and Plone\n6.x.\n\nplone.restapi 8 entered \"maintenance\" mode with the release of\nplone.restapi 9 (September 2023). It is not planned to backport any\nfeatures to this version and we highly recommend to upgrade to\nplone.restapi 9.\n\nPython versions that reached their\n[end-of-life](https://devguide.python.org/versions/), including Python\n3.6 and Python 3.7, are not supported any longer.\n\nUse plone.restapi 7 if you are running Python 2.7 or Plone versions\nbelow 5.2.\n\n# Contribute\n\n- Issue Tracker: <https://github.com/plone/plone.restapi/issues>\n- Source Code: <https://github.com/plone/plone.restapi>\n- Documentation: <https://plonerestapi.readthedocs.io/en/latest>\n\n# Examples\n\n`plone.restapi` has been used in production since its first alpha\nrelease. It can be seen in action at the following sites:\n\n- Zeelandia GmbH & Co. KG: <https://www.zeelandia.de> (by kitconcept\n GmbH)\n- VHS-Ehrenamtsportal: <https://vhs-ehrenamtsportal.de> (by kitconcept\n GmbH)\n- German Physical Society: <https://www.dpg-physik.de> (by kitconcept\n GmbH)\n\n# Support\n\nIf you are having issues, please let us know via the [issue\ntracker](https://github.com/plone/plone.restapi/issues).\n\nIf you require professional support, here is a list of Plone solution\nproviders that contributed significantly to `plone.restapi` in the past.\n\n- [kitconcept GmbH](https://kitconcept.com) (Germany)\n- [4teamwork](https://www.4teamwork.ch/en) (Switzerland)\n- [CodeSyntax](https://www.codesyntax.com/en) (Spain)\n\n# License\n\nThe project is licensed under the GPLv2.\n\n# Contributors\n\n<!--\nNote:\nPlace names and roles of the people who contribute to this package in\nthis file, one to a line, like so:\n-->\n\n- Timo Stollenwerk, Original Author\n- Thomas Buchberger\n- Lukas Graf\n- V\u00edctor Fern\u00e1ndez de Alba\n- Paul Roeland\n- Mikel Larreategi\n- Eric Brehault\n- Andreas Zeidler\n- Carsten Senger\n- Tom Gross\n- Roel Bruggink\n- Yann Fouillat, alias Gagaro\n- Sune Br\u00f8ndum W\u00f8ller\n- Philippe Gross\n- Andrea Cecchi\n- Luca Bellenghi\n- Giacomo Monari\n- Alin Voinea\n- Rodrigo Ferreira de Souza\n- Jens W. Klein\n- Maurits van Rees\n- Gil Forcada Codinachs\n- David Glick\n- Philip Bauer\n- Tiberiu Ichim\n- \u00c9rico Andrei\n- Jonas Baumann\n- C\u00e9dric Messiant\n- H\u00e9ctor Velarde\n- Johannes Raggam\n- Simone Deponti\n- Wesley Barroso Lopes\n- Elio Schmutz\n- Gauthier Bastien\n- Katja S\u00fcss\n- Jon Pentland\n- Leonardo J. Caballero G.\n- Steve Piercy\n\n# Changelog\n\n<!--\n You should *NOT* be adding new change log entries to this file.\n You should create a file in the news directory instead.\n For helpful instructions, please see:\n https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst\n-->\n\n<!-- towncrier release notes start -->\n\n## 9.15.2 (2025-08-22)\n\n\n### Bug fixes:\n\n- Serialize the `layout` of a Plone Site if it is a Plone 6 site. @erral #1939\n- When deserializing datetimes into an empty field, store them as timezone-aware datetimes. @davisagli \n\n## 9.15.1 (2025-06-16)\n\n\n### Bug fixes:\n\n- Optimize `@navroot` endpoint: fields `items` and `@components` are no longer computed/returned. @pgrunewald #1841\n- In the `@search` service, fix an `AttributeError` that could occur with bad input. @davisagli #1898\n- In the `@controlpanels` service, removed empty `data` and `schema` from special control panels that do not use a schema (`dexterity-types` and `rules`). @davisagli #1927\n\n## 9.15.0 (2025-06-10)\n\n\n### New features:\n\n- Include all summary fields when serializing `next_item` and `previous_item`. @davisagli \n\n\n### Bug fixes:\n\n- In the `RelationListFieldSerializer`, fix `list` used a default argument. @ale-rt #1922\n\n\n### Documentation:\n\n- Fix contributor documentation. @davisagli \n\n## 9.14.0 (2025-05-12)\n\n\n### New features:\n\n- `@site` service: Add a way for add-ons to add additional data using an `ISiteEndpointExpander` adapter. @davisagli #1921\n\n## 9.13.5 (2025-04-27)\n\n\n### Bug fixes:\n\n- Fix exposing protected fields in schema serializer.\n [maethu] #1916\n- Fix `AttributeError` when updating the default blocks layout for a content type. @nileshgulia, @davisagli #1917\n\n\n### Documentation:\n\n- Pin plone-sphinx-theme to prepare for PLIP 4097. See https://github.com/plone/Products.CMFPlone/issues/4097. @stevepiercy #4097\n\n## 9.13.4 (2025-04-23)\n\n\n### Bug fixes:\n\n- Micro-optimization for validation in vocabulary serializer. @davisagli #1906\n- In the teaser block serializer, don't include data from the target item if the current user doesn't have View permission on it. @davisagli #1911\n- Avoid finding control panel adapters when looking up normal views. @rohnsha0, @davisagli #4156\n\n\n### Internal:\n\n- Add tests for inherit service. @ujsquared #1897\n\n## 9.13.3 (2025-03-25)\n\n\n### Bug fixes:\n\n- In the `@inherit` endpoint, don't nest results under `inherit` unless it is used as an expander. @davisagli #1899\n\n## 9.13.2 (2025-03-17)\n\n\n### Bug fixes:\n\n- Fix deserializing datetime fields when timezone naive values are stored. @petschki #1891\n- Fix imports from packaging.version. @davisagli #1893\n- Fix `@inherit` service to serialize data with the correct context. @davisagli #1895\n\n## 9.13.1 (2025-03-14)\n\n\n### Bug fixes:\n\n- Fix wheel compatibility with older versions of setuptools and buildout. @davisagli #1890\n\n## 9.13.0 (2025-03-13)\n\n\n### New features:\n\n- Apply block serialization and deserialization transforms also to JSON fields.\n This includes converting internal URLs to resolveuid URLs. @davisagli #1886\n- Add a new endpoint, `@inherit`, for getting values from behaviors inherited from ancestors in the object hierarchy. @davisagli #1887\n\n\n### Bug fixes:\n\n- In the `@users` add endpoint, ignore the `sendPasswordReset` parameter if self registration is enabled. @MrTango #1888\n\n\n### Internal:\n\n- Restore configuration of Vale, and upgrade to its latest version. @stevepiercy #1885\n\n## 9.12.0 (2025-03-10)\n\n\n### New features:\n\n- Add a `@userschema/registration` endpoint to get the fields for the registration form. @erral #1873\n- Added `multilingual` feature to @site endpoint. @sneridagh #1884\n\n\n### Bug fixes:\n\n- Save effective and expires date into Plone with right hours (according to current timezone) @cekk #1192\n- Correct the HTTP response status code to `200 OK` from `201 Create` for the `aliases` GET service. @Faakhir30 #1862\n- Do not hardcode `show_inactive` in search; let `Products.CMFPlone` handle that. @gyst #1879\n- Replace `pkg_resources` with `importlib.metadata`/`importlib.resources`/`packaging` @gforcada #4126\n\n\n### Internal:\n\n- Update configuration files @plone \n\n## 9.11.0 (2025-01-31)\n\nNew features:\n\n- Support working copies of the Plone Site. This feature is available\n when using `plone.app.iterate` 6.1.0 or later. @wesleybl (#1823)\n\n## 9.10.0 (2025-01-27)\n\nNew features:\n\n- Add a `@login` endpoint to get external login services' links.\n @erral (#1757)\n- In the `@registry` endpoint, added support for filtering the list of\n registry records. @Faakhir30 (#1861)\n\nBug fixes:\n\n- Changed bad int inputs into 500 Exceptions to 400 BadRequest so they\n can be filtered out of logs more easily. @djay (#1855)\n- Handle TypeError on querystringsearch as BadRequest. @djay (#1857)\n- Add parse_int to handle all cases of BadRequests from ints passed\n in. @djay (#1858)\n- In the `@contextnavigation` endpoint, return `\"icon\": null` for\n Files with a mimetype not found in the `content_type_registry`,\n instead of raising `TypeError`. @mamico (#1864)\n- In the `@locking` endpoint, fixed edge cases where the user who owns\n the lock was not found correctly. @mamico (#1867)\n- Prevent deprecation warnings. @mauritsvanrees (#4090)\n\nInternal:\n\n- Update CI. @davisagli (#1685)\n\n## 9.9.0 (2024-12-18)\n\nNew features:\n\n- When a Link content item is linked by UID, resolve its URL as the\n linked target URL for anonymous users. @cekk (#1847)\n\nBug fixes:\n\n- Fix resolving paths in deserializer if the target was moved in the\n same request. @cekk (#1848)\n- Make slate block linkintegrity checking more robust in case data\n isn't in the expected format. @cekk (#1849)\n- Optimized performance of DexterityObjectPrimaryFieldTarget adapter.\n @maurits (#1851)\n\nInternal:\n\n- Fix time-dependence of tests. @davisagli (#1850)\n\n## 9.8.5 (2024-11-25)\n\nBug fixes:\n\n- Fix log in after changing email when \"email as login\" is enabled\n @erral (#1835)\n- Fix tests after #1839 and plone.app.event#411 @erral (#1844)\n- Do not change request during relation fields serialization @cekk\n (#1845)\n\nInternal:\n\n- Test that recurrence serialization provides correct data @erral\n (#1809)\n- Additional tests to login name changes @erral (#1840)\n\nDocumentation:\n\n- `html_use_opensearch` value must not have a trailing slash. Clean up\n comments. @stevepiercy (#1846)\n\n## 9.8.4 (2024-11-05)\n\nBug fixes:\n\n- URL Management control panel: Fix error handling in CSV upload.\n @davisagli (#1837)\n\n## 9.8.3 (2024-11-01)\n\nBug fixes:\n\n- Fixed Plone Site serialization when there is a field with\n read_permission set. @ericof (#1830)\n\n## 9.8.2 (2024-10-30)\n\nBug fixes:\n\n- `@search` service: Remove parentheses from search query. @tedw87\n (#1828)\n\n## 9.8.1 (2024-10-23)\n\nBug fixes:\n\n- Fix `ComponentLookupError` for\n `Products.CMFPlone.ManagePortalAliases` permission, which could\n happen depending on package load order. @davisagli (#1827)\n\n## 9.8.0 (2024-10-23)\n\nNew features:\n\n- Added create and fetch aliases in CSV format. @Faakhir30 (#1812)\n- Site service: Indicate whether the site supports filtering URL\n aliases by date. @davisagli (#1826)\n\nBug fixes:\n\n- Fix error getting allow_discussion value when p.a.discussion is not\n activated. @maurits (#1808)\n- Fix incorrect condition for `show_excluded_items` setting in the\n `@navigation` API. @mamico (#1816)\n- Fix response of `RelationListFieldSerializer` by filtering out\n invalid items. @Faakhir30 (#1818)\n- Aliases endpoint: Use \"Manage Portal Aliases\" and \"Manage Content\n Aliases\" permissions. @jackahl (#1820)\n\nDocumentation:\n\n- Use Plone Sphinx Theme for documentation. Build docs when there are\n changes to http-examples. @stevepiercy (#1815)\n- Fixed spelling of prerequisites. @stevepiercy (#1822)\n\n## 9.7.2 (2024-09-05)\n\nBug fixes:\n\n- Fixed Dexterity content serializer: Return an empty object for\n `next_item` and `previous_item` unless the parent has next/previous\n support enabled. @JeffersonBledsoe, @davisagli (#1799)\n- Fixed implementation of the `jwt_auth` plugin. It now can be added,\n and its properties, `use_keyring` and `store_tokens`, can be\n updated. @sauzher (#1802)\n\nInternal:\n\n- Explicitly globally disable comments in the tests that need it.\n @maurits (#244)\n\nDocumentation:\n\n- Update contributing docs for Plone 6, and switch from Netlify to\n Read the Docs for pull request previews. @stevepiercy (#1798)\n\n## 9.7.1 (2024-06-29)\n\nBug fixes:\n\n- Remove use of `portal_properties` in context navigation.\n Theoretically we checked\n `portal_properties.site_properties.sortAttribute`. @maurits\n (#125)\n\nInternal:\n\n- Update test-no-uncommitted-doc-changes to run on Python 3.12 instead\n of 3.9. @tisto, @davisagli (#1794)\n\n## 9.7.0 (2024-06-15)\n\nNew features:\n\n- Add cache rules for `@site` and `@navroot`. @mamico (#1779)\n- Added TeaserBlockSerializer which updates the contents of a teaser\n block from its target if the block has `\"overwrite\":\nfalse`. @pbauer, @davisagli (#1788)\n\nBug fixes:\n\n- Returns an error message when an Invalid error occurs when\n validating a controlpanel field. Also translates the message.\n @wesleybl (#1771)\n- Users service: Fixed edge case AttributeError if a user is\n enumerated but doesn't actually exist. @davisagli (#1775)\n- Add Plone 6.1 support to classifiers and test against it. @tisto\n (#1780)\n- Make plone.app.discussion an optional dependency (core add-on).\n @jensens (#1781)\n- Fix require plone.app.iterate on test extras. @jensens (#1782)\n- Fix require plone.app.upgrade on test extras. @jensens (#1783)\n\nDocumentation:\n\n- Fix event start & end timezone in documentation examples.\n @davisagli (#1776)\n- Move sharing endpoint docs to the correct section. @davisagli\n (#1778)\n\n## 9.6.1 (2024-04-25)\n\nBug fixes:\n\n- Fixed password reset issue by replacing `username` with\n `target_user` to correctly authenticate using email. @Hrittik20\n (#943)\n- In Plone 6, uses `plone.textindexer` to add block texts to the\n SearchableText index, instead of `plone.indexer`. This ensures that\n behaviors can add fields to SearchableText with `plone.textindexer`.\n @wesleybl (#1744)\n- Use the `mode` parameter instead of `direction` when calling the\n `scale` method. Also change value to `scale`. @wesleybl (#1758)\n- image_scales in serializer are returned as json_compatible format.\n @cekk (#1772)\n\nInternal:\n\n- Test to ensure that the scale hash of an image is the same as the\n hash of the image block with this image. @sneridagh (#1716)\n- Bump all the versions in GitHub workflows. @stevepiercy (#1762)\n\n## 9.6.0 (2024-03-03)\n\nNew features:\n\n- Add available languages information to the @site endpoint. @erral\n (#1738)\n- Add the site timezone to the @site endpoint return result.\n @folix-01 (#1749)\n\nInternal:\n\n- Use last version of Python 3.12 in tests.\n <https://github.com/python/cpython/issues/113267> has been fixed.\n @wesleybl (#1740)\n\n## 9.5.0 (2024-02-27)\n\nBug fixes:\n\n- Fixed the permission check for adding users to groups and removing\n users from groups, so that it is allowed for users with the Site\n Administrator role. @wesleybl (#1750)\n- Enhanced Makefile paths to address whitespace compatibility issues.\n @Vivek-04022001 (#1753)\n\n## 9.4.2 (2024-02-16)\n\nBug fixes:\n\n- Fixed `allow_discussion` serialization for the Plone Site, to return\n a boolean like other content types. @Akshat2Jain (#1674)\n- Fixed an edge case in the blocks resolveuid transforms with a\n trailing slash before a fragment. @sneridagh (#1748)\n\nInternal:\n\n- Remove debug-exceptions = on from the buildout instance section.\n @wesleybl (#1734)\n\n## 9.4.1 (2024-02-02)\n\nBug fixes:\n\n- Fixed the logic for converting public URLs to and from internal\n UID-based URLs. Now if the URL includes a fragment, it is preserved.\n @sneridagh (#1746)\n\n## 9.4.0 (2024-01-26)\n\nNew features:\n\n- Translate validation error messages in the deserializer. @wesleybl\n (#1742)\n\n## 9.3.0 (2024-01-10)\n\nNew features:\n\n- Give Site Administrator permission to manage users. To make this\n possible, we now check the \"plone.app.controlpanel.UsersAndGroups\"\n permission instead of \"cmf.ManagePortal\" in a lot of operations in\n the users and groups endpoints. @wesleybl (#1712)\n\nInternal:\n\n- Use Python 3.12.0 in tests to work around\n <https://github.com/python/cpython/issues/113267>. @wesleybl\n (#1740)\n\n## 9.2.1 (2023-12-14)\n\nBug fixes:\n\n- Remove wrong `preview_image_link` addition from blocks\n (de)serializers. @sneridagh (#1737)\n\n## 9.2.0 (2023-11-23)\n\nNew features:\n\n- Added preview_image and preview_image_link to the list of smart\n fields for resolveuid and link integrity. @sneridagh (#1735)\n\nInternal:\n\n- Does not test Python 3.7. @wesleybl (#1732)\n- Use plone.recipe.precompiler to generate mo files to test.\n @wesleybl (#1733)\n\n## 9.1.2 (2023-11-04)\n\nBug fixes:\n\n- Fix jwt_auth extractCredentials plugin to only try to read\n credentials from the request body if there is a `Content-Type:\napplication/json` header. @davisagli (#1728)\n- Temporarily disable form memory limit checking for files and images.\n This fixes a regression due to a low Zope form memory limit of 1MB\n used since Plone 6.0.7. See [CMFPlone issue\n 3848](https://github.com/plone/Products.CMFPlone/issues/3848) and\n @Zope PR 1142(https://github.com/zopefoundation/Zope/pull/1142).\n @maurits (#3848)\n\nDocumentation:\n\n- Remove regular expression from `sphinx-copybutton` configuration,\n now that `linenos` are excluded by default. @stevepiercy (#1725)\n\n## 9.1.1 (2023-10-28)\n\nBug fixes:\n\n- Be more strict when checking if mimetype is allowed to be displayed\n inline. @maurits (#1167)\n\n## 9.1.0 (2023-10-18)\n\nNew features:\n\n- Add support for Python 3.12. @tisto (#1722)\n\nBug fixes:\n\n- Treat sub-items like items in `@linkintegrity` endpoint. @jaroel\n (#1714)\n- Limits the use of multilingual services only if multilingual is\n actually installed. @mamico (#1723)\n\nInternal:\n\n- Remove unused code. @davisagli (#1703)\n- Replace deprecated assert methods. @gforcada (#1719)\n- Drop, already unused plone.app.robotframework test. @gforcada\n (#1720)\n\nDocumentation:\n\n- Fix redirect for <https://json-schema.org/>. @stevepiercy (#1718)\n\n## 9.0.0 (2023-09-23)\n\nBreaking changes:\n\n- Remove deprecated @unlock, @refresh-lock endpoints @avoinea\n (#1235)\n- Remove `plone.tiles` and the `@tiles` endpoint. @tisto (#1308)\n- Change the @linkintegrity endpoint to add `items_total`, the number\n of contained items which would be deleted. @davisagli, @danalvrz,\n @pgrunewald (#1636)\n- The default branch was renamed from `master` to `main`. @tisto,\n @davisagli (#1695)\n- Drop support for Python 3.7. Set python_requires to >= 3.8 @tisto\n (#1709)\n\nNew features:\n\n- Add Spanish translation @macagua (#1684)\n- Add support for getting the `/@querystring` endpoint in a specific\n context. @davisagli (#1704)\n\nBug fixes:\n\n- Fix stored XSS (Cross Site Scripting) for SVG image in user\n portrait. Done by forcing a download instead of displaying inline.\n Normal accessing via an image tag is not affected and is safe. See\n [security\n advisory](https://github.com/plone/plone.restapi/security/advisories/GHSA-hc5c-r8m5-2gfh).\n @maurits (#1)\n- Use incoming request to produce location for `@tus-upload`.\n @instification (#1570)\n- Undeprecate comma separated expansion parameters (that were\n deprecated in plone.restapi 8) @tisto (#1696)\n- Undeprecate token parameter from vocabularies endpoint @tisto\n (#1697)\n- Improve RESOLVEUID_RE regexp to catch also paths generated by Link\n content-types. @cekk (#1699)\n\nInternal:\n\n- Upgrade buildout: Plone 6.0.6 -> 6.0.7 and Plone 5.2.12 -> 5.2.14\n @tisto (#1706)\n\nDocumentation:\n\n- Added translation code through expansion. @Akshat2Jain (#1374)\n- Restores formatting and fixes some MyST syntax from #1689.\n @stevepiercy (#1691)\n- Documentation fixes for #1599. @stevepiercy (#1692)\n- Fix linkcheckbroken 301 redirect to <https://www.4teamwork.ch/en>.\n @stevepiercy (#1693)\n- Polish docs for v9 release. @stevepiercy (#1698)\n\n## 8.43.0 (2023-08-23)\n\nNew features:\n\n- Allow passing additional parameters to the delete users endpoint to\n request not to delete local roles and memberareas @erral (#1598)\n\n## 8.42.1 (2023-08-23)\n\nBug fixes:\n\n- Fix broken relations info. @ksuess (#1673)\n\nInternal:\n\n- Fix test cleanup. @davisagli (#1680)\n\nDocumentation:\n\n- Move expansion docs from endpoints to usage, and add a list of all\n expandable components. Fixes #1677. @stevepiercy (#1678)\n\n## 8.42.0 (2023-07-17)\n\nNew features:\n\n- When serializing blocks, `image_scales` is now added to blocks that\n contain a resolveuid-based `url`. When deserializing blocks,\n `image_scales` is removed. @davisagli (#1642)\n\nBug fixes:\n\n- Remove the hard code dependency by plone.app.multilingual, use it\n conditionally instead @@folix-01 (#1639)\n- Fix timezone of dates for revisions in the `@history` service.\n @davisagli (#1647)\n- Fix types expander in root for Plone 5.2 (for non-Dexterity Plone\n Site Root) @sneridagh (#1669)\n\nInternal:\n\n- Updated package installation to use constraints.txt for black\n package, ensuring compatibility and consistent versions.\n @Akshat2Jain (#1671)\n- Update Makefile and buildout to use Plone 6.0.6. @davisagli (#1672)\n\nDocumentation:\n\n- added instruction to ensure consistent code formatting.\n @Akshat2Jain (#1664)\n\n## 8.41.0 (2023-06-29)\n\nNew features:\n\n- Add `visit_blocks` util for finding all nested blocks. @davisagli\n (#1648)\n\nBug fixes:\n\n- Fix path2uid method, to handle suffix with non-traversable objects.\n @cekk @mamico (#1649)\n\nInternal:\n\n- Allow GHA tests to run on PRs from forks. @Akshat2Jain (#1656)\n\nDocumentation:\n\n- Fix html_meta tags, and remove stray spaces that prevented the\n glossary from rendering. @stevepiercy (#1663)\n\n## 8.40.0 (2023-06-06)\n\nNew features:\n\n- Added `@site` and `@navroot` endpoints. @erral (#1464)\n\nBug fixes:\n\n- Validate input to the `@querystring-search` service. Input which\n can't be processed now results in a 400 response instead of 500.\n @davisagli (#1653)\n\n## 8.39.2 (2023-06-01)\n\nBug fixes:\n\n- Fix content serializer with an old version of an item that was\n renamed. @davisagli (#1651)\n\n## 8.39.1 (2023-05-30)\n\nBug fixes:\n\n- Fix possible startup error by explicitly loading\n `plone.app.contentrules` zcml. Also: only load code related to\n contentrules when this package is available. @maurits (#1644)\n\n## 8.39.0 (2023-05-23)\n\nNew features:\n\n- Create relations service. Query, add, delete. @ksuess (#1432)\n\n## 8.38.0 (2023-05-19)\n\nNew features:\n\n- Add portal_type title (`type_title`) to content response @razvanMiu\n @nileshgulia1 (#1355)\n- Added support for nested schemas with resolveuid deserializer\n @JeffersonBledsoe (#1595)\n\nBug fixes:\n\n- Fix missing metadata_fields in Response via GET Request to Endpoint\n /@querystring-search @1letter (#1628)\n- Respect Password Policy @tschorr (#1630)\n\nInternal:\n\n- Update buildout and requirements to Plone-6.0.4 @1letter (#1632)\n\n## 8.37.0 (2023-04-19)\n\nNew features:\n\n- Apply a cache ruleset to the /@querystring-search endpoint.\n @ericof (#1626)\n\n## 8.36.1 (2023-04-17)\n\nBug fixes:\n\n- Fix bugs in handling parameters when the `@querystringsearch`\n endpoint is called with the GET method. @davisagli (#1621)\n\n## 8.36.0 (2023-04-07)\n\nNew features:\n\n- Add UID to relationvalue_converter summary. @ksuess (#1605)\n- Add querystring_search get method. @robgietema (#1616)\n\nBug fixes:\n\n- Fix a bunch of deprecation warnings in a Plone 5.2 compatible way.\n Applied proper isort. Fixed unclosed file issues in a test. Added\n Python 3.11 to test matrix. @jensens (#1606)\n- No longer declare support for Python 3.6 (it was already not\n tested). @davisagli (#1615)\n- Fixed encoding issue on Python 3 for some mail servers. This could\n result in missing characters in an email body. @maurits (#3754)\n\n## 8.35.3 (2023-03-23)\n\nBug fixes:\n\n- Fix UnboundLocalError in RelationChoice deserializer. @davisagli\n (#1600)\n\nInternal:\n\n- Fixed tests in combination with newer `plone.app.z3cform`.\n @maurits (#162)\n\nDocumentation:\n\n- Update intersphinx_mapping for training @ksuess (#1596)\n\n## 8.35.2 (2023-03-10)\n\nBug fixes:\n\n- Fix missing `Decimal` field deserializer. @jensens (#903)\n- Fix translation of the error message for a password that is too\n short while adding a user. @davisagli (#4395)\n\n## 8.35.1 (2023-03-02)\n\nBug fixes:\n\n- Provide slateTable block serializer/deserializer to properly convert\n URLs to uids (#1590)\n\n## 8.35.0 (2023-02-18)\n\nNew features:\n\n- Request of own user data provides joined groups @ksuess (#1581)\n- Implement IPurgePaths for RestAPI traversal (++api++) @ericof\n (#1587)\n\n## 8.34.0 (2023-02-06)\n\nNew features:\n\n- Implement IRuleAction and IRuleCondition schema serialization in\n `@controlpanels/content-rules/` endpoint. @ericof (#1579)\n\nBug fixes:\n\n- Fix Plone Site serialization not returning the review_state in\n Plone 6. @ericof (#1574)\n- Fix bug with registry service that would not support tuple records.\n @ericof (#1575)\n\n## 8.33.3 (2023-01-29)\n\nBug fixes:\n\n- Fix bug where the `@login` endpoint did not set the correct `__ac`\n cookie for Zope users. @davisagli (#1572)\n\n## 8.33.2 (2023-01-19)\n\nBug fixes:\n\n- Fix context navigation endpoint @contextnavigation to serve the\n navigation tree based on depth (bottomLevel). @andreiggr (#1562)\n- Fix tests for `zope.schema >= 7.0.0` @petschki\n (#1567)\n\n## 8.33.1 (2023-01-10)\n\nBug fixes:\n\n- Fix blocks linkintegrity to find some links in `url` and `href`\n fields that were previously ignored. @davisagli (#1565)\n\nDocumentation:\n\n- Pin Sphinx<5,>=3 due to sphinx-book-theme 0.3.3 requirement.\n @stevepiercy (#1563)\n\n## 8.33.0 (2022-12-29)\n\nNew features:\n\n- Internationalization of `@users` endpoint error messages.\n @wesleybl (#1548)\n- Add pt_BR translation. @wesleybl (#1557)\n- Add fr translation. @jimbiscuit (#1560)\n\nBug fixes:\n\n- Fix mistaken warnings about sort_on and sort_order parameters in the\n @query service. @davisagli (#1558)\n\nDocumentation:\n\n- Update links to the demo site in the README. @davisagli (#1555)\n- Fix ogp_image URL. @stevepiercy (#1556)\n- Update makefile to use Vale for spell, grammar, and style checking.\n Fix linkcheckbroken to return the correct exit code for broken\n links. Prepare links to use 5.docs.plone.org in preparation for\n Plone 6 docs launch. @stevepiercy (#1561)\n\n## 8.32.6 (2022-12-10)\n\nBug fixes:\n\n- Fix an error when saving content with a slate block that includes an\n empty link. @davisagli (#1553)\n\n## 8.32.5 (2022-12-08)\n\nBug fixes:\n\n- Fix timezone for Locking creation date @iFlameing (#1551)\n\n## 8.32.4 (2022-12-01)\n\nBug fixes:\n\n- Allow multiple values for sort_on and sort_order parameters in\n @search @erral (#1532)\n- Mock addon versions in documentation @erral (#1538)\n- Add \"UID\" to content type endpoint response of \"Plone Site\"\n @ksuess (#1546)\n\n## 8.32.3 (2022-11-22)\n\nBug fixes:\n\n- Fortify user api against missing user data (None) @reebalazs\n (#1534)\n\n## 8.32.2 (2022-11-18)\n\nBug fixes:\n\n- Fix AttributeError for `REQUEST` in linkintegrity when pasting\n nested content. @maurits (#1536)\n\n## 8.32.1 (2022-11-14)\n\nBug fixes:\n\n- Fix time to be returned with a timezone specifier in history\n endpoint @reebalazs (#1530)\n\n## 8.32.0 (2022-11-03)\n\nNew features:\n\n- Add @upgrade endpoint to preview or run an upgrade of a Plone\n instance @ericof (#1525)\n\nBug fixes:\n\n- Added url field to Actions (#817)\n- Updated `statictime` tests following changes to `p.a.discussion`\n (see <https://github.com/plone/plone.app.discussion/pull/204>).\n @instification (#1520)\n- Updated `@portrait` endpoint to use sanitized user id.\n @instification (#1524)\n\n## 8.31.0 (2022-10-20)\n\nNew features:\n\n- Added @rules endpoint with GET/POST/DELETE/PATCH @valipod\n (#1397)\n- Add link integrity support for slate blocks @sneridagh (#1522)\n\nBug fixes:\n\n- New behavior `volto.blocks.editable.layout` to be used with Volto DX\n Editable Layout @avoinea (#1476)\n- Fixed the `description` field not being included in fieldsets\n @JeffersonBledsoe (#1499)\n- Fix passwords used in tests. @davisagli (#1513)\n\nInternal:\n\n- Remove plone.recipe.codeanalysis from buildout. @tisto (#1507)\n- Don't use -latest when installing Plone for tests. @tisto\n (#1512)\n- Cache buildout eggs between Github Actions runs. @davisagli\n (#1515)\n- Use specific version of Plone in requirements.txt. Remove\n unnecessary pins. @wesleybl (#1516)\n- Remove code-analysis from Makefile. @wesleybl (#1517)\n\nDocumentation:\n\n- Merge glossary terms into main plone/documentation. @stevepiercy\n (#1508)\n- Fix linkintegrity documentation, add missing a response file, and\n use MyST syntax. @stevepiercy (#1509)\n- Add Matomo Analytics, Remove Google Analytics. @stevepiercy\n (#1518)\n- Trigger a new deploy core Plone documentation when Volto\n documentation is updated @esteele (#1519)\n\n## 8.30.0 (2022-10-02)\n\nNew features:\n\n- Add link integrity support for blocks @cekk (#953)\n\nInternal:\n\n- Plone 6 as first class citizen in builds and CI. Remove\n non-supported Python versions. Add 3.10 for Plone 6. @sneridagh\n (#1503)\n\n## 8.29.0 (2022-10-01)\n\nNew features:\n\n- Add @userschema endpoint for getting the user schema. @sneridagh\n (#706)\n- Add @transactions endpoint to fetch transactions that have been\n made through the Plone website. @@MdSahil-oss (#1505)\n\nBug fixes:\n\n- The `@controlpanels/usergroup` does not work for Plone 5 since it\n does not exist there. Bring back the missing `title` just for\n Plone 5. @sneridagh (#1501)\n\n## 8.28.0 (2022-09-29)\n\nNew features:\n\n- Improve performance of serializing image scales. @davisagli\n (#1498)\n\nBug fixes:\n\n- Revert \"When an id is specified explicitly in the content POST\n endpoint, return a 400 error response if it is invalid or\n unavailable.\" The fix was incorrect and disallowing ids that should\n be allowed. @davisagli (#1488)\n- Increase the length of passwords used in tests. @davisagli\n (#1492)\n- Use json_compatible when serializing users in @users endpoint\n @erral (#1493)\n\nDocumentation:\n\n- Reorganize navigation. @stevepiercy (#1486)\n- Fix Google redirect and hyphenation of word. @stevepiercy (#1495)\n\n## 8.27.0 (2022-09-14)\n\nNew features:\n\n- Added @aliases endpoint with GET/POST/DELETE @iulianpetchesi\n (#1393)\n\nBug fixes:\n\n- When an `id` is specified explicitly in the content POST endpoint,\n return a 400 error response if it is invalid or unavailable.\n @davisagli (#1487)\n\n## 8.26.0 (2022-09-10)\n\nNew features:\n\n- Add @portrait endpoint @sneridagh (#1480)\n\nBug fixes:\n\n- Add portrait to the docs toctree to fix build warning.\n @stevepiercy (#1485)\n\n## 8.25.1 (2022-09-02)\n\nBug fixes:\n\n- Fix the category of the 'Users and groups settings' controlpanel\n adapter @sneridagh (#1482)\n\n## 8.25.0 (2022-08-31)\n\nNew features:\n\n- Add support for importing profiles in @addons endpoint\n @sneridagh (#1479)\n\nBug fixes:\n\n- Fix @registry endpoint Object of type datetime is not JSON\n serializable @iulianpetchesi (#1189)\n- Fixed small documentation for error code 404 @rohnsha (#1430)\n- Handle subblocks in site root serializer for Plone 5.x @erral\n (#1449)\n- Do not hard depend on `plone.app.iterate`. It is not an direct core\n package and might not be available. @jensens (#1461)\n- Sanitise user id when checking for portrait @instification\n (#1466)\n\n## 8.24.1 (2022-08-04)\n\nBug fixes:\n\n- Fix of users endpoint for Membrane users. @ksuess (#1459)\n\n## 8.24.0 (2022-07-15)\n\nNew features:\n\n- Add support to search for fullname, email, id on the @users\n endpoint with \"?search=\" @ksuess (#1443)\n\nBug fixes:\n\n- Tests: add names to behaviors. @maurits (#169)\n\n## 8.23.0 (2022-06-23)\n\nNew features:\n\n- Include users data in groups while retrieving @groups\n @@nileshgulia1 (#1325)\n- Added 'View comments' and 'Reply to item' permission to\n discussion @@razvanMiu (#1327)\n- better error logging for term lookup errors @ajung (#1365)\n- Documentation was converted to MyST from reStructuredText.\n @stevepiercy (#1375)\n- Move caching rulesets to the ZCML where the endpoints are defined.\n @jensens (#1414)\n- List Users (@users): Add groups @ksuess List Users (@users):\n Support filtering by groups @ksuess (#1419)\n- Fix: Update group: Preserve title and description. @ksuess\n (#1424)\n- Add UsersGroupsSettings to set of control panels. @ksuess Move\n configlet UsersGroupsSettings to correct group (Volto control panel\n group \"Users and Groups\") @ksuess (#1436)\n\nBug fixes:\n\n- Test-only fix: normalize white space in html in some tests. Needed\n to not fail with newer plone.outputfilters. @maurits (#49)\n- Tests: patch unique url for scale in old or new way. This is only in\n serializer tests for images. @maurits (#57)\n- Make the PAS plugin compatible with `PyJWT` 1 and 2. [jensens,\n maurits] (#1193)\n- Fix tests for changes in displayed_types. See\n <https://github.com/plone/Products.CMFPlone/issues/3486> @pbauer\n (#1359)\n- Use JSON instead of JSON Schema for code samples. @stevepiercy\n (#1379)\n- Control panels and translations are supported in Plone 5 or greater.\n @stevepiercy (#1380)\n- Add html_meta tags and values for better SEO. @stevepiercy\n (#1382)\n- Update demo site to 6.demo.plone.org in README.rst. @stevepiercy\n (#1383)\n- Fixed timestamp calculation in history service on Python 3.10.\n @maurits (#1391)\n- Fix empty .resp in docs of PATCH controlpanel (#1396)\n- Translate addon titles on @addon controlpanel @erral (#1412)\n- Do not break path2uid with some edge-cases. @cekk (#1428)\n- Sort the roles in the user serializer. @maurits (#1452)\n\nInternal:\n\n- Add naming best practices for URL Attributes (singular vs plural) to\n the docs @tisto (#1295)\n- Enable Google Analytics 4 @stevepiercy (#1404)\n- fixed broken make task docs-linkcheckbroken (#1421)\n- Fix broken link to Python requests library docs. @stevepiercy\n (#1438)\n\n## 8.22.0 (2022-04-08)\n\nNew features:\n\n- Fix broken links. Add `make netlify` as a build target\n to preview changes to docs only. Prepare docs for import into main\n Plone documentation without significant changes. Use\n sphinx-book-them as theme. @stevepiercy (#1337)\n\nBug fixes:\n\n- Return proper error message when trying to create a content object\n with a wrong @type parameter. @tisto (#1188)\n- Fix the link in the GitHub menu item \"suggest edit\" to point to\n master branch. @stevepiercy (#1346)\n- Fix the redirect link for upc.edu to /en. @stevepiercy (#1351)\n- Fix testing matrix to use correct combos of Python and Plone.\n @maurits (#1356)\n\n## 8.21.2 (2022-02-21)\n\nBug fixes:\n\n- Restrict unlinking on Language Root Folders @sneridagh (#1332)\n\n## 8.21.1 (2022-02-21)\n\nBug fixes:\n\n- Improve handling of linking translations taking into account the\n state of the target. Restricting it completely for LRFs. Adding a\n transaction note to the action if it succeeds. @sneridagh (#1329)\n\n## 8.21.0 (2022-01-25)\n\nNew features:\n\n- Enhance @addons endpoint to return a list of upgradeable addons.\n @sneridagh (#1319)\n\n## 8.20.0 (2022-01-19)\n\nNew features:\n\n- Add support for DX Plone Site root in Plone 6. Remove blocks\n behavior hack for site root in Plone 6. @sneridagh (#1219)\n\n## 8.19.0 (2022-01-19)\n\nNew features:\n\n- Add support for multilingual language independent fields in field\n serialization @sneridagh (#1316)\n\nInternal:\n\n- Update build to Plone 6 alpha 2 @sneridagh (#1312)\n\n## 8.18.1 (2022-01-06)\n\nInternal:\n\n- Be permissive when testing the schema of the querystring endpoint\n @reebalazs (#1307)\n\n## 8.18.0 (2022-01-03)\n\nNew features:\n\n- Improve vocabulary endpoint when asking for a list of tokens adding\n resilience and deprecation warning @sneridagh (#1298)\n- Expandable params as list and deprecations for list as comma\n separated @sneridagh (#1300)\n\nBug fixes:\n\n- Do not break in recursive transition when children already are in\n destination state. @cekk (#1291)\n- Resolve the bulk of deprecation and resource leak warnings when\n running the full test suite. @rpatterson (#1302)\n\n## 8.17.0 (2021-12-21)\n\nNew features:\n\n- Enhance the vocabularies serializer to accept a list of tokens\n @sneridagh (#1294)\n\nBug fixes:\n\n- SearchableText indexer should maintain the order of the blocks\n @ericof (#1292)\n\n## 8.16.2 (2021-12-03)\n\nBug fixes:\n\n- Revert \"Improve support for missing_value and default story\"\n because it breaks multilingual @timo (#1289)\n\n## 8.16.1 (2021-11-30)\n\nBug fixes:\n\n- Improve support and meaning for `default` and `missing_value` in\n serializers/deserializers @sneridagh (#1282)\n\n## 8.16.0 (2021-11-29)\n\nNew features:\n\n- Enable table blocks indexing @cekk (#1281)\n\n## 8.15.3 (2021-11-29)\n\nBug fixes:\n\n- Types service: Do not consider TypeSchemaContext as a valid context\n @ericof (#1278)\n- Improve error status code in vocabularies endpoint refactor\n @sneridagh (#1284)\n\n## 8.15.2 (2021-11-24)\n\nBug fixes:\n\n- Adjust restrictions of vocabularies endpoint @ksuess (#1258)\n\n## 8.15.1 (2021-11-24)\n\nBug fixes:\n\n- Fix schema generation when /@types/ is used in a context. @ericof\n (#1271)\n\n## 8.15.0 (2021-11-23)\n\nNew features:\n\n- Return non-batched vocabularies given a query param `b_size=-1`\n @sneridagh (#1264)\n\nBug fixes:\n\n- Remove all traces of `Products.CMFQuickInstaller`. It was removed in\n Plone 5.2. BBB code was in `plone.app.upgrade` only. Plone with\n Restapi broke if\n `plone.app.upgrade` was not available, like when depending on `Products.CMFPlone`\n only. @jensens (#1267)\n- Fix installation of JWT PAS plugin with default profile. @jensens\n (#1269)\n\n## 8.14.0 (2021-11-11)\n\nNew features:\n\n- Add root (INavigationRoot) for the current object information in\n @translations endpoint @sneridagh (#1263)\n\n## 8.13.0 (2021-11-05)\n\nNew features:\n\n- Implement IJSONSummarySerializerMetadata allowing addons to extend\n the metadata returned by Summary serializer. @ericof (#1250)\n- Enable usage of metadata_fields also for POST calls @cekk (#1253)\n\n## 8.12.1 (2021-10-14)\n\nBug fixes:\n\n- Fix wrong @id attribute on the Plone root serialization when using\n the new ++api++ traversal (introduced in plone.rest 2.0.0)\n @sneridagh (#1248)\n\n## 8.12.0 (2021-10-11)\n\nNew features:\n\n- Add missing backend logout actions for the @logout endpoint (delete\n cookie, etc) @sneridagh (#1239)\n\n## 8.11.0 (2021-09-29)\n\nNew features:\n\n- Make masking specific validation errors configurable in DX\n DeserializeFromJson. @fredvd (#1211)\n\nBug fixes:\n\n- Normalize unstable generated behavior names in http-examples output.\n No longer hardcode port 55001 for the tests. @maurits (#1226)\n- Avoid `UnboundLocalError` or duplicates in results when using\n `@search` endpoint and a brain is orphan or a `KeyError` occurs\n during result serialization. @gbastien (#1231)\n\n## 8.10.0 (2021-09-24)\n\nNew features:\n\n- Update default allow_headers CORS to include: Lock-Token\n @@avoinea (#1181)\n- @types endpoint also returns if a content type is immediately\n addable in the given context @ericof (#1228)\n\nBug fixes:\n\n- Fix @users endpoint to use acl_users.searchResults instead of\n portal_membership.listMembers @ericof (#1199)\n- Fix testing of a checkout instead of a released package. @maurits\n (#1213)\n- Fix @users endpoint to return list of users ordered by fullname\n property @ericof (#1222)\n\n## 8.9.1 (2021-08-27)\n\nBug fixes:\n\n- Fixes values not being stored during content creation if value is\n equal to the one returned by defaultFactory. @ericof (#1207)\n\n## 8.9.0 (2021-08-25)\n\nNew features:\n\n- Refactor `@lock` endpoint based on CRUD operations @@avoinea\n (#1181)\n\n## 8.8.1 (2021-08-20)\n\nBug fixes:\n\n- Fix @vocabularies endpoint to search in translated term titles\n @sneridagh (#1204)\n\n## 8.8.0 (2021-08-20)\n\nNew features:\n\n- Add resolveuid support to Link content type `remoteUrl` field.\n @sneridagh (#1197)\n\nBug fixes:\n\n- Updated tests to not fail when the Plone Site root is dexterity.\n @jaroel (#2454)\n\n## 8.7.1 (2021-08-03)\n\nBug fixes:\n\n- Do not break @workflow endpoint for contents without workflow\n @cekk (#1184)\n- Do not break @workflow endpoint when trying to change the state of\n a content without workflow @cekk (#1190)\n\n## 8.7.0 (2021-07-19)\n\nNew features:\n\n- Improve extensibility story for resolveUID field\n serializer/deserializer @sneridagh (#1179)\n\n## 8.6.1 (2021-07-16)\n\nBug fixes:\n\n- Wrong deserialization if the path does not exist but is matched via\n acquisition @sneridagh (#1176)\n\n## 8.6.0 (2021-07-13)\n\nNew features:\n\n- Set UID of a content during creation if the user has Manage Portal\n permission. @ericof (#497)\n\n## 8.5.0 (2021-07-09)\n\nNew features:\n\n- Remove Python 2, Plone 4.3, and 5.1 code. @ericof (#1140)\n\n## 8.4.2 (2021-07-08)\n\nBug fixes:\n\n- In src run `find . -name \"*.py\"|xargs pyupgrade\n--py36-plus`. Then run black and remove six import\n leftovers. @jensens (#1162)\n- Fix link content serialization when url points to local content but\n it does not exist @sneridagh (#1167)\n- Fix navigation service not using nav_title metadata. @ericof\n (#1169)\n\n## 8.4.1 (2021-07-07)\n\nBug fixes:\n\n- Fix interpolation variable present in response after serialization\n @sneridagh (#1164)\n\n## 8.4.0 (2021-07-06)\n\nNew features:\n\n- Pass through field attribute 'widget' for field Dict @ksuess\n (#1153)\n\nBug fixes:\n\n- Use security decorators in PAS plugin. @jensens (#1155)\n- Drop coding magic first line. Coding magic is no longer needed in\n Python 3, except if different from utf-8. @jensens (#1156)\n- Fix PAS plugin ZMI markup for Zope4+. @jensens (#1157)\n- Eliminate non-pythonic 'return None' usage. @jensens (#1158)\n- Provide value_type of plone.schema / zope.schema Dict field\n @ksuess (#1159)\n\n## 8.3.2 (2021-07-05)\n\nBug fixes:\n\n- Fix navigation endpoint sort by adding default\n `sort_on='getObjPositionInParent'` to the query. @valipod\n @tiberiuichim (#1107)\n\n## 8.3.1 (2021-07-02)\n\nBug fixes:\n\n- Unify ZMI, HTML form, and API login. @rpatterson (#1141)\n\n## 8.3.0 (2021-06-07)\n\nNew features:\n\n- Add current state and translation to the @workflow endpoint\n @sneridagh (#1146)\n\nBug fixes:\n\n- Remove code to support Python 2, Plone 4.3/5.0/5.1 @timo (#1140)\n- Remove unnecessary check for plone.app.iterate which breaks the\n @components attributes. @timo (#1148)\n\n## 8.2.0 (2021-06-02)\n\nNew features:\n\n- Add working copy (p.a.iterate) support @sneridagh (#1132)\n\n## 8.1.0 (2021-05-27)\n\nNew features:\n\n- Add support for volto-slate blocks: use resolveuid for internal\n links, index slate blocks in the catalog, support block transforms.\n @tiberiuichim (#1125)\n\nBug fixes:\n\n- Fixed a deprecation warning when importing UnrestrictedUser from\n AccessControl (#1129)\n\nInternal:\n\n- Format zcml files with collective.zpretty. Add zpretty Github\n workflow. @tiberiuichim\n\n## 8.0.0 (2021-05-14)\n\nBreaking changes:\n\n- Drop support for Python 2 and Plone 5.1 and 4.3. Plone RESTAPI >= 8\n supports Python 3 and Plone 5.2/6.x only. @timo (#1121)\n\n## 7.3.5 (2021-05-03)\n\nBug fixes:\n\n- Fix `@workflow` when executing user has no permissions to access\n `review_history` in target state. @deiferni (#999)\n\n## 7.3.4 (2021-04-30)\n\nBug fixes:\n\n- Fix `@history` when full history is empty. @deiferni (#1113)\n\n## 7.3.3 (2021-04-29)\n\nBug fixes:\n\n- Fix `@querystring-search` endpoint with correct sort_order @mamico\n (#1108)\n\n## 7.3.2 (2021-04-07)\n\nBug fixes:\n\n- Fix `@search` endpoint with use_site_search_settings flag, for VHM\n PhysicalRoot scenarios @tiberiuichim (#1105)\n\n## 7.3.1 (2021-03-27)\n\nBug fixes:\n\n- Fixes if old p.schema is used @sneridagh (#1103)\n\n## 7.3.0 (2021-03-25)\n\nNew features:\n\n- Adjust JSONField adapter to include widget name to use in\n serialization @sneridagh (#1089)\n\nBug fixes:\n\n- Fixes build was using the released version @sneridagh (#1090)\n\n## 7.2.1 (2021-03-22)\n\nBug fixes:\n\n- @contextnavigation endpoint does not honor nav_title index\n @sneridagh (#1092)\n\n## 7.2.0 (2021-03-18)\n\nNew features:\n\n- Allow block transforms to run in \"subblocks\", discovered as the\n `blocks` field (or alternatively, `data.blocks`) in a block value.\n (#1085)\n\n## 7.1.0 (2021-03-17)\n\nNew features:\n\n- Allow passing `use_site_search_settings=1` in the `@search` endpoint\n request, to follow Plone's `ISearchSchema` settings. (#1081)\n\nBug fixes:\n\n- Do not log \"No such index\" warnings for knonw indexes like\n metadata_fields @cekk (#987)\n- Respect \"Access inactive portal content\" permission in @search\n endpoint @cekk (#1066)\n- Add GSM unsubscribe for test registered adapters in block\n transformer tests @tiberiuichim (#1083)\n- Pin some package versions to fix buildout @tiberiuichim (#1086)\n\n## 7.0.0 (2021-02-20)\n\n- Re-release 7.0.0b8 as 7.0.0 final. @timo\n\n## 7.0.0b8 (2021-02-19)\n\nNew features:\n\n- Mark restapi 7 with a zcml feature flag: `plonerestapi-7`\n @sneridagh (#1068)\n- Add a couple of additional tests for resolveuid feature reassurance\n @sneridagh (#1072)\n\nBug fixes:\n\n- Avoid duplicate fields within DX RestAPI @avoinea (#1073)\n\n## 7.0.0b7 (2021-02-10)\n\nNew features:\n\n- Add `root` element to the @breadcrumbs endpoint @sneridagh\n (#1064)\n\nBug fixes:\n\n- Remove `escape`'d titles @sneridagh (#1061)\n\n## 7.0.0b6 (2021-02-09)\n\nBug fixes:\n\n- Do not break if some custom code provides an alias for\n Products.Archetypes (#1004)\n- Handle missing review_state value in @navigation endpoint for items\n without a workflow @cekk (#1060)\n\n## 7.0.0b5 (2021-02-03)\n\nBug fixes:\n\n- Fix transform object_browser href smartfield not working as expected\n @sneridagh (#1058)\n\n## 7.0.0b4 (2021-02-01)\n\nBug fixes:\n\n- Fix href smart field in transformers do not cover the object_widget\n use case @sneridagh (#1054)\n\n## 7.0.0b3 (2021-01-26)\n\nNew features:\n\n- Add new @contextnavigation endpoint. @tiberiuichim (#1042)\n- Refactor navigation endpoint, add new `nav_title` attribute\n @sneridagh (#1047)\n- Add nav_title attribute to breadcrumbs endpoint @sneridagh\n (#1049)\n- Unify nav_title and title in navs @sneridagh (#1051)\n\nBug fixes:\n\n- Fix `@id` when content query has no `fullbojects` @sneridagh\n (#837)\n\n## 7.0.0b2 (2021-01-25)\n\nNew features:\n\n- Add serializer/deserializer for remoteUrl Link's field @cekk\n (#1005)\n\n## 7.0.0b1 (2021-01-08)\n\nNew features:\n\n- Register blocks transformers also for Site Root @cekk (#1043)\n\n## 7.0.0a6 (2020-12-18)\n\nNew features:\n\n- Add `sort` feature to resort all folder items @petschki (#812)\n- Remove unneeded stringtype checks @erral (#875)\n- Enable Plone 4 Control Panels: Add-ons, Dexterity Content Types\n @avoinea (#984)\n- Enhance traceback with `__traceback_info__` on import to detect the\n field causing the problem. @jensens (#1009)\n\nBug fixes:\n\n- Fixed deprecation warnings for `zope.site.hooks`,\n `CMFPlone.interfaces.ILanguageSchema` and\n `plone.dexterity.utils.splitSchemaName`. @maurits (#975)\n- Update tests to fix\n <https://github.com/plone/plone.dexterity/pull/137> @@avoinea\n (#1001)\n- Fix resolveuid blocks transforms @tisto, sneridagh (#1006)\n- Fix type hint example in searching documentation. @jensens\n (#1008)\n- Fixed compatibility with Zope 4.5.2 by making sure Location header\n is string. On Python 2 it could be unicode for the users and groups\n end points. Fixes [issue\n 1019](https://github.com/plone/plone.restapi/issues/1019).\n @maurits (#1019)\n- Check for Plone 5 in content-adding endpoint if\n plone.app.multilingual is installed @erral (#1029)\n- Do not test if there is a `meta_type` index. It is unused ballast.\n @jensens (#2024)\n- Fix tests with Products.MailHost 4.10. @maurits (#3178)\n\n## 7.0.0a5 (2020-08-21)\n\nNew features:\n\n- Improved blocks transformers: now we can handle generic transformers\n @cekk\n- Add generic block transformer for handle resolveuid in all blocks\n that have a _url_ or _href_ field @cekk\n- Add \"smart fields\" concept: if block has a _searchableText_ field,\n this will be indexed in Plone @cekk, tiberiuichim (#952)\n\n## 7.0.0a4 (2020-05-15)\n\nNew features:\n\n- Replace internal links to files in blocks with a download url if the\n user has no edit permissions @csenger (#930)\n\n## 7.0.0a3 (2020-05-13)\n\nNew features:\n\n- In block text indexing, query for IBlockSearchableText named\n adapters to allow extraction from any block type. This avoids\n hardcoding for the 'text' block type. @tiberiuichim (#917)\n\n## 7.0.0a2 (2020-05-12)\n\nNew features:\n\n- Added `IBlockFieldDeserializationTransformer` and its counterpart,\n `IBlockFieldSerializationTransformer` concepts, use subscribers to\n convert/adjust value of blocks on serialization/deserialization,\n this enables an extensible mechanism to transform block values when\n saving content.\n\n Added an html block deserializer transformer, it will clean the\n content of the \"html\" block according to portal_transform\n x-html-safe settings.\n\n Added an image block deserializer transformer, it will use\n resolveuid mechanism to transform the url field to a UID of content.\n\n Move the resolveuid code from the dexterity field deserializer to a\n dedicated block converter adapter, using the above mechanism.\n @tiberiuichim (#915)\n\n## 7.0.0a1 (2020-05-11)\n\nNew features:\n\n- Resolve links in blocks to UIDs during deserialization and back to\n paths during serialization. @buchi,timo,cekk (#808)\n\n## 6.15.1 (2021-02-20)\n\nBug fixes:\n\n- Fixed compatibility with Zope 4.5.2 by making sure Location header\n is string. On Python 2 it could be unicode for the users and groups\n end points. Fixes [issue\n 1019](https://github.com/plone/plone.restapi/issues/1019).\n @maurits (#1019)\n\n## 6.15.0 (2020-10-08)\n\nNew features:\n\n- Add `sort` feature to resort all folder items @petschki (#812)\n- Remove unneeded stringtype checks @erral (#875)\n\nBug fixes:\n\n- Fixed deprecation warnings for `zope.site.hooks`,\n `CMFPlone.interfaces.ILanguageSchema` and\n `plone.dexterity.utils.splitSchemaName`. @maurits (#975)\n- Update tests to fix\n <https://github.com/plone/plone.dexterity/pull/137> @@avoinea\n (#1001)\n- Fix tests with Products.MailHost 4.10. @maurits (#3178)\n\n## 6.14.0 (2020-08-28)\n\nNew features:\n\n- Add @types endpoint to be able to add/edit/delete CT schema\n @Petchesi-Iulian, avoinea (#951)\n\n## 6.13.8 (2020-08-20)\n\nBug fixes:\n\n- Removed useless management of metadata_fields in\n SearchHandler/LazyCatalogResultSerializer since it is handled in\n DefaultJSONSummarySerializer. @gbastien (#970)\n\n## 6.13.7 (2020-07-16)\n\nBug fixes:\n\n- Add a Decimal() converter @fulv (#963)\n\n## 6.13.6 (2020-07-09)\n\nBug fixes:\n\n- Fix Plone 5.2.x deprecation message 'ILanguageSchema is\n deprecated'. @timo (#975)\n- Do not hardcode the port in tests because it may depend on\n environment variables @ale-rt (#978)\n\n## 6.13.5 (2020-06-29)\n\nBug fixes:\n\n- Remove the use of plone.api in upgrade code @erral (#917)\n\n## 6.13.4 (2020-06-18)\n\nBug fixes:\n\n- Re-add test folder to the release (ignore the tests/images folder\n though). @timo (#968)\n\n## 6.13.3 (2020-06-17)\n\nBug fixes:\n\n- Take the `include_items` parameter into account in\n `SerializeCollectionToJson`. @gbastien (#957)\n\n## 6.13.2 (2020-06-15)\n\nBug fixes:\n\n- Include plone.app.controlpanel permissions.zcml in database service\n to avoid ConfigurationExecutionError regarding\n 'plone.app.controlpanel.Overview' permission while starting Plone\n 4.3.x @gbastien (#956)\n\n## 6.13.1 (2020-06-03)\n\nBug fixes:\n\n- PATCH (editing) in @user endpoint now is able to remove existing\n values using null @sneridagh (#946)\n\n## 6.13.0 (2020-05-28)\n\nNew features:\n\n- Expose author_image in comments endpoint @timo (#948)\n\n## 6.12.0 (2020-05-11)\n\nNew features:\n\n- Add database endpoint @timo (#941)\n\n## 6.11.0 (2020-05-08)\n\nNew features:\n\n- Add type-schema adapters for: Email, URI and Password @avoinea\n (#926)\n\n## 6.10.0 (2020-05-07)\n\nNew features:\n\n- Add system endpoint. @timo (#736)\n\n## 6.9.1 (2020-05-07)\n\nBug fixes:\n\n- Fixed @translations endpoint to only retrieve the translations that\n the current user can really access using\n `get_restricted_translations` instead. This fixes the use case where\n an user with no permissions on a translation accessing the endpoint\n returned a 401. @sneridagh (#937)\n\n## 6.9.0 (2020-05-06)\n\nNew features:\n\n- Add endpoints for managing addons. @esteele (#733)\n\n## 6.8.1 (2020-05-04)\n\nBug fixes:\n\n- Treat next/prev items for unordered folders. @rodfersou (#928)\n\n## 6.8.0 (2020-04-23)\n\nNew features:\n\n- Managing Dexterity Type Creation (CRUD) via plone.restapi\n @avoinea (#534)\n\n## 6.7.0 (2020-04-21)\n\nNew features:\n\n- Make @querystring-search endpoint context aware @sneridagh\n (#911)\n\nBug fixes:\n\n- Fix sphinxbuilder with Python 3.8 @avoinea (#905)\n\n## 6.6.1 (2020-04-17)\n\nBug fixes:\n\n- call unescape method on received html for richtext before save it in\n Plone. @cekk (#913)\n- Small fix in IBlocks test, added a missing assert call\n @tiberiuichim (#914)\n\n## 6.6.0 (2020-04-07)\n\nNew features:\n\n- Add next_item and previous_item attributes to allow to navigate to\n the previous and next sibling in the container the document is\n located. @rodfersou (#900)\n\n## 6.5.2 (2020-04-01)\n\nBug fixes:\n\n- Fix for the use case while updating user properties in the @user\n endpoint, and the portrait is already previously set but the request\n includes the (previously) serialized value as a string because the\n user are not updating it @sneridagh (#896)\n\n## 6.5.1 (2020-04-01)\n\nBug fixes:\n\n- Fix deleting user portrait. @buchi (#751)\n\n## 6.5.0 (2020-03-30)\n\nNew features:\n\n- Link translation on content creation feature and new\n @translation-locator endpoint @sneridagh (#887)\n\n## 6.4.1 (2020-03-25)\n\nBug fixes:\n\n- Make discussion endpoint return content that is deserialized via\n portal transforms (e.g. 'text/x-web-intelligent') @timo (#889)\n\n## 6.4.0 (2020-03-23)\n\nNew features:\n\n- Add targetUrl to the dxcontent serializer for primary file fields to\n be able to download a file directly. @csenger (#886)\n\nBug fixes:\n\n- Fixed package install error with Python 3.6 without locale. See\n [coredev issue\n 642](https://github.com/plone/buildout.coredev/issues/642#issuecomment-597008272).\n @maurits (#642)\n- plone.app.discussion extends the review workflow for moderation of\n comments. This change takes the additional workflow states into\n account. @ksuess (#842)\n\n## 6.3.0 (2020-03-03)\n\nNew features:\n\n- Allow using object paths and UIDs to link translations @erral\n (#645)\n\nBug fixes:\n\n- Add a catalog serializer guard when returning fullobjects in case\n the object doesn't exist anymore because for some reason it failed\n to uncatalog itself. @sneridagh (#877)\n- Use longer password in tests. @maurits (#3044)\n\n## 6.2.4 (2020-02-20)\n\nBug fixes:\n\n- fullobjects qs is missing in response batch links in batching\n operations @sneridagh (#868)\n\n## 6.2.3 (2020-02-19)\n\nBug fixes:\n\n- Return proper None instead of string \"None\" on the choice schema\n serializer @sneridagh (#863)\n\n## 6.2.2 (2020-01-24)\n\nBug fixes:\n\n- Degrade gracefully when a term set in a content field does not\n exists in the assigned vocabulary @sneridagh (#856)\n\n## 6.2.1 (2020-01-22)\n\nBug fixes:\n\n- Sharing POST: Limit roles to ones the user is allowed to delegate.\n @lgraf (#857)\n\n## 6.2.0 (2020-01-10)\n\nNew features:\n\n- Make ?fullobjects work in AT Collections to get the full JSON\n representation of the items @erral (#698)\n- Make ?fullobjects work in Dexterity Collections to get the full JSON\n representation of the items @erral (#848)\n\nBug fixes:\n\n- Fix WorkflowException for related items with no review_state.\n @arsenico13 (#376)\n\n## 6.1.0 (2020-01-05)\n\nNew features:\n\n- Add SearchableText indexing for text in blocks @luca-bellenghi\n (#844)\n\n## 6.0.0 (2019-12-22)\n\nBreaking changes:\n\n- Remove IAPIRequest marker interface from plone.restapi. The correct\n interface should be imported from plone.rest.interfaces instead. If\n anybody was using this marker Interface, it didn't do anything.\n (#819)\n\nBug fixes:\n\n- Prevent converting bytestring ids to unicode ids when reordering\n (see upgrade guide for potential migration). @deiferni (#827)\n\n## 5.1.0 (2019-12-07)\n\nNew features:\n\n- Add Python 3.8 support @timo (#829)\n\n## 5.0.3 (2019-12-06)\n\nBug fixes:\n\n- Change to use the short name for the Blocks behavior instead of\n using the interface one. It fixes #838. @sneridagh (#838)\n\n## 5.0.2 (2019-11-06)\n\nBug fixes:\n\n- Fix filtering vocabs and sources by title with non-ASCII characters.\n @lgraf (#825)\n\n## 5.0.1 (2019-11-05)\n\nBug fixes:\n\n- Fix serialization of vocabulary items for fields that need hashable\n items (e.g. sets). @buchi (#788)\n\n## 5.0.0 (2019-10-31)\n\nBreaking changes:\n\n- Rename tiles behavior and fields to blocks, migration step. [timo,\n sneridagh] (#821)\n\nBug fixes:\n\n- Fixed startup error when Archetypes is there, but `plone.app.blob`\n or `plone.app.collection` not. @maurits (#690)\n\n## 4.6.0 (2019-10-06)\n\nNew features:\n\n- Add @sources and @querysources endpoints, and link to them from\n JSON schema in @types response. @lgraf (#790)\n\nBug fixes:\n\n- Explicitly load zcml of dependencies, instead of using\n `includeDependencies` @maurits (#2952)\n\n## 4.5.1 (2019-09-23)\n\nBug fixes:\n\n- Fire ModifiedEvent when field is set to null in a PATCH request.\n @phgross (#802)\n- Testing: Drop freezegun and instead selectively patch some timestamp\n accessors. @lgraf (#803)\n\n## 4.5.0 (2019-09-12)\n\nNew features:\n\n- Add @querystring-search endpoint that returns the results of a\n search using a p.a.querystring query. @sneridagh (#789)\n- Use Plone 5.2 and Python 3 as default to generate documentation.\n @timo (#800)\n\nBug fixes:\n\n- Make group serializer results predictable by returning sorted item\n results. @timo (#798)\n\n## 4.4.0 (2019-08-30)\n\nNew features:\n\n- Add @querystring endpoint that dumps p.a.querystring config.\n @lgraf (#754)\n\nBug fixes:\n\n- Fix typo in the `tiles_layout` field title name. @sneridagh\n (#785)\n\n## 4.3.1 (2019-07-10)\n\nBug fixes:\n\n- Fix @sharing POST when called on the plone site root @csenger\n (#780)\n\n## 4.3.0 (2019-06-30)\n\nNew features:\n\n- Support retrieval of additional metadata fields in summaries in the\n same way as in search results. @buchi (#681)\n\n## 4.2.0 (2019-06-29)\n\nNew features:\n\n- Make @types endpoint expandable. @lgraf (#766)\n- Factor out permission checks in @users endpoint to make it more\n easily customizable. @lgraf (#771)\n\nBug fixes:\n\n- Gracefully handle corrupt images when serializing scales. @lgraf\n (#729)\n- Docs: Make sure application/json+schema examples also get syntax\n highlighted. @lgraf (#764)\n- Return empty response for status 204 (No Content). @buchi (#775)\n- Return status 400 if a referenced object can not be resolved during\n deserialization. @lgraf (#777)\n\n## 4.1.4 (2019-06-21)\n\nBug fixes:\n\n- Set effective_date and reindex obj on workflow transitions.\n @wkbkhard (#760)\n\n## 4.1.3 (2019-06-21)\n\nBug fixes:\n\n- Improve documentation for how to set relations by adding some\n examples. @buchi (#732)\n- Return an error message if a referenced object can not be resolved.\n @buchi (#738)\n\n## 4.1.2 (2019-06-15)\n\nBug fixes:\n\n- @types endpoint: Fix support for context aware default factories.\n @lgraf (#748)\n\n## 4.1.1 (2019-06-13)\n\nBug fixes:\n\n- Handle `None` as a vocabulary term title in the vocabulary\n serializer. @Rotonen (#742)\n- Handle a term not having a title attribute in the vocabulary\n serializer. @Rotonen (#742)\n- Handle a term having a non-ASCII `str` title attribute in the\n vocabulary serializer. @Rotonen (#743)\n- Fix time freezing in Plone 5.1 tests. @lgraf (#745)\n\n## 4.1.0 (2019-05-25)\n\nNew features:\n\n- Use Black on the code base. @timo (#693)\n\n## 4.0.0 (2019-05-09)\n\nBreaking changes:\n\n- @vocabularies service: No longer returns an @id for terms. Results\n are batched, and terms are now listed as items instead of terms to\n match other batched responses. Batch size is 25 by default but can\n be overridden using the b_size parameter. @davisagli\n- @types service: Choice fields using named vocabularies are now\n serialized with a vocabulary property giving the URL of the\n @vocabularies endpoint for the vocabulary instead of including\n choices, enum and enumNames inline. The subjects field is now\n serialized as an array of string items using the\n plone.app.vocabularies.Keywords vocabulary. @davisagli\n- Serialize widget parameters into a widgetOptions object instead of\n adding them to the top level of the schema property. @davisagli\n- Add `title` and `token` filter to the vocabularies endpoint.\n @davisagli, sneridagh, timo (#535)\n- Use tokens for serialization/deserialization of vocabulary terms.\n @buchi (#691)\n- Return the token and the title of vocabulary terms in serialization.\n See upgrade guide for more information. @buchi (#726)\n\nNew Features:\n\n- `@vocabularies` service: Use `title` parameter to filter terms by\n title and `token` for getting the title of a term given a token.\n (case-insensitive). @davisagli, sneridagh, timo\n\nBug fixes:\n\n- Standardize errors data structure of email-notification endpoint.\n @cekk (#708)\n- When renewing an expired or invalid authentication token with\n `@login-renew` fail with a `401` error instead of returning a new\n authentication token. @thet (#721)\n- Use interface name in the `tiles` profile instead of the shorthand\n behavior name. This fixes #724. @sneridagh (#724)\n- Avoid calculating batch links for catalog results twice.\n @davisagli\n\n## 3.9.0 (2019-04-18)\n\nNew features:\n\n- Add full support for `fullobjects` support for AT content types.\n @sneridagh (#698)\n\n## 3.8.1 (2019-03-21)\n\nBug fixes:\n\n- Fixed Python 3 incompatibility with workflow service (#676) @ajung\n- Hide performance, testing, and tiles profile. (#700) @timo\n\n## 3.8.0 (2019-03-21)\n\nNew features:\n\n- Add support for add/update user portraits (@user endpoint)\n @sneridagh (#701)\n\n## 3.7.5 (2019-03-14)\n\nBug fixes:\n\n- Do not depend on the deprecated plone.app.controlpanel package.\n @sneridagh (#696)\n\n## 3.7.4 (2019-03-13)\n\nBug fixes:\n\n- Fix a problem on ZCML loading depending on how the policy package is\n named, related to the load of permissions in control panels and\n multilingual. @sneridagh (#526)\n\n## 3.7.3 (2019-03-08)\n\nBug fixes:\n\n- Use environment-markers instead of python-logic to specify\n dependencies for py2. @pbauer (#688)\n\n## 3.7.2 (2019-03-07)\n\nBug fixes:\n\n- Fix TUS upload events\n @#689(https://github.com/plone/plone.restapi/issues/689). @buchi\n (#689)\n\n## 3.7.1 (2019-03-06)\n\nBugfixes:\n\n- Fix release to not create universal (Python 2/3) wheels.\n @gforcada\n- Install zestreleaser.towncrier in the buildout to the changelog is\n updated correctly. (#684) @maurits\n\n## 3.7.0 (2019-03-04)\n\nNew Features:\n\n- Add group roles to @groups serializer @sneridagh\n\n## 3.6.0 (2019-02-16)\n\nNew Features:\n\n- Enhance site root to serialize and deserialize 'tiles' and\n 'tiles_layout' attributes. @sneridagh\n- Fix @workflow endpoint on site root to return an empty object\n instead of a 404. @sneridagh\n\n## 3.5.2 (2019-02-14)\n\nBugfixes:\n\n- Fix serializing the Event type. This fixes\n <https://github.com/plone/plone.restapi/issues/664>. [davisagli,\n elioschmutz]\n\n## 3.5.1 (2019-02-05)\n\nBugfixes:\n\n- Do not fail on serializing types with fields having non-parametrized\n widgets. Fixes issue\n @664(https://github.com/plone/plone.restapi/issues/664).\n @elioschmutz\n\n## 3.5.0 (2018-11-06)\n\nNew Features:\n\n- Add Python 3 support. @pbauer, davisagli\n\n## 3.4.5 (2018-09-14)\n\nBugfixes:\n\n- Avoid `AttributeError` on add-on installation (fixes\n @#465(https://github.com/plone/plone.restapi/issues/465).\n @lukasgraf, hvelarde\n- Make search work with a path query containing a list of paths in a\n virtual hosting setting. @sunew\n\n## 3.4.4 (2018-08-31)\n\nBugfixes:\n\n- Generalize the last bugfix solution for searching the userid on\n password reset requests, matching it with Plone's one. This covers\n all the request use cases. @sneridagh\n\n## 3.4.3 (2018-08-30)\n\nBugfixes:\n\n- Add \"Use UUID as user ID\" support for password resets\n @sneridagh\n\n## 3.4.2 (2018-08-27)\n\nBugfixes:\n\n- Add missing \"Use UUID as user ID\" support to POST @users endpoint\n on user creation. Also improve the userid/username chooser by using\n the same process as Plone does. This fixes:\n <https://github.com/plone/plone.restapi/issues/586> @sneridagh\n\n## 3.4.1 (2018-07-22)\n\nBugfixes:\n\n- Make sure the default profile is installed on tiles profile\n installation. @timo\n\n## 3.4.0 (2018-07-21)\n\nNew Features:\n\n- Add tiles profile. @timo\n\n## 3.3.0 (2018-07-20)\n\nNew Features:\n\n- Return member fields based on user schema in `@users` endpoint\n instead of a fixed list of member properties. @buchi\n\n## 3.2.2 (2018-07-19)\n\nBugfixes:\n\n- Do not include HTTP examples using data_files anymore, but move them\n below src/plone/restapi instead and use package_data to include\n them. @lgraf\n- Rename Dexterity content before adding it to a container. @buchi\n- Avoid hard dependency on Archetypes introduced in 3.0.0. This fixes\n @issue 570(https://github.com/plone/plone.restapi/issues/570).\n @buchi\n- Make setup.py require plone.behavior >= 1.1. This fixes #575.\n @timo\n- Fixes `test_search` to work with bug fixed `plone.indexer`. Now\n `DXTestDocument` explicit got an attribute `exclude_from_nav`. This\n fixes [issue\n 579](https://github.com/plone/plone.restapi/issues/579). Refers to\n [Products.CMFPlone Issue\n 2469](https://github.com/plone/Products.CMFPlone/issues/2469)\n @jensens\n\n## 3.2.1 (2018-06-28)\n\nBugfixes:\n\n- Require plone.schema >= 1.2.0 in setup.py for new tiles endpoint.\n @timo\n\n## 3.2.0 (2018-06-28)\n\nNew Features:\n\n- Add tiles endpoint for getting all available content tiles and its\n JSONSchema. @sneridagh\n- Add a tiles behavior to support the new tiles implementation for\n plone.restapi. @sneridagh\n- Make sure to include HTTP examples in installed egg, so\n test_documentation tests also work against a installed release of\n plone.restapi. @lgraf\n\n## 3.1.0 (2018-06-27)\n\nNew Features:\n\n- Plone 5.2 compatibility. @sunew, davisagli, timo\n\n## 3.0.0 (2018-06-26)\n\nBreaking Changes:\n\n- Fix object creation events. Before this fix, creation events were\n fired on empty not yet deserialized objects. Also a modified event\n was fired after deserializing e newly created object. Custom content\n deserializers now must handle the `create` keyword argument, which\n determines if deserialization is performed during object creation or\n while updating an object. @buchi\n- Include translated role titles in `@sharing` GET. @lgraf\n- Image URLs are now created using the cache optimized way. Fixes\n #494. @erral\n\n## 2.2.1 (2018-06-25)\n\nBugfixes:\n\n- Fix ReST on PyPi. @timo\n\n## 2.2.0 (2018-06-25)\n\nNew Features:\n\n- Document the use of the `Accept-Language` HTTP header. @erral\n- Translate FTI titles on `@types` endpoint. Fixes #337. @erral\n- Translate action name, workflow state and transition names in\n @history endpoint. @erral\n- Enhance `@workflow` endpoint to support applying transitions to all\n contained items and to set effective and expiration dates. @buchi\n\nBugfixes:\n\n- Make sure DX DefaultFieldDeserializer validates field values.\n @lgraf\n- Reindex AT content on PATCH. This fixes [issue\n 531](https://github.com/plone/plone.restapi/issues/531). @buchi\n- Fix change password on Plone 5.2 @sunew\n- Plone 5.2 compatible tests. @sunew\n\n## 2.1.0 (2018-06-23)\n\nNew Features:\n\n- Include translated role title in `@roles` GET. @lgraf\n\n## 2.0.1 (2018-06-22)\n\nBugfixes:\n\n- Hide upgrades from the add-ons control panel. Fixes [issue\n 532](https://github.com/plone/plone.restapi/issues/532). @maurits\n\n## 2.0.0 (2018-04-27)\n\nBreaking Changes:\n\n- Convert all datetime, DateTime and time instances to UTC before\n serializing. @thet\n- Use python-dateutil instead of DateTime to parse date strings when\n de-serializing. @thet\n- Make `@translations` endpoint expandable @erral\n- Rename the results attribute in `@translations` endpoint to be\n 'items' @erral\n- Remove 'language' attribute in `@translations` endpoint from the\n top-level response entry @erral\n\nNew Features:\n\n- Expose the tagged values for widgets in the @types endpoint.\n @jaroel\n- Render subject vocabulary as items for subjects field. @jaroel\n- New permission for accessing user information in the GET @user\n endpoint `plone.restapi: Access Plone user information`\n mapped by default to Manager role (as it was before). @sneridagh\n\nBugfixes:\n\n- Add VHM support to @search @csenger\n\n## 1.6.0 (2018-04-17)\n\nNew Features:\n\n- Add `expand.navigation.depth` parameter to the `@navigation`\n endpoint. @fulv, sneridagh\n\n## 1.5.0 (2018-04-03)\n\nNew Features:\n\n- Allow users to update their own properties and password.\n @sneridagh\n\n## 1.4.1 (2018-03-22)\n\nBugfixes:\n\n- Fix serialization of `Discussion Item` and `Collection` content\n types when called with `fullobjects` parameter. @sneridagh\n\n## 1.4.0 (2018-03-19)\n\nNew Features:\n\n- Add expandable @actions endpoint to retrieve portal_actions.\n @csenger,timo,sneridagh\n\n## 1.3.1 (2018-03-14)\n\nBugfixes:\n\n- Support null in content PATCH requests to delete a field value\n (Dexterity only). This fixes #187. @csenger\n\n## 1.3.0 (2018-03-05)\n\nNew Features:\n\n- Observe the allow_discussion allowance (global, fti, object) on\n object serialization. @sneridagh\n- Add '@email-send' endpoint to allow authorized users to send\n emails to arbitrary addresses (Plone 5 only). @sneridagh\n\n## 1.2.0 (2018-02-28)\n\nNew Features:\n\n- Allow users to get their own user information. @erral\n\nBugfixes:\n\n- Mark uninstall profile as non-installable. @hvelarde\n- Fix the use of fullobjects in Archetypes based sites @search\n @erral\n- Fix workflow translations with unicode characters. @Gagaro\n- Fix workflow encoding in transition endpoint. @Gagaro\n\n## 1.1.0 (2018-01-24)\n\nNew Features:\n\n- Add '@email-notification' endpoint to contact the site owner via\n email. (Plone 5 only) @sneridagh\n\nBugfixes:\n\n- Remove warning about alpha version from docs. @timo\n\n## 1.0.0 (2018-01-17)\n\nBugfixes:\n\n- Remove deprecated getSiteEncoding import. @timo\n- Build documentation on Plone 5.0.x (before: Plone 4.3.x). @timo\n\n## 1.0b1 (2018-01-05)\n\nBreaking Changes:\n\n- Rename 'url' attribute on navigation / breadcrumb to '@id'.\n @timo\n\nNew Features:\n\n- Allow client to ask for the full representation of an object after\n creation by setting the 'Prefer' header on a PATCH request.\n @Gagaro\n- Support deserialization of a relationChoice field using the contents\n of the serialization (enhanced by the serializer) output.\n @sneridagh\n- Allow properties when adding a user. This allows setting the\n fullname by anonymous users. @jaroel\n- Add support for IContextSourceBinder vocabularies on JSON schema\n Choice fields adapters. @sneridagh\n- Add upgrade guide. @timo\n\nBugfixes:\n\n- Fix issue where POST or PATCH a named file with a download link\n would always return self.context.image, not the actual file.\n @jaroel\n- Fix DateTimeDeserializer when posting None for a non-required field.\n @jaroel\n- Fixed 'required' for DateTime fields. @jaroel\n- Batching: Preserve list-like query string params when canonicalizing\n URLs. @lgraf\n- Fixed NamedFieldDeserializer to take a null to remove files/images.\n @jaroel\n- Fixed NamedFieldDeserializer to validate required fields. @jaroel\n- Prevent a fatal error when we get @workflow without permission to\n get review_history workflow variable. @thomasdesvenain\n- Make user registration work as default Plone behavior by adding the\n Member role to the user. @sneridagh\n\n## 1.0a25 (2017-11-23)\n\nBreaking Changes:\n\n- Remove @components navigation and breadcrumbs. Use top level\n @navigation and @breadcrumb endpoints instead. @timo\n- Remove \"sharing\" attributes from GET response. @timo,jaroel\n- Convert richtext using .output*relative_to. Direct conversion from\n RichText if no longer supported as we *\\_always\\* need a context for\n the ITransformer. @jaroel\n\nNew Features:\n\n- Add fullobjects parameter to content GET request. @timo\n- Include descriptions of modified fields in object-modified event.\n @buchi\n- Add uninstall profile @davilima6\n- Add `include_items` option to `SerializeFolderToJson`. @Gagaro\n\nBugfixes:\n\n- Fix error messages for password reset (wrong user and wrong\n password). @csenger\n- Fix #440, URL and @id wrong in second level get contents call for\n folderish items. @sneridagh\n- Fix #441, GET in a folderish content with 'fullobjects' is\n including all items recursively. @sneridagh\n- Fix #443, Ensure the userid returned by `authenticateCredentials` is\n a byte string and not unicode. @Gagaro\n\n## 1.0a24 (2017-11-13)\n\nNew Features:\n\n- Add 'is_editable' and 'is_deletable' to the serialization of\n comments objects. Also refactored the comments endpoint to DRY.\n @sneridagh\n- Improve is_folderish property to include Plone site and AT content\n types @sneridagh\n\nBugfixes:\n\n- Cover complete use cases of file handling in a content type. This\n includes removal of a image/file and being able to feed the PATCH\n endpoint with the response of a GET operation the image/file fields\n without deleting the existing value. @sneridagh\n\n## 1.0a23 (2017-11-07)\n\nBugfixes:\n\n- Fix JWT authentication for users defined in the Zope root user\n folder. This fixes\n <https://github.com/plone/plone.restapi/issues/168> and\n <https://github.com/plone/plone.restapi/issues/127>. @buchi\n- Fix datetime deserialization for timezone aware fields. This fixes\n <https://github.com/plone/plone.restapi/issues/253> @buchi\n\n## 1.0a22 (2017-11-04)\n\nNew Features:\n\n- Add @translations endpoint @erral\n- Include title in site serialization. @buchi\n- Include is_folderish property on GET request responses. Fixes #327.\n @sneridagh\n\nBugfixes:\n\n- Strip spaces from TextLine values to match z3c.form implementation.\n @jaroel\n- Disallow None and u'' when TextLine is required. Refs #351.\n @jaroel\n- Make getting '/@types/{type_id}' work for non-DX types, ie \"Plone\n Site\". @jaroel\n- Remove Products.PasswortResetTool from setup.py since it is a soft\n dependency. It is included in Plone >= 5.1. @tomgross\n- Update pytz to fix travis builds @sneridagh\n\n## 1.0a21 (2017-09-23)\n\nNew Features:\n\n- Add support for expandable elements. See\n <http://plonerestapi.readthedocs.io/en/latest/expansion.html> for\n details. @buchi\n- Translate titles in @workflow. @csenger\n- Add endpoints for locking/unlocking. See\n <http://plonerestapi.readthedocs.io/en/latest/locking.html> for\n details. @buchi\n- Add @controlpanels endpoint. @jaroel, timo\n\nBugfixes:\n\n- Fix ZCML load order issue by explicitly loading permissions.zcml\n from CMFCore. @lgraf\n- Fix @id values returned by @search with 'fullobjects' option\n @ebrehault\n- Re-add skipped tests from @breadcrumbs and @navigation now that\n expansion is in place. @sneridagh\n\n## 1.0a20 (2017-07-24)\n\nBugfixes:\n\n- Support content reordering on the site root. @jaroel\n- Support setting Layout on the site root. @jaroel\n- Add clarification when using SearchableText parameter in\n plone.restapi to avoid confusions @sneridagh\n\n## 1.0a19 (2017-06-25)\n\nNew Features:\n\n- Implement tus.io upload endpoint. @buchi\n\n## 1.0a18 (2017-06-14)\n\nNew Features:\n\n- Add \"&fullobject\" parameter in @search to retrieve full objects\n @ebrehault\n\nBugfixes:\n\n- Tweaks to README.rst @tkimnguyen\n- Don't list non-DX types in @types endpoint. Refs\n <https://github.com/plone/plone.restapi/issues/150> @jaroel\n\n## 1.0a17 (2017-05-31)\n\nBreaking Changes:\n\n- Change RichText field value to use 'output' instead of 'raw' to\n fix inline paths. This fixes #302. @erral\n\nNew Features:\n\n- Automatically publish docker images on hub.docker.com. @timo\n\nBugfixes:\n\n- Docs: Fix batching example request/response. @lgraf\n\n## 1.0a16 (2017-05-23)\n\nNew Features:\n\n- Add @comments endpoint. @jaroel,timo,pjoshi\n- Add @roles endpoint to list defined global roles. @jaroel\n- Add JSON schema to @registry listing. @jaroel\n- Allow to manipulate the group membership in the @groups endpoint.\n @jaroel\n- List and mutate global roles assigned to a user in the @users\n endpoint. @jaroel\n\nBugfixes:\n\n- Bind schema field to context to handle context vocabularies. #389\n @csenger\n- The inherit flag was the wrong way around. Blocked inherit showed up\n as non-blocked. @jaroel\n\n## 1.0a15 (2017-05-15)\n\nNew Features:\n\n- Add @translations endpoint @erral\n- Reorder children in a item using the content endpoint. @jaroel\n- Add batched listing of registry entries to @registry endpoint.\n @jaroel\n\n## 1.0a14 (2017-05-02)\n\nNew Features:\n\n- Add @history endpoint. @jaroel\n\nBugfixes:\n\n- Fix the @move endpoint fails to return 403 when the user don't\n have proper delete permissions over the parent folder. @sneridagh\n\n## 1.0a13 (2017-04-18)\n\nNew Features:\n\n- Add support for a 'search' parameter to @sharing. This returns\n additional principals in 'entries', also flagging the acquired and\n inherited fields. @jaroel\n- Add support for setting/modifying 'layout' on DX and AT content\n endpoints. @jaroel\n- Add support for getting the defined layouts on the root types\n endpoint. @jaroel\n\nBugfixes:\n\n- Add the title to the workflow history in the @workflow endpoint.\n This fixes #279. @sneridagh\n- Don't fetch unnecessary PasswordResetTool in Plone 5.1 @tomgross\n\n## 1.0a12 (2017-04-03)\n\nBugfixes:\n\n- Handle special case when user @move content that cannot delete\n returning proper 403 @sneridagh\n\n## 1.0a11 (2017-03-24)\n\nBugfixes:\n\n- Remove zope.intid dependency from copy/move endpoint. Remove\n plone.api dependency from principals endpoint. Make\n ChoiceslessRelationListSchemaProvider available only if\n z3c.relationfield is installed. This fixes\n <https://github.com/plone/plone.restapi/issues/288> @erral\n- Remove unittest2 imports from tests. @timo\n- Add Products.PasswortResetTool to dependencies. This dependency is\n gone in Plone 5.1. @timo\n- Make import of LocalrolesModifiedEvent conditional, so plone.restapi\n doesn't prevent Plone 4.3 deployments < 4.3.4 from booting.\n @lgraf\n\n## 1.0a10 (2017-03-22)\n\nNew Features:\n\n- Add @sharing endpoint. @timo,csenger,sneridagh\n- Add @vocabularies endpoint. @timo,csenger,sneridagh\n- Add @copy and @move endpoints. @buchi,sneridagh\n- Docs: Convert all HTTP examples to use sphinxcontrib-httpexample.\n @lgraf\n- Add 'addable' attribute to the @types endpoint. It specifies if\n the content type can be added to the current context. See\n <https://github.com/plone/plone.restapi/issues/173>. @jaroel\n- Add support for named IJsonSchemaProvider adapter to target a single\n field in a schema. This allows us to prevent rendering all choices\n in relatedItems. See\n <https://github.com/plone/plone.restapi/issues/199>. @jaroel\n- Add review_state to the folderish summary serializer. @sneridagh\n- Add @principals endpoint. It searches for principals and returns a\n list of users and groups that matches the query. This is aimed to be\n used in the sharing UI widget or other user/groups search widgets.\n @sneridagh\n- Add reset-password action to the @users endpoint.\n <https://github.com/plone/plone.restapi/issues/158> @timo,csenger\n\nBugfixes:\n\n- Fix coveralls reporting. @timo\n- Return correct @id for folderish objects created via POST.\n @lgraf\n- Fix timezone-related failures when running tests through `coverage`.\n @witsch\n- @search endpoint: Also prefill path query dict with context path.\n This will allow users to supply an argument like path.depth=1, and\n still have path.query be prefilled server-side to the context's\n path. @lgraf\n- Overhaul JSON schema generation for @types endpoint. It now returns\n fields in correct order and in their appropriate fieldsets.\n @lgraf\n- Add missing id to the Plone site serialization, related to issue\n #186. @sneridagh\n- Add missing adapter for IBytes on JSONFieldSchema generator. This\n fixes the broken /@types/Image and /@types/File endpoints.\n @sneridagh\n- Fix addable types for member users and roles assigned locally on\n @types endpoint. @sneridagh\n\n## 1.0a9 (2017-03-03)\n\nNew Features:\n\n- Make date and datetime fields provide a 'widget' attribute.\n @timo\n- Add documentation for types endpoint schema. @timo\n- Add basic groups CRUD operations in @groups endpoints @sneridagh\n- Make @types endpoint include a 'mode' attribute. This fixes\n <https://github.com/plone/plone.restapi/issues/198>. @timo\n\nBugfixes:\n\n- Fix queries to ensure ordering of container items by\n getObjectPositionInParent. @lgraf\n\n## 1.0a8 (2017-01-12)\n\nNew Features:\n\n- Add simple user search capabilities in the GET @users endpoint.\n @sneridagh\n\nBugfixes:\n\n- Allow installation of plone.restapi if JWT plugin already exists.\n This fixes <https://github.com/plone/plone.restapi/issues/119>.\n @buchi\n\n## 1.0a7 (2016-12-05)\n\nBugfixes:\n\n- Make login endpoint accessible without UseRESTAPI permission. This\n fixes <https://github.com/plone/plone.restapi/issues/166>. @buchi\n\n## 1.0a6 (2016-11-30)\n\nNew Features:\n\n- Introduce dedicated permission required to use REST API at all\n (assigned to everybody by default). @lgraf\n\nBugfixes:\n\n- When token expires, PAS plugin should return an empty credential.\n @ebrehault\n\n## 1.0a5 (2016-10-07)\n\nBugfixes:\n\n- Remove plone.api dependency from users service. This fixes\n <https://github.com/plone/plone.restapi/issues/145>. @timo\n\n## 1.0a4 (2016-10-05)\n\nNew Features:\n\n- Make POST request return the serialized object. @timo\n- Include 'id' attribute in responses. @timo\n\n## 1.0a3 (2016-09-27)\n\nNew Features:\n\n- Add @users endpoint. @timo\n\nBugfixes:\n\n- Fix bug where disabling the \"Use Keyring\" flag wasn't persisted\n in jwt_auth plugin. @lgraf\n\n## 1.0a2 (2016-08-20)\n\nNew Features:\n\n- Implements navigation and breadcrumbs components @ebrehault\n- Add `widget` and support for RichText field in @types component.\n @ebrehault\n- Add fieldsets in @types @ebrehault\n\nBugfixes:\n\n- Disable automatic CSRF protection for @login and @login-renew\n endpoints: If persisting tokens server-side is enabled, those\n requests need to be allowed to cause DB writes. @lgraf\n- Documentation: Fixed parameter 'data' to JSON format in JWT\n Authentication documentation @lccruz\n- Tests: Fail tests on uncommitted changes to docs/source/\\_json/\n @lgraf\n- Tests: Use `freezegun` to freeze hard to control timestamps in\n response dumps used for documentation. @lgraf\n- Tests: Limit available languages to a small set to avoid excessive\n language lists in response dumps used for documentation. @lgraf\n\n## 1.0a1 (2016-07-14)\n\n- Initial release. @timo, @buchi, @lukasgraf, et al.\n",
"bugtrack_url": null,
"license": "gpl",
"summary": "plone.restapi is a RESTful hypermedia API for Plone.",
"version": "9.15.2",
"project_urls": {
"Homepage": "https://github.com/plone/plone.restapi/"
},
"split_keywords": [
"plone",
"rest",
"restful",
"hypermedia",
"api",
"json"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "7b0f5252520e045cc683b9af6d1f1459b2915be1fefe6ffd7f8197606c44e41e",
"md5": "05b20f08213af888a5fbb01273785fa5",
"sha256": "b4574b7a6246098c934418e209fcc66f6dcb35c8e6686d934303a3c770e96c70"
},
"downloads": -1,
"filename": "plone.restapi-9.15.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "05b20f08213af888a5fbb01273785fa5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 3093339,
"upload_time": "2025-08-22T16:26:03",
"upload_time_iso_8601": "2025-08-22T16:26:03.909897Z",
"url": "https://files.pythonhosted.org/packages/7b/0f/5252520e045cc683b9af6d1f1459b2915be1fefe6ffd7f8197606c44e41e/plone.restapi-9.15.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7757f426be2a333d75b6d2e56f6b0b4cc02905ba502782ace731b0701a67849a",
"md5": "b08681574a2d011e769c6cb7fbcca803",
"sha256": "489133964f587bca5381868fc8765e6e909fe63d0331cf63687b990e5e6473e3"
},
"downloads": -1,
"filename": "plone_restapi-9.15.2.tar.gz",
"has_sig": false,
"md5_digest": "b08681574a2d011e769c6cb7fbcca803",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 2972912,
"upload_time": "2025-08-22T16:26:06",
"upload_time_iso_8601": "2025-08-22T16:26:06.022773Z",
"url": "https://files.pythonhosted.org/packages/77/57/f426be2a333d75b6d2e56f6b0b4cc02905ba502782ace731b0701a67849a/plone_restapi-9.15.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-22 16:26:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "plone",
"github_project": "plone.restapi",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"landscape": true,
"requirements": [
{
"name": "plone.restapi",
"specs": []
}
],
"tox": true,
"lcname": "plone.restapi"
}