Skip to content

feat!: remove the ENABLE_MFE_CONFIG_API toggle [DEPR] - #39019

Draft
feanil wants to merge 2 commits into
masterfrom
feanil/depr-enable-mfe-config-api
Draft

feat!: remove the ENABLE_MFE_CONFIG_API toggle [DEPR]#39019
feanil wants to merge 2 commits into
masterfrom
feanil/depr-enable-mfe-config-api

Conversation

@feanil

@feanil feanil commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Removes the LMS ENABLE_MFE_CONFIG_API toggle so that both MFE config
endpoints respond unconditionally:

  • GET /api/mfe_config/v1
  • GET /api/frontend_site_config/v1/

Both return only non-sensitive frontend configuration, and both are empty unless
an operator populates MFE_CONFIG, MFE_CONFIG_OVERRIDES, or
FRONTEND_SITE_CONFIG. Those data settings are unchanged and remain the way
operators control what the endpoints return. The toggle was LMS-only; there was
no CMS equivalent.

Breaking changes for this DEPR were unblocked on 2026-08-19.

DEPR: #38959

Task list from the DEPR ticket

  • Delete the ENABLE_MFE_CONFIG_API toggle definition + annotation in lms/envs/common.py.
  • Remove the two if not settings.ENABLE_MFE_CONFIG_API guards in lms/djangoapps/mfe_config_api/views.py so both endpoints respond unconditionally.
  • Remove ENABLE_MFE_CONFIG_API overrides in lms/envs/test.py and lms/envs/mock.yml, and update the "returns 404 when disabled" tests.
  • Review the ADR at lms/djangoapps/mfe_config_api/docs/decisions/0001-mfe-config-api.rst and update as needed.

On the last item: CHANGELOG.rst in this repo explicitly says we don't maintain
a detailed changelog, so the operator-facing note lives in the BREAKING CHANGE
footer of the first commit (matching what was done for
DCS_SESSION_COOKIE_SAMESITE in 0bd95e7).

Operator transition

  • Set it to True? Drop the line — that is now the default.
  • Set it to False and populated MFE_CONFIG, MFE_CONFIG_OVERRIDES, or
    FRONTEND_SITE_CONFIG? That configuration is now served publicly by the two
    endpoints above. Review or clear it if it should not be public.
  • The key is simply ignored if left in LMS_CFG yaml or a private settings
    module.

tutor-mfe sets this toggle via a patch. Now that upstream ignores it the patch
is harmless, so no lockstep change is required.

feanil and others added 2 commits August 24, 2026 11:20
The LMS setting ENABLE_MFE_CONFIG_API (default False) gated two
read-only endpoints used by frontends:

  GET /api/mfe_config/v1
  GET /api/frontend_site_config/v1/

Both return only non-sensitive frontend configuration, and both are
empty unless an operator populates MFE_CONFIG, MFE_CONFIG_OVERRIDES, or
FRONTEND_SITE_CONFIG.  There was no reason to keep them off by default,
so the toggle is gone and both endpoints now respond unconditionally.

The data settings (MFE_CONFIG, MFE_CONFIG_OVERRIDES,
FRONTEND_SITE_CONFIG) are unchanged and remain how operators control
what these endpoints return.  The toggle was LMS-only; there was no CMS
equivalent.

Removes:
- the toggle definition and annotation in lms/envs/common.py
- the `if not settings.ENABLE_MFE_CONFIG_API` guards in
  MFEConfigView.get and FrontendSiteConfigView.get, plus the
  HttpResponseNotFound / NotFound imports they were the only users of
- the ENABLE_MFE_CONFIG_API overrides in lms/envs/test.py and
  lms/envs/mock.yml
- the two "returns 404 when disabled" tests, which no longer describe
  any reachable behaviour

See DEPR ticket: #38959

BREAKING CHANGE: Operators who set ENABLE_MFE_CONFIG_API in their
LMS_CFG yaml or a private settings module should drop the line; the key
is now ignored.  If you set it to True, deleting it is all that is
needed -- that is the new default.  If you set it to False *and*
populated MFE_CONFIG, MFE_CONFIG_OVERRIDES, or FRONTEND_SITE_CONFIG,
that configuration is now served publicly by the two endpoints above;
review or clear it if it should not be public.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ADR 0001 recorded the decision to gate the MFE config API behind
ENABLE_MFE_CONFIG_API.  That decision has been reversed, so replace the
bullet with the current state -- the API is always available -- while
keeping the history and linking the DEPR ticket that removed the
toggle.

See DEPR ticket: #38959

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant