Squash merge feature/library-reorganization

This commit is contained in:
Codex
2026-04-22 06:46:23 -05:00
parent 7f4a4beb5a
commit fe2a04343c
72 changed files with 14520 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
These are sample TeamSnap API v3 Collection+JSON responses.
The payloads use upstream TeamSnap URLs (`https://apiv3.teamsnap.com`) so
tests can rewrite them through the local proxy root without guessing at paths.
The set includes:
- `root.json`
- `me.json`
- `teams.json`
- `members.json`
- `events.json`
- `availabilities.json`
- `assignments.json`
- `event_lineups.json`
- `event_lineup_entries.json`
They are intentionally small but cover the collections this app reads:
- `me` for auth/session identity
- `teams` for team selection
- `members` for player lookup
- `events` for the operator/game flow
- `availabilities`, `assignments`, `eventLineups`, and `eventLineupEntries`
for lineup and game preparation screens

View File

@@ -0,0 +1,74 @@
{
"collection": {
"version": "1.0",
"href": "https://apiv3.teamsnap.com/assignments?teamId=101&eventId=2001",
"links": [
{
"rel": "self",
"href": "https://apiv3.teamsnap.com/assignments?teamId=101&eventId=2001"
}
],
"queries": [
{
"rel": "search",
"href": "https://apiv3.teamsnap.com/assignments{?teamId,eventId,memberId}",
"prompt": "Assignments"
}
],
"template": {
"data": [
{
"name": "team_id",
"value": ""
},
{
"name": "event_id",
"value": ""
},
{
"name": "member_id",
"value": ""
},
{
"name": "description",
"value": ""
},
{
"name": "order",
"value": 0
}
]
},
"items": [
{
"href": "https://apiv3.teamsnap.com/assignments/4001",
"data": [
{
"name": "id",
"value": 4001
},
{
"name": "team_id",
"value": 101
},
{
"name": "event_id",
"value": 2001
},
{
"name": "member_id",
"value": 1001
},
{
"name": "description",
"value": "Lead off"
},
{
"name": "order",
"value": 1
}
]
}
]
}
}

View File

@@ -0,0 +1,91 @@
{
"collection": {
"version": "1.0",
"href": "https://apiv3.teamsnap.com/availabilities?teamId=101&eventId=2001",
"links": [
{
"rel": "self",
"href": "https://apiv3.teamsnap.com/availabilities?teamId=101&eventId=2001"
}
],
"queries": [
{
"rel": "search",
"href": "https://apiv3.teamsnap.com/availabilities{?teamId,eventId,memberId}",
"prompt": "Availabilities"
}
],
"template": {
"data": [
{
"name": "team_id",
"value": ""
},
{
"name": "event_id",
"value": ""
},
{
"name": "member_id",
"value": ""
},
{
"name": "status_code",
"value": null
}
]
},
"items": [
{
"href": "https://apiv3.teamsnap.com/availabilities/3001",
"data": [
{
"name": "id",
"value": 3001
},
{
"name": "team_id",
"value": 101
},
{
"name": "event_id",
"value": 2001
},
{
"name": "member_id",
"value": 1001
},
{
"name": "status_code",
"value": 1
}
]
},
{
"href": "https://apiv3.teamsnap.com/availabilities/3002",
"data": [
{
"name": "id",
"value": 3002
},
{
"name": "team_id",
"value": 101
},
{
"name": "event_id",
"value": 2001
},
{
"name": "member_id",
"value": 1002
},
{
"name": "status_code",
"value": 0
}
]
}
]
}
}

View File

@@ -0,0 +1,91 @@
{
"collection": {
"version": "1.0",
"href": "https://apiv3.teamsnap.com/eventLineupEntries?eventLineupId=5001",
"links": [
{
"rel": "self",
"href": "https://apiv3.teamsnap.com/eventLineupEntries?eventLineupId=5001"
}
],
"queries": [
{
"rel": "search",
"href": "https://apiv3.teamsnap.com/eventLineupEntries{?eventLineupId}",
"prompt": "Event lineup entries"
}
],
"template": {
"data": [
{
"name": "event_lineup_id",
"value": ""
},
{
"name": "member_id",
"value": ""
},
{
"name": "label",
"value": ""
},
{
"name": "sequence",
"value": 0
}
]
},
"items": [
{
"href": "https://apiv3.teamsnap.com/eventLineupEntries/6001",
"data": [
{
"name": "id",
"value": 6001
},
{
"name": "event_lineup_id",
"value": 5001
},
{
"name": "member_id",
"value": 1001
},
{
"name": "label",
"value": "Shortstop"
},
{
"name": "sequence",
"value": 1
}
]
},
{
"href": "https://apiv3.teamsnap.com/eventLineupEntries/6002",
"data": [
{
"name": "id",
"value": 6002
},
{
"name": "event_lineup_id",
"value": 5001
},
{
"name": "member_id",
"value": 1002
},
{
"name": "label",
"value": "Coach"
},
{
"name": "sequence",
"value": 2
}
]
}
]
}
}

View File

@@ -0,0 +1,56 @@
{
"collection": {
"version": "1.0",
"href": "https://apiv3.teamsnap.com/eventLineups?eventId=2001",
"links": [
{
"rel": "self",
"href": "https://apiv3.teamsnap.com/eventLineups?eventId=2001"
}
],
"queries": [
{
"rel": "search",
"href": "https://apiv3.teamsnap.com/eventLineups{?eventId}",
"prompt": "Event lineups"
}
],
"template": {
"data": [
{
"name": "event_id",
"value": ""
},
{
"name": "is_published",
"value": false
}
]
},
"items": [
{
"href": "https://apiv3.teamsnap.com/eventLineups/5001",
"data": [
{
"name": "id",
"value": 5001
},
{
"name": "event_id",
"value": 2001
},
{
"name": "is_published",
"value": true
}
],
"links": [
{
"rel": "eventLineupEntries",
"href": "https://apiv3.teamsnap.com/eventLineupEntries?eventLineupId=5001"
}
]
}
]
}
}

View File

@@ -0,0 +1,125 @@
{
"collection": {
"version": "1.0",
"href": "https://apiv3.teamsnap.com/events?teamId=101",
"links": [
{
"rel": "self",
"href": "https://apiv3.teamsnap.com/events?teamId=101"
}
],
"queries": [
{
"rel": "search",
"href": "https://apiv3.teamsnap.com/events{?teamId,eventId,contactId}",
"prompt": "Events"
}
],
"template": {
"data": [
{
"name": "team_id",
"value": ""
},
{
"name": "name",
"value": ""
},
{
"name": "is_game",
"value": false
},
{
"name": "opponent_name",
"value": ""
},
{
"name": "location_name",
"value": ""
},
{
"name": "start_date",
"value": ""
}
]
},
"items": [
{
"href": "https://apiv3.teamsnap.com/events/2001",
"data": [
{
"name": "id",
"value": 2001
},
{
"name": "team_id",
"value": 101
},
{
"name": "name",
"value": "Opening Day"
},
{
"name": "is_game",
"value": true
},
{
"name": "opponent_name",
"value": "Sharks"
},
{
"name": "location_name",
"value": "Field 1"
},
{
"name": "start_date",
"value": "2026-04-28T18:00:00Z"
}
],
"links": [
{
"rel": "availabilities",
"href": "https://apiv3.teamsnap.com/availabilities?teamId=101&eventId=2001"
},
{
"rel": "assignments",
"href": "https://apiv3.teamsnap.com/assignments?teamId=101&eventId=2001"
},
{
"rel": "eventLineups",
"href": "https://apiv3.teamsnap.com/eventLineups?eventId=2001"
}
]
},
{
"href": "https://apiv3.teamsnap.com/events/2002",
"data": [
{
"name": "id",
"value": 2002
},
{
"name": "team_id",
"value": 101
},
{
"name": "name",
"value": "Practice"
},
{
"name": "is_game",
"value": false
},
{
"name": "location_name",
"value": "Field 2"
},
{
"name": "start_date",
"value": "2026-04-23T17:30:00Z"
}
]
}
]
}
}

35
backend/tests/fixtures/teamsnap/me.json vendored Normal file
View File

@@ -0,0 +1,35 @@
{
"collection": {
"version": "1.0",
"href": "https://apiv3.teamsnap.com/me",
"links": [
{
"rel": "self",
"href": "https://apiv3.teamsnap.com/me"
}
],
"items": [
{
"href": "https://apiv3.teamsnap.com/me/42",
"data": [
{
"name": "id",
"value": 42
},
{
"name": "first_name",
"value": "Sam"
},
{
"name": "last_name",
"value": "Player"
},
{
"name": "email",
"value": "sam.player@example.com"
}
]
}
]
}
}

View File

@@ -0,0 +1,111 @@
{
"collection": {
"version": "1.0",
"href": "https://apiv3.teamsnap.com/members?teamId=101",
"links": [
{
"rel": "self",
"href": "https://apiv3.teamsnap.com/members?teamId=101"
}
],
"queries": [
{
"rel": "search",
"href": "https://apiv3.teamsnap.com/members{?teamId,userId,memberId}",
"prompt": "Members"
}
],
"template": {
"data": [
{
"name": "team_id",
"value": ""
},
{
"name": "first_name",
"value": ""
},
{
"name": "last_name",
"value": ""
},
{
"name": "number",
"value": ""
},
{
"name": "is_non_player",
"value": false
}
]
},
"items": [
{
"href": "https://apiv3.teamsnap.com/members/1001",
"data": [
{
"name": "id",
"value": 1001
},
{
"name": "team_id",
"value": 101
},
{
"name": "user_id",
"value": 42
},
{
"name": "first_name",
"value": "Sam"
},
{
"name": "last_name",
"value": "Player"
},
{
"name": "number",
"value": 17
},
{
"name": "is_non_player",
"value": false
},
{
"name": "email",
"value": "sam.player@example.com"
}
]
},
{
"href": "https://apiv3.teamsnap.com/members/1002",
"data": [
{
"name": "id",
"value": 1002
},
{
"name": "team_id",
"value": 101
},
{
"name": "first_name",
"value": "Taylor"
},
{
"name": "last_name",
"value": "Coach"
},
{
"name": "is_non_player",
"value": true
},
{
"name": "email",
"value": "taylor.coach@example.com"
}
]
}
]
}
}

View File

@@ -0,0 +1,54 @@
{
"collection": {
"version": "1.0",
"href": "https://apiv3.teamsnap.com/",
"links": [
{
"rel": "self",
"href": "https://apiv3.teamsnap.com/"
}
],
"queries": [
{
"rel": "me",
"href": "https://apiv3.teamsnap.com/me",
"prompt": "Current user"
},
{
"rel": "teams",
"href": "https://apiv3.teamsnap.com/teams{?userId}",
"prompt": "Teams"
},
{
"rel": "members",
"href": "https://apiv3.teamsnap.com/members{?teamId,userId,memberId}",
"prompt": "Members"
},
{
"rel": "events",
"href": "https://apiv3.teamsnap.com/events{?teamId,eventId,contactId}",
"prompt": "Events"
},
{
"rel": "availabilities",
"href": "https://apiv3.teamsnap.com/availabilities{?teamId,eventId,memberId}",
"prompt": "Availabilities"
},
{
"rel": "assignments",
"href": "https://apiv3.teamsnap.com/assignments{?teamId,eventId,memberId}",
"prompt": "Assignments"
},
{
"rel": "eventLineups",
"href": "https://apiv3.teamsnap.com/eventLineups{?eventId}",
"prompt": "Event lineups"
},
{
"rel": "eventLineupEntries",
"href": "https://apiv3.teamsnap.com/eventLineupEntries{?eventLineupId}",
"prompt": "Event lineup entries"
}
]
}
}

View File

@@ -0,0 +1,89 @@
{
"collection": {
"version": "1.0",
"href": "https://apiv3.teamsnap.com/teams",
"links": [
{
"rel": "self",
"href": "https://apiv3.teamsnap.com/teams"
}
],
"queries": [
{
"rel": "search",
"href": "https://apiv3.teamsnap.com/teams{?userId}",
"prompt": "Teams"
}
],
"template": {
"data": [
{
"name": "name",
"value": ""
},
{
"name": "season_name",
"value": ""
},
{
"name": "is_retired",
"value": false
}
]
},
"items": [
{
"href": "https://apiv3.teamsnap.com/teams/101",
"data": [
{
"name": "id",
"value": 101
},
{
"name": "name",
"value": "Walkup Wildcats"
},
{
"name": "season_name",
"value": "Spring 2026"
},
{
"name": "is_retired",
"value": false
}
],
"links": [
{
"rel": "members",
"href": "https://apiv3.teamsnap.com/members?teamId=101"
},
{
"rel": "events",
"href": "https://apiv3.teamsnap.com/events?teamId=101"
}
]
},
{
"href": "https://apiv3.teamsnap.com/teams/202",
"data": [
{
"name": "id",
"value": 202
},
{
"name": "name",
"value": "Retired Example"
},
{
"name": "season_name",
"value": "Fall 2025"
},
{
"name": "is_retired",
"value": true
}
]
}
]
}
}