-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsubscribed-sections.json
More file actions
65 lines (65 loc) · 2.42 KB
/
subscribed-sections.json
File metadata and controls
65 lines (65 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
{
"name": "Subscribed Sections",
"access": {
"anon": "Cannot view their own subscribed sections list.",
"user": "Can only view and manage their own subscribed sections list.",
"admin": "Does not view or edit other users' subscription lists through ordinary pages.",
"agent": "Can read and manage the subscribed sections list data with the same semantics as the web through REST and MCP."
},
"rules": {
"grouped-by-semester": "The list is grouped by semester rather than presented as a single flat list.",
"section-codes-promoted": "In the 'subscribed context', users manage specific section relationships, so section codes are intentionally promoted."
},
"capabilities": {
"subscribed-sections-tab": {
"title": "Subscribed Sections Tab",
"auth": "user",
"links": {
"models": ["User", "Section"],
"ui": ["List Table"]
},
"web": {
"pages": ["/?tab=subscriptions"]
},
"rest": {
"routes": [
{
"path": "/api/calendar-subscriptions/current",
"returns": "{ subscription: CalendarSubscription | null }",
"notes": [
"Returns the current user's subscribed section details and personal subscription feed information; supports the subscribed sections list and personal calendar subscription entry."
]
}
]
},
"mcp": {
"tools": [
{
"name": "list_my_subscribed_sections",
"returns": "{ success: Boolean, sections: Section[], note: String }",
"rest_equivalent": "GET /api/calendar-subscriptions/current"
},
{
"name": "get_my_calendar_subscription",
"returns": "{ success: Boolean, subscription?, message?: String }",
"rest_equivalent": "GET /api/calendar-subscriptions/current",
"notes": [
"Supplements calendarPath and calendarUrl on the same abstract entry.",
"Use full mode only when the caller explicitly needs the full subscribed section list on the same response."
]
}
]
},
"display": {
"fields": [
"semester group label and count",
"subscription.sections[].code",
"subscription.sections[].course.namePrimary",
"section.teachers[]",
"section.credits",
"Unsubscribe button per section"
]
}
}
}
}