Document optimistic concurrency: _metadata.version, ETag, If-Match → 412 (bundle #561)
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 sendETag: "<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 againstIf-Match. - The order PATCH and
/moveignoreIf-Match. - Upgrade: a new
resource_versioncolumn, so rundoctrine:migrations:diff. - CORS for cross-origin apps: expose
ETagand allowIf-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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from components-web-app/docs
-
documentation
Difficulty 4/5 3-5 days Newbie friendliness 45/100
components-web-app/docs#290 · 2 comments ·
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
components-web-app/docs#289 · 2 comments ·
-
documentation
Difficulty 4/5 3-5 days Newbie friendliness 43/100
components-web-app/docs#285 ·
-
documentation
Difficulty 4/5 1-2 days Newbie friendliness 35/100
components-web-app/docs#284 ·
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 15/100
components-web-app/docs#237 · 2 comments ·
All issues in components-web-app/docs
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
lyswhut/lx-music-desktop#3026 ·
-
area: ci type: test
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
schlessera/brain-kit#2769 ·
Maintainers usually reply within 1 day
-
Read a vector index's quantization back on Neo4j 2026.10, which reports vector.quantization.typeOpen
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
liberation-data/drivine#231 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
alveusgg/alveusgg#2502 · 3 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day