Skip to content

Payload sent to main website PATCH endpoint contains extraneous keys #75

@gregorbg

Description

@gregorbg

dd.json

When saving / writing back information for BerkeleyMayWeekday2026, our logs showed that Delegate Dashboard tried to send a JSON payload which failed WCIF schema validation. Specifically, the following part was off: The property '#/schedule/venues/0/rooms/0/activities/0' contained undefined properties: 'room'.

The full JSON is attached to this issue. For clarity, here is the relevant "slice" that our schema checker complains about:

"venues": [
            {
                "countryIso2": "US",
                "extensions": [],
                "id": 1,
                "latitudeMicrodegrees": 37870054,
                "longitudeMicrodegrees": -122257990,
                "name": "Social Sciences Building",
                "rooms": [
                    {
                        "activities": [
                            {
                                "activityCode": "333-r1",
                                "childActivities": [
                                    {
                                        "activityCode": "333-r1-g1",
                                        "childActivities": [],
                                        "endTime": "2026-05-02T01:30:00.000Z",
                                        "extensions": [],
                                        "id": 7,
                                        "name": "3x3x3 Cube, Round 1, Group 1",
                                        "startTime": "2026-05-02T01:15:00.000Z"
                                    },
                                    {
                                        "activityCode": "333-r1-g2",
                                        "childActivities": [],
                                        "endTime": "2026-05-02T01:45:00.000Z",
                                        "extensions": [],
                                        "id": 8,
                                        "name": "3x3x3 Cube, Round 1, Group 2",
                                        "startTime": "2026-05-02T01:30:00.000Z"
                                    },
                                    {
                                        "activityCode": "333-r1-g3",
                                        "childActivities": [],
                                        "endTime": "2026-05-02T02:00:00.000Z",
                                        "extensions": [],
                                        "id": 9,
                                        "name": "3x3x3 Cube, Round 1, Group 3",
                                        "startTime": "2026-05-02T01:45:00.000Z"
                                    }
                                ],
                                "endTime": "2026-05-02T02:00:00Z",
                                "extensions": [],
                                "id": 1,
                                "name": "3x3x3 Cube, Round 1",
                                "room": {
                                    "activities": [
                                        {
                                            "activityCode": "333-r1",
                                            "childActivities": [],
                                            "endTime": "2026-05-02T02:00:00Z",
                                            "extensions": [],
                                            "id": 1,
                                            "name": "3x3x3 Cube, Round 1",
                                            "startTime": "2026-05-02T01:15:00Z"
                                        },
                                        {
                                            "activityCode": "333oh-r1",
                                            "childActivities": [],
                                            "endTime": "2026-05-02T02:45:00Z",
                                            "extensions": [],
                                            "id": 2,
                                            "name": "3x3x3 One-Handed, Round 1",
                                            "startTime": "2026-05-02T02:00:00Z"
                                        },
                                        {
                                            "activityCode": "222-r1",
                                            "childActivities": [],
                                            "endTime": "2026-05-02T03:30:00Z",
                                            "extensions": [],
                                            "id": 3,
                                            "name": "2x2x2 Cube, Round 1",
                                            "startTime": "2026-05-02T02:45:00Z"
                                        },
                                        {
                                            "activityCode": "333-r2",
                                            "childActivities": [],
                                            "endTime": "2026-05-02T03:45:00Z",
                                            "extensions": [],
                                            "id": 4,
                                            "name": "3x3x3 Cube, Round 2",
                                            "startTime": "2026-05-02T03:30:00Z"
                                        },
                                        {
                                            "activityCode": "333oh-r2",
                                            "childActivities": [],
                                            "endTime": "2026-05-02T04:00:00Z",
                                            "extensions": [],
                                            "id": 5,
                                            "name": "3x3x3 One-Handed, Round 2",
                                            "startTime": "2026-05-02T03:45:00Z"
                                        },
                                        {
                                            "activityCode": "222-r2",
                                            "childActivities": [],
                                            "endTime": "2026-05-02T04:15:00Z",
                                            "extensions": [],
                                            "id": 6,
                                            "name": "2x2x2 Cube, Round 2",
                                            "startTime": "2026-05-02T04:00:00Z"
                                        }
                                    ],
                                    "color": "#304a96",
                                    "extensions": [],
                                    "id": 1,
                                    "name": "SOCS 20"
                                },
                                "startTime": "2026-05-02T01:15:00Z"
                            },

As you can see, the first rooms entry's first activities entry has a nested key room, which recursively specifies some information that looks like an activity(?).

I'm not sure whether it's even intended to have this in your internal payload, but anyways it's not valid WCIF, not even in the well-established v1.0 or v1.1.

My guess would be that you're nesting a key wrong at one point? I took a quick look through the source code but couldn't find anything immediately obvious.

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions