Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Document optimistic concurrency: _metadata.version, ETag, If-Match → 412 (bundle #561)

Closed Beginner friendly
#297 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
73/100
Issue type
Documentation
Clarity
Clearly specified
Activity status
Active
Domain
documentation

Research direction

Read the existing API documentation for component and page data, then use the behavior listed in this issue to identify where concurrency and upgrade guidance belongs. Document _metadata.version, ETag and If-Match behavior, the 412 cases, the migration command, and CORS requirements; done means the API docs cover these details and direct module-side UI and ordering guidance to the module docs.

Written by the indexing model from the issue text.

Description

Bundle PR components-web-app/api-components-bundle#562 (issue #561) adds optimistic concurrency for components and page data. To document:

  • _metadata.version: an integer for each row, set by Doctrine's #[ORM\Version]. A draft has its own version, starting at 1. Signed-in responses also send ETag: "<version>"; anonymous responses are unchanged.
  • If-Match: "<version>" on PATCH, PUT and DELETE is compared with the row the URL addresses. A stale version gets 412 with the current resource in GET shape. A write to a published IRI that would be redirected to an existing draft also gets 412, with the draft as the body.
  • A save that loses a race at commit gets 412 too, with or without If-Match. A DELETE is checked only against If-Match.
  • The order PATCH and /move ignore If-Match.
  • Upgrade: a new resource_version column, so run doctrine:migrations:diff.
  • CORS for cross-origin apps: expose ETag and allow If-Match.

The module side (conflict UI, ordering updates by version) is the module's own docs.

Dominant language
TypeScript
Stars
0
Forks
0
Avg merge
1h 20m
Merged PRs (30d)
1

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from components-web-app/docs

All issues in components-web-app/docs

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.