invenio-rdm-records 24.1.0
InvenioRDM module for the communities feature.
License: MIT
Requires Python: >=3.7
Keywords: invenio rdm data model

..
    Copyright (C) 2019 CERN.
    Copyright (C) 2019 Northwestern University.


    Invenio-RDM-Records is free software; you can redistribute it and/or
    modify it under the terms of the MIT License; see LICENSE file for more
    details.

====================
 Invenio-RDM-Records
====================

.. image:: https://github.com/inveniosoftware/invenio-rdm-records/workflows/CI/badge.svg
        :target: https://github.com/inveniosoftware/invenio-rdm-records/actions?query=workflow%3ACI+branch%3Amaster

.. image:: https://img.shields.io/github/tag/inveniosoftware/invenio-rdm-records.svg
        :target: https://github.com/inveniosoftware/invenio-rdm-records/releases

.. image:: https://img.shields.io/pypi/dm/invenio-rdm-records.svg
        :target: https://pypi.python.org/pypi/invenio-rdm-records

.. image:: https://img.shields.io/github/license/inveniosoftware/invenio-rdm-records.svg
        :target: https://github.com/inveniosoftware/invenio-rdm-records/blob/master/LICENSE

DataCite-based data model for Invenio.

Further documentation is available on
https://invenio-rdm-records.readthedocs.io/

Development
===========

Install
-------

Choose a version of search and database, then run:

.. code-block:: console

    pipenv run pip install -e .[all]
    pipenv run pip install invenio-search[<opensearch[1]>]
    pipenv run pip install invenio-db[<[mysql|postgresql|]>]


Tests
-----

.. code-block:: console

    pipenv run ./run-tests.sh


..
    Copyright (C) 2019-2025 CERN.
    Copyright (C) 2019-2024 Northwestern University.
    Copyright (C) 2024      KTH Royal Institute of Technology.
    Copyright (C) 2024-2026 Graz University of Technology.

    Invenio-RDM-Records is free software; you can redistribute it and/or
    modify it under the terms of the MIT License; see LICENSE file for more
    details.

Changes
=======

Version v24.1.0 (released 2026-02-17)

- feat(facets): add publication date facet
- fix(request-events): include anchor method in override
- fix: use role IDs instead of names.

Version v24.0.0 (released 2026-02-03)

- chore(setup): bump dependencies
- refactor(Link): take into account upstream changes
- chore(black): update formatting to >= 26.0
- refactor: replace deprecated Link usage
- revert: part of utcnow fix
- fix: SyntaxWarning: "\d" is invalid
- fix: ChangedInMarshmallow4Warning
- fix: FutureWarning
- fix:  PytestCollectionWarning
- fix(Warning): Received  for a non-boolean attribute .
- fix(js): react warnings
- fix(chore): RemovedInMarshmallow4Warning
- fix(chore): DeprecationWarning stdlib
- fix(chore): LegacyAPIWarning sqlalchemy
- fix(chore): DeprecationWarning stdlib
- fix:  DeprecationWarning
- refactor: remove max_number form context
- refactor: remove usage of is_parent context
- refactor(schema): remove usage of object_key
- fix(access_requests_ui): Fix view for guest when receiver isnt community

Version 23.2.2 (release 2026-01-27)

- fix(deposit): prevent Enter key from removing array field rows


Version 23.2.1 (release 2026-01-22)

- fix(permissions): allow system user to manage files
- fix(request_policies): allow system user to modify files
- chore: black formatting python3.9 compatability
- fix(files): fix for pending files with long names
- fix(deposit): rename conflicting prop func


Version v23.2.0 (released 2026-01-16)

- fix(requests): inherit from BaseRequest to fix self_html links
- fix(tests): update wikidata identifier
- fix: The character 'U+fe0f' is invisible.
- Add Arabic translations for resource types
- fix(schema): take the list of allowed tags and attrs from the app config

Version v23.1.1 (released 2026-01-08)

- bibtex: schema: add publication-thesis for compatibility

Version v23.1.0 (released 2026-01-07)

- fix(tests): use valid WikiData IDs and Geonames in fixtures
- feat(config): validate WikiData IDs for locations
- feat: add wikidata identifier to known identifier schemes
- serializers: use datapackage mediatype
    Express file MIMEType as mediatype, cf. Data Resource specification, see
    https://datapackage.org/standard/data-resource/#mediatype
- fix(tests): make logic to restore last revision more robust
    * the `invenio_records.api.RevisionsIterator` definition mentions that
      the list of revision IDs may have "holes" in it:
      https://github.com/inveniosoftware/invenio-records/blob/master/invenio_records/api.py

Version v23.0.0 (released 2025-12-12)

- chore(setup): bump major versions
- feat(permissions): add reply_comment permission

Version v22.7.0 (released 2025-12-08)

- fix(access_requests_ui): Fix permissions for commenting with guest token when request is locked
- fix(permissions): Fix can_create_comment to use parent attibute

Version v22.6.0 (released 2025-11-21)

- fix(requests): don't hard-code /me for record review request
- refactor(requests): move _update_link_config to new BaseRequest

Version v22.5.0 (released 2025-11-20)

- feat(file-modification): allow admins to unlock files for editing by default
- feat(file-modification): allows to configure conditions for users to edit files of published records

Version v22.4.0 (released 2025-11-12)

- setup: bump `invenio-github` major version

Version v22.3.0 (released 2025-11-05)

- feat(serializers.datacite): Add DataCite schema version 4.5 support
- fix(services): Make 'notes' parameter optional in _update_quota

Version v22.2.0 (released 2025-11-04)

- feat(secret-links): make expiration date optional or required for secret links
- feat(community-records): adds service component calls to RecordCommunitiesService

Version v22.1.0 (released 2025-10-27)

- feat(form): add support for help text to creatibutors button in the deposit form

Version v22.0.1 (released 2025-10-27)

- fix(contrib): meeting field ID allowed schemas source
- fix(deposit): duplicate uploads from resetting progress

Version v22.0.0 (released 2025-10-21)

- feat(resource_types)!: Remove publication-thesis
    * BREAKING CHANGE: resource_type with id publication-dissertation will now be used instead as it is correctly mapped to the "Dissertation" type in DataCite

Version v21.3.0 (released 2025-10-20)

- fix(deposit-ui): disable drag-n-drop files when files are locked
- fix(deposit-ui): re-add code removed in 9e8f553
- feat(schema): added related_identifiers variable
- fix(setup): temporarily tighten commonmeta-py pin
    * this avoids getting a version of the dependency with breaking changes
- fix(oai-pmh): handle broader permission denied errors
    * previously, the `GetRecord` verb targeting a restricted record would
      result in a HTTP 500 response due to an unhandled error
    * the `getrecord_fetcher()` function only handled
      `PermissionDeniedError` exceptions but not
      `RecordPermissionDeniedError`, which are the ones raised by services
    * since both of them are subclasses of `PermissionDenied`, we simply
      handle that instead

Version v21.2.0 (released 2025-10-01)

- feat(config): add last activity sort option

Version v21.1.0 (released 2025-09-24)

- installation: upgrade invenio-jobs

Version v21.0.0 (released 2025-09-24)

- installation: bump invenio-communities and invenio-checks
- feat(deletion-request): different checklist for immediate and request
- feat(record-deletion): add notifications
- fix(record-deletion): tombstone should have accepter's ID
- feat(deletion-request): add tags for valid removal reasons
- feat(schema): allow `removed_by` to be passed to tombstone schema
    * Allows loading the field in the schema.
    * If not passed, defaults to the `identity.id` of the deletion action.
- feat(schema): add `deletion_policy` to record tombstone
- feat: add support to request deletion of a record
- chore(js-tests): upgrade react-overridable major version
- fix(CreatibutorsModal): get identifier scheme from recent suggestions
- fix(datacite test link): update Datacite test DOI link
- fix: invalid datacite test mode link

Version v20.2.0 (released 2025-09-16)

- **feat(deposit-form)!: added `react-overridable` support more consistently across all deposit form fields**
    - Added Overridable for many components that did not already have it. This was done following the existing naming convention. New Overridables do not represent any breaking or behavior changes.
    - Renamed a number of existing Overridable IDs for better compliance with existing naming conventions. This is the full list:
        - `ReactInvenioDeposit.FileUploader.layout` -> `InvenioRdmRecords.DepositForm.FileUploader.Container`
        - `ReactInvenioDeposit.FileUploader.ImportButton.container` -> `InvenioRdmRecords.DepositForm.FileUploader.ImportButton`
        - `ReactInvenioDeposit.FileUploader.FileUploaderArea.container` -> `InvenioRdmRecords.DepositForm.FileUploader.UploadArea`
        - `ReactInvenioDeposit.FileUploader.NewVersionButton.container` -> `InvenioRdmRecords.DepositForm.FileUploader.NewVersionButton`
        - `ReactInvenioDeposit.FileUploader.Modal.container` -> `InvenioRdmRecords.DepositForm.FileUploader.Modal`
        - `ReactInvenioDeposit.FileUploaderToolbar.layout` -> `InvenioRdmRecords.DepositForm.FileUploaderToolbar.Container`
        - `ReactInvenioDeposit.FileUploaderToolbar.MetadataOnlyToggle.container` -> `InvenioRdmRecords.DepositForm.FileUploaderToolbar.MetadataOnlyToggle`
        - `InvenioRDMRecords.CreatibutorsModal.RoleSelectField.container` -> `InvenioRdmRecords.DepositForm.CreatibutorsModal.RoleSelectField`
        - `InvenioRDMRecords.CreatibutorsModal.PersonRemoteSelectField.container` -> `InvenioRdmRecords.DepositForm.CreatibutorsModal.PersonRemoteSelectField`
        - `InvenioRDMRecords.CreatibutorsModal.FullNameField.container` -> `InvenioRdmRecords.DepositForm.CreatibutorsModal.FullNameField`
        - `InvenioRDMRecords.CreatibutorsModal.PersonIdentifiersField.container` -> `InvenioRdmRecords.DepositForm.CreatibutorsModal.PersonIdentifiersField`
        - `InvenioRDMRecords.CreatibutorsModal.PersonAffiliationsField.container` -> `InvenioRdmRecords.DepositForm.CreatibutorsModal.PersonAffiliationsField`
        - `InvenioRDMRecords.CreatibutorsModal.OrganizationRemoteSelectField.container` -> `InvenioRdmRecords.DepositForm.CreatibutorsModal.OrganizationRemoteSelectField`
        - `InvenioRDMRecords.CreatibutorsModal.OrganizationNameField.container` -> `InvenioRdmRecords.DepositForm.CreatibutorsModal.OrganizationNameField`
        - `InvenioRDMRecords.CreatibutorsModal.OrganizationIdentifiersField.container` -> `InvenioRdmRecords.DepositForm.CreatibutorsModal.OrganizationIdentifiersField`
        - `InvenioRDMRecords.CreatibutorsModal.OrganizationAffiliationsField.container` -> `InvenioRdmRecords.DepositForm.CreatibutorsModal.OrganizationAffiliationsField`
        - `InvenioRdmRecords.DatesField.AddDateArrayField.Container` -> `InvenioRdmRecords.DepositForm.DatesField.Container`
        - `InvenioRdmRecords.DatesField.DescriptionTextField.Container` -> `InvenioRdmRecords.DepositForm.DatesField.DescriptionField`
        - `InvenioRdmRecords.DatesField.DateTextField.Container` -> `InvenioRdmRecords.DepositForm.DatesField.DateField`
        - `InvenioRdmRecords.DatesField.TypeSelectField.Container` -> `InvenioRdmRecords.DepositForm.DatesField.TypeField`
        - `InvenioRdmRecords.DatesField.RemoveFormField.Container` -> `InvenioRdmRecords.DepositForm.DatesField.RemoveButton`
    - No existing overridables have been removed completely to avoid breaking current implementations in an unresolvable way.

Version v20.1.0 (released 2025-09-05)

- setup: bump major versions of invenio-jobs and invenio-vocabularies
- fix: improve rendering of ErrorMessage in deposit form

Version v20.0.3 (released 2025-09-03)

- fix(deposit-form): correct wrong propType for optionalDOItransitions
- fix(deposit-form): on delete draft discard all changed pids
    * discard all draft pids if there is no published record (i.e. new version or new draft)
    * discard all draft pids that are not in the published record

Version v20.0.2 (released 2025-09-01)

- fix(optional-doi): show correctly showed value on form initialization
    * uses published record doi to check if the managed DOI can be unreserved.
    * `shouldCheckForExplicitDOIReservation` condition is evaluated against pids.doi because
      before it was taking into account only the pids object and there more pids could be present e.g. oai
- fix(iiif): add error handler for `MultimediaImageNotFound`

Version v20.0.1 (released 2025-08-27)

- fix: use config variable instead of redefining
- services: create RDMCommunityRecordSearchOptions
- deposit-form: add fallback message if checksum is not yet available
    * this is relevant for the multipart file upload with local file
      storage, where the checksum gets calculated in a background task after
      finalizing the upload
- fix(schemaorg): chase award schema relaxation from Invenio-Vocabularies
- fix(oaipmh): properly change output format
    * `URLSearchParams` does not parse URLs,
      https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams#no_url_parsing,
      preventing the `metadataPrefix` from changing when a new value is
      selected on the dropdown.
- UI: use X for discard instead of trash icon
- UI: add icon to delete button

Version v20.0.0 (released 2025-08-01)

- feat: implement request reviewers functionality
  - Add RequestReviewers generator with configuration support
  - Refactor request.reviewer to request.reviewers for consistency
  - Remove deprecated approve action
  - Add comprehensive tests for reviewer assignment
  - Include configuration validation for reviewer settings
- setup: bump major versions of invenio-communities and invenio-checks
  - needed to isolate the new request reviewers functionality

Version v19.5.3 (released 2025-07-31)

- optional-DOI: validation workflow improvements
  - fixes issue where optional DOI validation was not properly handled during the submit for review process
  - adds proper optional DOI validation when submitting records for review
- components: adds informative error message when attempting to create duplicate review requests

Version v19.5.2 (released 2025-07-30)

- fix(serializers): Strip none and trailing whitespace for thesis

Version v19.5.1 (released 2025-07-21)

- fix: cross-origin-file-uploads

Version v19.5.0 (released 2025-07-17)

- meeting cf: fix typo in the mapping
- i18n: pulled translations
- serializers: bibtex: Prefix all_version with doi
- tests: serializers: Add test for bibtex all versions
- serializers: bibtex: Add all versions export support

Version v19.4.2 (released 2025-07-16)

- PublishButton: Separate PublishModal and add checkbox easily via params
- assets: PublishModal: Ensure unique fieldPath and id for checkboxes
- Fix: installation failed due to type error

Version v19.4.1 (released 2025-07-14)

- doi: handle case with no configured parent dois

Version v19.4.0 (released 2025-07-10)

- chores: replacing importlib_metadata with importlib.metadata
- i18n: run js extract msgs
- i18n: replace Trans for EmbargoAccess
- i18n: replace Trans with i18next.t in VersionField
- i18n: replace Trans with i18next.t in DeleteModal
- i18n: replace Trans in access msgs
- i18n: fix warning msg not showing
- i18n: cs vocabulary translations (#2093)
- i18n:push translations
- i18n: run js compile catalog
- i18n: run js extract msgs
- i18n: refactor compile catalog
- i18n: force pull py and js translations
- i18n: extract python msgs
- fix: conflicting s3 part size for 1M-5M files
- ext: Add deprecation warning for publishModalExtraContent
- assets: PublishButton: Rename overridable containers
- assets: PublishButton: Make submit and publish utility overridable
- deposit: change creatributor and license item button order
- tests: have fixture test ignore load order
- resource: fix remove last community error
- fix: added overridable blocks and passing serializing functions as props

Version v19.3.0 (released 2025-07-02)

- fix: disabled remote and fetch transport in permissions
- fix: RemovedInMarshmallow4Warning
- fix: ChangedInMarshmallow4Warning
- contrib: specify proceedings in imprint title label
- fix: pkg_resources DeprecationWarning
- tests: add tests for setting record/user quotas
- quotas: set the record's file quota in a service component
- quotas: add extra info about the user_id column in record quotas
- quotas: remove unique constraint for the user_id in record quotas
- deposit-ui: implement uppy uploader field
- oaiserver/services: simplify search filtering
- fix: SADeprecationWarning
- i18n: localize embargoed date
- records-api: add Data Package serializer

Version v19.2.0 (released 2025-06-13)

- checks: integrate service component and community requests

Version v19.1.0 (released 2025-06-12)

- form: display errors on draft load
- deposit: updated fieldpath for feedback label
- serializers/datacite: configurable dumping of access right (#2047)
    * serializers/datacite: configurable dumping of access right
    * Adds a new `RDM_DATACITE_DUMP_ACCESS_RIGHTS` config variable to
      control if the access right level is included in the DataCite
      serialization. The value is based on the vocabulary documented at
      <https://wiki.surfnet.nl/spaces/standards/pages/11055603/info-eu-repo#infoeurepo-AccessRights>
    * confix: rename to `RDM_DATACITE_DUMP_OPENAIRE_ACCESS_RIGHTS`
- licenses: add creative commons public domain mark from spdx
- serializers: add publication-section rdm type (book section) to bibtex serialization
- localizing dates based on application selected locale
- contrib-meeting: add missing `url` field to deposit form

Version v19.0.1 (released 2025-06-10)

- file uploader: change from checkbox to radio
- file uploader: improve exceeded limit message
- tests: update error to reflect records-resources file permission order change
- creatibutors: adapt to new feedback label interface
- creatibutors: fix nested errors & feedback display

Version v19.0.0 (released 2025-06-03)

- setup: version bump on dependent packages
- fix: added permissions for getting/setting transfer metadata
  * Added extra permissions to get/update transfer metadata. These permissions
  are not used by REST API, they are used in background tasks, at this
  moment for fetch transfer (not enabled by default and not supported in UI)
- test: fixed test - file key is now required
- permissions: multipart upload with local fs storage
- Implementation of RFC 0072 - Pluggable transfer types
  * IfFileIsLocal is not used anymore as it was handling just one type of transport
  * Switched to IfTransferType permission generators
- installation: remove collections dependency

Version v18.14.0 (released 2025-06-02)

- config: make community request type classes customizable
    * Allows to customize community submissions and inclusion request type
      classes via the ``RDM_COMMUNITY_SUBMISSION_REQUEST_CLS`` and
      ``RDM_COMMUNITY_INCLUSION_REQUEST_CLS`` config variables.

Version v18.13.0 (released 2025-06-02)

- Move collections implementaiton to Invenio-Collections

Version v18.12.0 (released 2025-05-23)

- resources: expose get current revision of record
- deposit: fix global server errors in frontend
- feedback-ui: Add specific ID to disconnected feedback form

Version v18.11.0 (released 2025-05-16)

- deposit-ui: fix upload files error state
- deposit-ui: add feedback messages on the file level

Version v18.10.0 (released 2025-05-13)

- review: add components hook for submitting review
- deposit: show global backend validation message

Version v18.9.0 (released 2025-05-13)

- mappings: remove objectfields from "index.query.default_field" settings
- update setup.cfg

Version v18.8.1 (released 2025-05-07)

- schemas: provide default value for quota increase notes
- metadata: copyrights placeholder and help text changes
- ui serializer: display more thesis information

Version v18.8.0 (released 2025-05-06)

- services: make commit file link dependent on allow_upload
- meeting: add identifiers to data model of meeting contrib field
- services: include Opensearch meta in the results


Version v18.7.0 (released 2025-04-28)

- logging: add basic logging for expired embargoes

Version v18.6.1 (released 2025-04-28)

- services: remove commit file link from record (bugfix)

Version v18.6.0 (released 2025-04-24)

- datamodel contrib: add defense and submission date to thesis field

Version v18.5.0 (released 2025-04-24)

- datamodel: add copyright field

Version v18.4.0 (released 2025-04-23)

- urls: integrate invenio_url_for
- permissions: replace Disabled with SystemProcess

Version v18.3.2 (released 2025-04-17)

- custom_fields: added fallback to old thesis format and conditionally handle form display based on config

Version v18.3.1 (released 2025-04-14)

- user quota: anticipate system user
- doi: increase label width

Version v18.3.0 (released 2025-04-10)

- pids: change optional DOI validation
- views: FAIR signposting level 1 support (remove comment)
- views: signposting: fix fallback to level 2 linkset if collections size is too big to control link header size
- owner: allow system_user to be record owner


Version v18.2.0 (released 2025-04-03)

- fix: deletion_status gone after record.commit
- fix: tombstone gone after record.commit
- file_links: prepare for changes in invenio-records-resources
- deposit-ui: show icon and tooltip for new error format with severity error

Version v18.1.0 (released 2025-03-27)

- align licenses modal with funders modal
- use underscores for setuptools configuration instead of dashes
- lots of translations

Version v18.0.0 (released 2025-03-26)

deposit-ui: creatibutors: support general new error format with severity (fix null)
deposit-ui: creatibutors: support general new error format with severity
deposit-ui: fix: do not consider new error format's description as a field
thesis: add department and type (breaking change)
imprint: add edition

Version v17.4.0 (released 2025-03-18)

- deposit-ui: Support new error format with severity and description
  - FeedbackLabel for creatibutors and license

Version v17.3.0 (released 2025-03-11)

- resources: add param to filter shared with my uploads
  - returns record needs on entity resolution
  - reindex associated request on parent access changes
- service: change community submission actions on who can manage
- links: add preview_html link

Version v17.2.0 (released 2025-03-10)

- views: signposting: files: fix filename encoding issues for downloads
- resource_types: fix datapaper and interactiveresource datacite mapping
- schema.org: add uploadDate for VideoObject serialization [+]
- cff: add default "message" field
- iiif: fix info request not being proxied

Version v17.1.0 (released 2025-02-21)

- views: FAIR signposting level 1 support
- views: FAIR signposting remove linkset link to itself

Version v17.0.2 (released 2025-02-14)

- serializers/dcat: fix broken subject serialization for terms with apostrophes

Version v17.0.1 (released 2025-02-13)

- Bump pre-release dependencies to stable.

Version v17.0.0 (released 2025-02-13)

- Promote to stable release.
- serializers: DataCite to DCAT-AP: fix undefined variable $cheme for relation type has metadata
- services: proper escape the fields key in links generation
- UISerializer: add polygon locations to serializer in addition to points (#1924)

Version v17.0.0.dev2 (released 2025-01-23)

Version v17.0.0.dev1 (released 2024-12-16)

- fix: flask-sqlalchemy.pagination >= 3.0.0
- comp: make compatible to flask-sqlalchemy>=3.1
- setup: change to reusable workflows
- setup: bump major dependencies

Version v16.8.0 (released 2025-01-27)

- resources: expose record revisions

Version v16.7.1 (released 2025-01-21)

- optional-doi: fix new upload disabled states

Version v16.7.0 (released 2025-01-21)

- pids: improve deposit UI for optional DOI
- deposit-ui: fix affiliation selection input display

Version v16.6.1 (released 2025-01-16)

- Revert "bug: add custom comment notification for record/draft requests"
    * This is actually a breaking change since it introduces a new
      set of notification templates that will potentialy not be
      styled if overridden in an instance's overlay.

Version v16.6.0 (released 2025-01-16)

- notifications: add custom comment template for record inclusion
  and draft review requests
- deposit-ui: fix affiliations dropdown behavior for custom values
- moderation: fix use of uow
- serializers/bibtex: Conference paper not falling back to proceedings
- serializers/bibtex: Conference proceeding to proceedings
- serializers/bibtex: year and month using publication date
- rights: fix serialize condition for controlled license

Version v16.5.1 (released 2024-12-16)

- pids: add manage permission to be able to manage DOIs
- deposit: fix validation check when user needs a DOI and DOI is optional

Version v16.5.0 (released 2024-12-16)

- pids: add support for optional DOI

Version v16.4.1 (released 2024-12-11)

- mappings: add missing `identifiers` to community orgs
    * Adds the missing `identifiers` mapping field to community organizations

Version v16.4.0 (released 2024-12-10)

- bibtex: add trailing comma in url field
- community-records: allow scan search
    * Adds `scan` and `scan_params` arguments to
      `CommunityRecordsService.search(...)`, to allow for serving scan
      results (but only via the service).
- serializer: updated subjects and affiliations in dcat
- schema: added identifiers to subjects
- serializers: add datapackage serializer (#1742)

Version v16.3.4 (released 2024-12-06)

- github: return None for `NOASSERTION` license
- datacite: fix funding serialization for optional award fields
    * Makes sure that we handle missing values for optional award fields
      like "title" and "number".

Version v16.3.3 (released 2024-12-04)

- github: handle missing repo license

Version v16.3.2 (released 2024-12-04)

- github: lower license spdx id

Version v16.3.1 (released 2024-12-02)

- deposit-ui: make sure we handle null/undefined for SchemaField
- deposit-ui: skip unecessary removal of empty values in serialization
    * This initial removal of empty values can be dangerous, since the
      `record` at this point is a UI object representation that could
      potentially include circular references or very deeply nested objects.
      Since `_removeEmptyValues` is recursive this can lead to stack
      overflow errors.
- deposit-ui: log errors on all deposit form actions
    * This can help with debugging unexpected non-network related errors
      that might occur in the logic before/after a REST API requests.

Version v16.3.0 (released 2024-11-27)

- github: added default license from Github API
- deposit-ui: fix affiliations rendering during edits
- github: added custom_fields in metadata extraction
- github: added optional swhid field to the bibtex export
- datacite: improve error logging formatting and grouping
    * Avoids f-strings in logging calls so that entries are easier to be
      grouped.
    * Adds exception info to the logged errors.
- config: added service schema from config
- requests: manage sending notifications

Version v16.2.0 (released 2024-11-19)

- search: pass search parameters to collection records

Version v16.1.1 (released 2024-11-19)

- communities: fix set/unset of default record community
    * Closes https://github.com/inveniosoftware/invenio-app-rdm/issues/2869
    * Fixes the allowed values that can be passed to set/unset the default
      community of a record.
    * Part of the fix is to also accept an empty string ("") as a valid
      value when setting the "default" field, which was a currently wrong
      behavior in some UI logic.

Version v16.1.0 (released 2024-11-18)

- tokens: disable "sub" verification
    * According to the JWT Specification (https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.2)
      `sub` has to be a string. PyJWT v2.10.0 started enforcing this validation,
      which breaks our usage of storing an object in the `sub` field.
    * Fixes jwt.decode options for specifying required fields.
- jsonschemas: backport "internal_notes" to v6.0.0
    * Backports the "internal_notes" field to the v6.0.0 JSONSchema, since
      it is backwards compatible, and thus doesn't require any record
      migration overhead.
- UI: display all affiliations

Version v16.0.1 (released 2024-11-11)

- deposit-ui: fix creator affiliations selection display
    * Fixes a bug where the selected affiliations from the dropdown do not
      appear inside the input box.

Version v16.0.0 (released 2024-11-11)

- identifiers: allow alternative identifiers with the same scheme but different values
- records: add intenal_notes schema field and bump of jsonschema version

Version v15.7.1 (released 2024-11-06)

- installation: bump babel-edtf to >=1.2.0
- tests: fix EDTF interval with unknown start/end
- ui: use config instead of hardcoded url
- setup: forward compatibility to itsdangerous>=2.1
- fix: DeprecationWarning of SQLAlchemy

Version v15.7.0 (released 2024-11-04)

- resources: make record error handlers configurable
    * Possible via the new `RDM_RECORDS_ERROR_HANDLERS` config variable.
- components: make content moderation configurable
    * Closes #1861.
    * Adds a new `RRM_CONTENT_MODERATION_HANDLERS` config variable to allow
      for configuring multiple handlers for the different write actions.
- user_moderation: use search for faster actions
    * Use search results to determine the user's list of records.
    * Use a TaskOp and Unit of Work to avoid sending Celery tasks immediately.
    * Add a cleanup task that will perform a more thorough check using the
      DB to lookup the user's records.
- deposit: add missing fields to record deserializer
- UI/UX: add consistent suggestions display to affiliations
- UI/UX: improve display of ROR information
- collections: move records search into service
- collections: added task to compute number of records for each collection
- services: make file-service components configurable
- access notification: provide correct draft preview link
    * Closes inveniosoftware/invenio-app-rdm#2827

Version v15.6.0 (released 2024-10-18)

- community: added myCommunitiesEnabled prop to CommunitySelectionSearch

Version v15.5.0 (released 2024-10-18)

- community: added autofocus prop to CommunitySelectionSearch

Version v15.4.0 (released 2024-10-17)

- DOI: fix wrong parent DOI link
- community: added props to make CommunitySelectionSearch reusable

Version v15.3.0 (released 2024-10-16)

- collections: display pages and REST API
- deposit: add feature flag for required community submission flow
- mappings: disable doc_values for geo_shape fields (#1807)
    * Fixes multiple values for ``metadata.locaations.features``.

Version v15.2.0 (released 2024-10-10)

- webpack: update axios and react-searchkit(due to axios) major versions

Version v15.1.0 (released 2024-10-10)

- jobs: register embargo update job type
- installation: upgrade invenio-jbs

Version v15.0.0 (released 2024-10-08)

- installation: bump invenio-communities
- dumper: refactor and updated docstring
- awards: added subjects and orgs, updated mappings
- relations: added subject relation in awards

Version v14.0.0 (released 2024-10-04)

- installation: bump invenio-vocabularies & invenio-communities

Version v13.0.0 (released 2024-10-03)

- collections: added feature, containing core functionalities and DB models
- ui: fixed propTypes warnings
- dependencies: bump flask-iiif to >1.0.0

Version v12.2.2 (released 2024-09-30)

- Improve handling of draft PID in RecordCommunitiesService
- Revert "deposit: check permission and set disable tooltip for publish button"
- Remove DeprecationWarning for sqlalchemy
- Add compatibility layer to move to flask>=3

Version v12.2.1 (released 2024-09-19)

- file upload: better handling of errors when uploading empty files
- serializers: ensure that the vocab id is set before performing a look up
- deposit: take into account the can_publish permission to control when the
           Publish button should be enabled or disabled

Version v12.1.1 (released 2024-09-11)

- resource: fix add record to community
- controls: refactored isDisabled function

Version v12.1.0 (released 2024-08-30)

- config: added links for thumbnails (#1799)

Version v12.0.4 (released 2024-08-28)

- stats: add missing "is_machine" field

Version v12.0.3 (released 2024-08-27)

- add permissions checks for community submission policy

Version v12.0.2 (released 2024-08-26)

- update file quota and size vars
- add quota config for media_files bucket

Version v12.0.1 (released 2024-08-22)

- bump invenio-vocabularies

Version v12.0.0 (released 2024-08-22)

- mappings: add analyzers and filters to improve results when searching records

Version v11.8.0 (released 2024-08-21)

- pids: fix parent DOI link generation
- schemaorg: add ``dateCreated`` field (closes #1777)
- i18n: push translations
- package: bump react-invenio-forms
- subjects: remove suggest from dropdown if not required
    * closes https://github.com/inveniosoftware/invenio-app-rdm/issues/2767

Version v11.7.0 (released 2024-08-12)

- resources: add vnd.inveniordm.v1+json http header
- translation: update file paths for strings (UI)

Version v11.6.0 (released 2024-08-07)

- creatibutors: fix buttons order
- permissions: change error handler for resolving pid permission denied
- record inclusion: use system identity to accept inclusion request when can_include_directly
- user_moderation: improve DB queries and use Celery tasks
- fix: use index to distinguish type of record in results
    * The problem with "is_published" is that drafts created from records will
      not be recognised correctly.
    * Using the index is a valid solution but it is not a nice implementation.
- results: added support for drafts in the results list
- fix(community): set branding
    * The set branding didn't work at all. It didn't work for rebranding if
      a default already exists and it didn't work if no branding exists at
      all.
    * The default property of the CommunitiesRelationManager needs a string.
      It can't handle a dict.

Version v11.5.0 (released 2024-07-22)

- codemeta: added identifier to schema
- signposting: generate 1 link context object for metadata
- fix: abort on record deletion exception

Version v11.4.0 (released 2024-07-15)

- affiliations: update defaults to ror v2

Version 11.3.1 (released 2024-07-12)

- processors: fix tiles files iteration
    * Creates a copy of the files list to be iterated since we might be
      modifying the underlying dictionary while processing tiles.

Version 11.3.0 (released 2024-07-12)

* media-files: generate ptif and include in manifets
* fix: pids required behavior
    * The fix for the parent doi configuration
      https://github.com/inveniosoftware/invenio-rdm-records/pull/1740 broke
      the "required" parameter for the pid provider. Previously you could
      have a pid provider that was active (shows up in the deposit form),
      but not required (pid would only be minted if something was entered).
      Because the check for "required" was removed, this stopped working.
    * This correction enables the option of having external DOIs without
      necessarily having to set one of them. This would not be possible with
      the "is_enabled" configuration.
* iiif: handle DecompressionBombError

Version 11.2.0 (released 2024-07-05)

- iiif: schema: only return images within size limit in manifest

Version 11.1.0 (released 2024-07-04)

- installation: upgrade invenio-drafts-resources

Version 11.0.0 (released 2024-06-04)

- installation: bump invenio-communities, invenio-vocabularies, invenio-drafts-resources and invenio-records-resources
- installation: added invenio-jobs

Version 10.7.1 (released 2024-05-31)

- secret links: set csrf token for all requests with secret links,
  i.e. fixes edit button CSRF error message on record landing page


Version 10.7.0 (released 2024-05-28)

- pids service: resolve owned_by for the emails
- entity_resolver: match drafts while resolving
- notifications: add user and guest notifications on request actions
- pids: unify pid behaviour, disable/enable parent DOI on demand, based on
  DATACITE_ENABLED configuration

Version 10.6.0 (released 2024-05-22)

- pids: prevent creating pids for restricted records
- pids: restrict updating permission levels for records based on a grace period

Version 10.5.0 (released 2024-05-21)

- iiif: add PyVIPS support for PDF thumbnail rendering

Version 10.4.3 (released 2024-05-17)

- services: fix permission for file edit

Version 10.4.2 (released 2024-05-08)

- iiif: resolve relative tiles storage against instance path

Version 10.4.1 (released 2024-05-07)

- grants: add new endpoint to grant access to records by groups

Version 10.4.0 (released 2024-05-07)

- config: add default values for IIIF tiles generation
- config: new variable for default IIIF manifest formats
- iiif: add pyramidal TIFF tiles generation on record publish via files processor
- iiif: harmonize configuration naming
- services: updated file schema
    - added "access" field to file schema
    - updated metadata field to be nested with a new schema
- services: fixed PDF image conversion bug
    - PDF thumbnails should now work again
- iiif: added fallback for iip server
- licenses: fix some delimiters not been recognized.

Version 10.3.2 (released 2024-04-30)

- iiif: fix proxy path generation

Version 10.3.1 (released 2024-04-25)

- resources: make IIIF proxy configurable via import string

Version 10.3.0 (released 2024-04-24)

- services: added nested links for record files

Version 10.2.0 (released 2024-04-23)

- iiif: added proxy to image server

Version 10.1.2 (released 2024-04-22)

- review: fix draft indexing operations order
    - Fixes a bug where when publishing directly to a community (e.g.
      beacause the uploader is a community admin/owner/curator), the draft
      would get deleted from the index and then get indexed again, thus
      appearing in the users' dashboard both as a published record and
      as a draft in review.

Version 10.1.1 (released 2024-04-19)

- pids: fix register/update serialization

Version 10.1.0 (released 2024-04-15)

- licenses: fix wrong characters encoding
- facets: integrate combined_subjects / fix nested subject faceting
- resources: fixed missing imports
- dublincore: fix license URL lookup

Version 10.0.0 (released 2024-04-11)

- Fixes datacite, dcat, dublin core, marcxml and schema.org serializer performance (reduced from ~500 queries in an OAI-PMH page down to 5).
- resources: fix performance of serializers
    - Rely on index data for licenses, subjects, communities, affiliations, and licenses instead of querying.
- datacite: fixed schema with unsafe access to parent
- datacite: fixed custom license links.
- serializer: add system updated date to DataCite
- csl: improve DOI (alternative identifier), ISBN, and ISSN
- csl: improve serialization performance
    - Remove funding information from CSL as it makes database queries and it is not relevant in the CSL JSON for generating citations.
- marcxml: removed service call for community slug
- marcxml: add license in 650
- marcxml: added references
- marcxml: updated award title in get_funding
- marcxml: added language
- marcxml: moved funding from 856 to 536
- marcxml: add contributor role
- marcxml: remove read_many call to vocab service
- records: add community.is_verified to mapping
- licenses: use sniffer to determine csv format
- licenses: bring urls up to date and use opensource and creativecommons as main urls with spdx as fallback
- licenses: change delimiter to comma
- assets: Add overridable tags (#1631)
- Added Swedish translation for vocabularies
- IIIF Presi: change viewingHint to individuals
- links: fix ESLint map expects a return value from arrow function
- vocab: add marc to roles.yaml

Version 9.1.0 (released 2