Page body
What this surface does
This surface is the embedded Manage URLs modal opened from CMS Page Editor for one page key.
Operators use it to maintain the URL rows attached to the current page without leaving the page editor workspace.
Where it appears
- parent flow: CMS Page Editor
- surface type: modal, not a standalone route
- page scope: one
urlPageKeyat a time
What operators can do here
- review all URLs already linked to the current page
- add a new row
- change the locale code for a row
- change the stored path
- remove an existing row
- save the full page-level URL set in one action
Row behavior
Add URLcreates a local row with:urlId: 0urlLocale: anyurlType: directurlPageKeyset to the current page key
- The table is sorted in the FE by
createdAt. - New unsaved rows are removed locally. Persisted rows first call
DELETE /urls/:urlId.
Important caveats
Save URLsuses the bulk update route. New rows are created and existing rows are updated through the samePUT /urlsworkflow.Save URLsis debounced by1000msbefore thePUT /urlsrequest is sent.- Closing the modal resets the FE state back to the last loaded URL list.
- The modal helper copy says URLs can be set as
directorredirect, but the current visible row editor only exposesLocaleandURL. There is no visible control forurlTypeor redirect destination on this surface today. - Row order is sorted by
createdAtinside the modal for display. It is not a ranking control and it does not change URL priority.
Validation rules
- every row must have a URL value
- every URL must start with
/ - URLs in the same save set must be unique
- backend uniqueness is also enforced globally by URL path, not only per page key
- backend validation also requires redirect records to carry
urlSettings.redirect.to
Verification status
- status:
verified_backend_and_core - verified FE parent surface:
- CMS Page Editor modal
- verified core routes:
GET /urls?pageKey=<pageKey>PUT /urlsDELETE /urls/:urlId