Api reference
components.core_enrollment.public.commands ¶
components.core_enrollment.public.entities ¶
Read-only entities exposed by the core_enrollment public API.
EnrollmentGroupView ¶
Bases: BaseModel
Aggregate-shaped read view for an EnrollmentGroup.
EnrollmentPeriodView ¶
Bases: BaseModel
Aggregate-rooted enrollment period view.
ReadChangeRequest ¶
Bases: BaseModel
A change request that produced or modified enrollment periods.
ReadChangeRequestTimelineSegment ¶
Bases: BaseModel
A time segment attributed to a change request for a member + service type.
ReadDiffPeriod ¶
Bases: BaseModel
A period in a revision diff, with an optional reason for the change.
ReadEnrollmentGroup ¶
Bases: BaseModel
Flat read-only view of an enrollment group, for API consumption.
change_request_timeline
class-attribute
instance-attribute
¶
ReadEnrollmentPeriod ¶
ReadModule ¶
ReadOverride ¶
Bases: BaseModel
A rule override for a member within an enrollment group.
ReadRevisionCause ¶
Bases: BaseModel
What triggered this revision.
ReadRevisionDiff ¶
Bases: BaseModel
Diff between two revisions of an enrollment group.
ReadRevisionSummary ¶
ReadScopedChange ¶
Bases: BaseModel
One scoped change within a change request.
components.core_enrollment.public.errors ¶
CoreEnrollmentError ¶
Bases: Exception
Base class for all CoreEnrollment errors.
components.core_enrollment.public.events_pipeline_events ¶
Integration events published to the events pipeline.
Re-exports from stdlib (events_pipeline_common) so backend callers can
continue importing from the public component path.
ChangeRequestApproved ¶
ChangeRequestFailed ¶
ChangeRequestRejected ¶
ENROLLMENT_CHANGES_STREAM_NAME
module-attribute
¶
EnrollmentGroupChanged ¶
RecomputeRequestCreated ¶
RecomputeRequestFailed ¶
Bases: EventSchema
Published when a recompute request transitions to failed status.
RecomputeRequestIgnored ¶
RecomputeRequestRetried ¶
Bases: EventSchema
Published when an operator manually retries a failed recompute request.
RecomputeRequestSucceeded ¶
Bases: EventSchema
Published when a recompute request reaches terminal succeeded status.
components.core_enrollment.public.fixtures ¶
marmot_prototype_data ¶
Synthetic enrollment data for the Marmot frontend prototype.
Contains hardcoded enrollment groups used by the synthetic=True code path
in enrollment_group.py. These definitions only depend on
core_enrollment.public.entities dataclasses — no ES-specific imports.
STATIC_ENROLLMENT_GROUPS
module-attribute
¶
personalize_synthetic_groups ¶
Replace the default viewed-member ID with the real queried member_id.
Source code in components/core_enrollment/public/fixtures/marmot_prototype_data.py
766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 | |
stub_revisions ¶
Stub revision and diff data for the Marmot frontend prototype.
Used by get_revisions and get_revision_diff until real revision
storage is wired up.
STUB_PERIODS
module-attribute
¶
STUB_PERIODS = {
1: [
_period(
"Marie",
"health_base",
date(2024, 1, 15),
date(2025, 6, 30),
)
],
3: [
_period(
"Marie",
"health_base",
date(2024, 1, 15),
date(2025, 6, 30),
),
_period(
"Jean",
"health_base",
date(2024, 2, 1),
date(2025, 6, 30),
),
_period(
"Jean",
"prevoyance_opt_1",
date(2024, 2, 1),
date(2025, 6, 30),
),
],
5: [
_period(
"Marie",
"health_base",
date(2024, 1, 15),
date(2025, 6, 30),
),
_period(
"Marie",
"prevoyance_opt_1",
date(2024, 3, 1),
date(2025, 6, 30),
),
_period(
"Jean",
"health_base",
date(2024, 2, 1),
date(2025, 6, 30),
),
_period(
"Jean",
"prevoyance_opt_1",
date(2024, 2, 1),
date(2025, 6, 30),
),
_period(
"Lea",
"health_base",
date(2024, 4, 10),
date(2025, 6, 30),
),
],
8: [
_period(
"Marie",
"health_base",
date(2024, 1, 15),
date(2025, 6, 30),
),
_period(
"Marie",
"prevoyance_opt_1",
date(2024, 3, 1),
date(2025, 6, 30),
),
_period(
"Marie",
"flex_add_on",
date(2024, 5, 1),
date(2025, 6, 30),
),
_period(
"Jean",
"health_base",
date(2024, 2, 1),
date(2025, 6, 30),
),
_period(
"Jean",
"prevoyance_opt_1",
date(2024, 2, 1),
date(2025, 6, 30),
),
_period(
"Lea",
"health_base",
date(2024, 4, 10),
date(2025, 6, 30),
),
],
10: [
_period(
"Marie",
"health_base",
date(2024, 1, 15),
date(2025, 6, 30),
),
_period(
"Marie",
"prevoyance_opt_1",
date(2024, 3, 1),
date(2024, 10, 31),
),
_period(
"Marie",
"prevoyance_opt_1",
date(2025, 3, 1),
date(2025, 6, 30),
),
_period(
"Marie",
"flex_add_on",
date(2024, 5, 1),
date(2025, 6, 30),
),
_period(
"Jean",
"health_base",
date(2024, 2, 1),
date(2025, 6, 30),
),
_period(
"Jean",
"prevoyance_opt_1",
date(2024, 2, 1),
date(2024, 11, 30),
),
_period(
"Lea",
"health_base",
date(2024, 4, 10),
date(2025, 6, 30),
),
],
12: [
_period(
"Marie",
"health_base",
date(2024, 1, 15),
date(2025, 6, 30),
),
_period(
"Marie",
"prevoyance_opt_1",
date(2024, 3, 1),
date(2024, 10, 31),
),
_period(
"Marie",
"prevoyance_opt_1",
date(2025, 3, 1),
date(2025, 6, 30),
),
_period(
"Marie",
"flex_add_on",
date(2024, 5, 1),
date(2025, 6, 30),
),
_period(
"Jean",
"health_base",
date(2024, 2, 1),
date(2025, 6, 30),
),
_period(
"Jean",
"prevoyance_opt_1",
date(2024, 2, 1),
date(2024, 11, 30),
),
_period(
"Lea",
"health_base",
date(2024, 4, 10),
date(2025, 6, 30),
),
],
}
STUB_REASONS
module-attribute
¶
STUB_REASONS = {
"Marie|prevoyance_opt_1|removed|2024-03-01|2025-06-30": "period split",
"Marie|prevoyance_opt_1|added|2024-03-01|2024-10-31": "split: contract amendment",
"Marie|prevoyance_opt_1|added|2025-03-01|2025-06-30": "new: contract update",
"Marie|flex_add_on|added|2024-05-01|2025-06-30": "new module + override",
"Jean|prevoyance_opt_1|removed|2024-02-01|2025-06-30": "dependent rule: primary gap",
"Jean|prevoyance_opt_1|added|2024-02-01|2024-11-30": "trimmed: follows primary",
}
STUB_REVISIONS
module-attribute
¶
STUB_REVISIONS = [
_rev(
1,
"2024-01-15 09:00",
_cause(
"change_request",
"ChangeRequest desc",
"2024-01-15 09:00",
change_request_id="a3f8c1",
requester_type="member",
),
),
_rev(
2,
"2024-01-15 09:01",
_cause(
"recompute",
"Contract update desc",
"2024-01-15 09:01",
trigger_type="contract_update",
),
),
_rev(
3,
"2024-02-01 14:20",
_cause(
"change_request",
"ChangeRequest desc",
"2024-02-01 14:20",
change_request_id="b7d2e5",
requester_type="member",
),
),
_rev(
4,
"2024-02-01 14:21",
_cause(
"recompute",
"Profile update desc",
"2024-02-01 14:21",
trigger_type="profile_update",
),
),
_rev(
5,
"2024-04-10 11:30",
_cause(
"change_request",
"ChangeRequest desc",
"2024-04-10 11:30",
change_request_id="c4e9f3",
requester_type="member",
),
),
_rev(
6,
"2024-06-15 16:00",
_cause(
"change_request",
"ChangeRequest desc",
"2024-06-15 16:00",
change_request_id="d1a6b8",
requester_type="admin",
),
),
_rev(
7,
"2024-06-15 16:01",
_cause(
"recompute",
"Contract update desc",
"2024-06-15 16:01",
trigger_type="contract_update",
),
),
_rev(
8,
"2024-11-05 10:45",
_cause(
"change_request",
"ChangeRequest desc",
"2024-11-05 10:45",
change_request_id="e8c3d7",
requester_type="alaner",
),
),
_rev(
9,
"2025-01-20 02:00",
_cause(
"recompute",
"Contract update desc",
"2025-01-20 02:00",
trigger_type="contract_update",
),
),
_rev(
10,
"2025-02-14 09:32",
_cause(
"change_request",
"ChangeRequest desc",
"2025-02-14 09:32",
change_request_id="f5b2a9",
requester_type="admin",
),
),
_rev(
11,
"2025-03-15 08:50",
_cause(
"recompute",
"Contract update desc",
"2025-03-15 08:50",
trigger_type="contract_update",
),
),
_rev(
12,
"2025-04-01 11:20",
_cause(
"recompute",
"Recompute run desc",
"2025-04-01 11:20",
trigger_type="recompute_run",
),
),
]
compute_stub_diff ¶
Compute a diff between two stub revision snapshots.
Source code in components/core_enrollment/public/fixtures/stub_revisions.py
stub_periods_at ¶
Return stub periods at a given revision, filling gaps.
Source code in components/core_enrollment/public/fixtures/stub_revisions.py
stub_reason ¶
Look up stub reason for a diff period.
Source code in components/core_enrollment/public/fixtures/stub_revisions.py
components.core_enrollment.public.python_api ¶
change_request ¶
ChangeRequestService ¶
Interact with Enrollment Group Change Requests
Source code in components/core_enrollment/public/python_api/change_request.py
create_and_process ¶
create_and_process(
enrollment_group_id,
contract_id,
primary_member_id,
scoped_changes,
requested_by_global_user_id=UNKNOWN_USER_ID,
requester_type=RequesterType.unknown,
requested_at=NOT_SET,
last_seen_revision_number=NOT_SET,
change_request_id=None,
)
Create a new enrollment group change request then process it through the engine in a SYNCHRONOUS way.
Each ScopedEnrollmentGroupChangeRequest carries its own
switch_date / end_date.
Source code in components/core_enrollment/public/python_api/change_request.py
MemberWithMembershipType ¶
RequesterType ¶
Bases: StrEnum
ScopedEnrollmentGroupChangeRequest ¶
enrollment_group ¶
Public read API for enrollment groups.
Supports three code paths controlled by SourceOfTruth:
- force_legacy: reads only from country-specific legacy repositories
- force_core_stack: reads only from the core_enrollment EnrollmentGroup repository
- follow_migration: delegates to per-country feature flags; when legacy flag is
on, merges results from both legacy and core-stack repos (legacy wins on ID
conflict)
SourceOfTruth ¶
filter_periods_in_range ¶
Return periods overlapping [from_date, to_date].
A period overlaps if start_date <= to_date and (end_date is None or
end_date >= from_date). Inclusive on both ends so a snapshot lookup
(from_date == to_date) matches a period active on that day, including
single-day periods.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_contract_and_primary_ids_by_enrollment_group_id ¶
Return (new_contract_id, primary_user_id) for a given enrollment_group_id, or None.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_enrollment_group_by_contract_and_primary ¶
get_enrollment_group_by_contract_and_primary(
contract_id,
primary_id,
*,
contract_adapter=None,
source_of_truth=SourceOfTruth.follow_migration
)
Get a single enrollment group by contract_id + primary_id pair.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_enrollment_group_by_id ¶
get_enrollment_group_by_id(
enrollment_group_id,
*,
contract_adapter=None,
source_of_truth=SourceOfTruth.follow_migration
)
Get a single enrollment group by ID.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_enrollment_group_view_by_contract_and_primary ¶
get_enrollment_group_view_by_contract_and_primary(
contract_id,
primary_id,
*,
source_of_truth=SourceOfTruth.follow_migration
)
Get a single enrollment group by (contract_id, primary_id).
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_enrollment_group_view_by_id ¶
get_enrollment_group_view_by_id(
enrollment_group_id,
*,
source_of_truth=SourceOfTruth.follow_migration
)
Get a single enrollment group as an identity-only view.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_enrollment_groups_by_contract ¶
get_enrollment_groups_by_contract(
contract_id,
*,
contract_adapter=None,
source_of_truth=SourceOfTruth.follow_migration
)
List enrollment groups on a contract.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_enrollment_groups_by_member ¶
get_enrollment_groups_by_member(
member_id,
*,
contract_adapter=None,
source_of_truth=SourceOfTruth.follow_migration
)
List enrollment groups containing a member.
Takes an optional contract_adapter in order to benefit from caching, when reading
multiple enrollment groups from the same contract (which should happen quite often).
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_enrollment_groups_by_primary ¶
get_enrollment_groups_by_primary(
primary_id,
*,
contract_adapter=None,
source_of_truth=SourceOfTruth.follow_migration
)
List enrollment groups where user is primary.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_or_create_enrollment_group_id ¶
Return a stable enrollment_group_id for the given (new_contract_id, primary_user_id) pair.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_revision_diff ¶
Get the diff between two revisions of an enrollment group.
Stub: returns synthetic data for now.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
get_revisions ¶
List all revisions for an enrollment group.
Stub: returns synthetic data for now.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
list_enrollment_group_views_by_contract ¶
list_enrollment_group_views_by_contract(
contract_id,
*,
source_of_truth=SourceOfTruth.follow_migration
)
List enrollment group views on a contract.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
list_enrollment_group_views_by_member ¶
list_enrollment_group_views_by_member(
member_id,
*,
source_of_truth=SourceOfTruth.follow_migration
)
List enrollment group views containing periods for the given member.
Source code in components/core_enrollment/public/python_api/enrollment_group.py
list_enrollment_group_views_by_primary ¶
list_enrollment_group_views_by_primary(
primary_id,
*,
source_of_truth=SourceOfTruth.follow_migration
)
List enrollment group views where the given member is primary.