irongit

An AI project that includes a scraper for NFL data, postgres database, and user interface. It uses a classification algorithm to predict winners.

able to generate openapi yaml

huncholanehuncholaneauthored
parent 4148558commit ef24a41e645ea2efdb0113db3330d4f488d34802Browse files

5 files changed, +455 -1389

+40-47nfl_client/nfl_client.py
@@ -3,6 +3,7 @@ import time
33 from browsermobproxy import Server
44 from selenium import webdriver
55 from pathlib import Path
6+from .url_utils import urlparse_json, generate_openapi_spec
67 import json
78 import requests
89 import os
@@ -18,6 +19,7 @@ class NFLClient():
1819 * `API_ROOT` - Root for nfl.com api endpoints
1920 * `HAR_DIR` - Storage directory for har files
2021 * `URL_JSON_PATH` - Path for json list of found api endpoints
22+ * `OPENAPI_PATH` - Path for openapi yaml
2123 * `TOKEN_EXPIRE_RATE` - How many seconds to download a new auth token
2224 * `TOKEN_AUTH_TIMEOUT` - Timeout when searching har file for Authorization
2325
@@ -40,6 +42,7 @@ class NFLClient():
4042 API_ROOT = 'https://api.nfl.com'
4143 HAR_DIR = Path('nfl_client_data/har_files')
4244 URL_JSON_PATH = Path('nfl_client_data/urls.json')
45+ OPENAPI_PATH = Path('nfl_client_data/openapi.yaml')
4346 TOKEN_EXPIRE_RATE = 60*60
4447 TOKEN_AUTH_TIMEOUT = 10
4548
@@ -55,10 +58,11 @@ class NFLClient():
5558 last_auth_download_time = 0
5659 headers = {}
5760
58- def __init__(self):
61+ def __init__(self, headless=True):
5962 os.makedirs(self.HAR_DIR, exist_ok=True)
63+ self.headless = headless
6064
61- def load_auth_token(self):
65+ def load_auth_token(self, store_har=False):
6266 """Loads the auth token into the client."""
6367 if os.path.exists(self.AUTH_PATH):
6468 with open(self.AUTH_PATH, 'r') as f:
@@ -66,7 +70,10 @@ class NFLClient():
6670 self.auth_token = auth_json['token']
6771 self.last_auth_download_time = auth_json['time']
6872 if self.last_auth_download_time < time.time()-self.TOKEN_EXPIRE_RATE or not self.auth_token:
69- self.download_auth_token()
73+ self.download_auth_token(store_har=store_har)
74+ self.headers={
75+ 'Authorization': self.auth_token
76+ }
7077
7178 def prep_proxy(self, endpoint=None):
7279 """Prepares the driver and proxy to get the har"""
@@ -80,14 +87,14 @@ class NFLClient():
8087 chrome_options = webdriver.ChromeOptions()
8188 chrome_options.add_argument(f'--proxy-server={self.proxy.proxy}')
8289 chrome_options.add_argument('--ignore-certificate-errors')
83- chrome_options.add_argument('--headless')
90+ if self.headless:
91+ chrome_options.add_argument('--headless')
8492 self.driver = webdriver.Chrome(options=chrome_options)
8593 # Navigate to the website
8694 self.driver.get(endpoint)
87- self.driver.implicitly_wait(10)
8895
8996 # Start capturing network traffic
90- self.proxy.new_har(f"nfl{time.time()}", options={'captureHeaders': True})
97+ self.proxy.new_har(f"nfl{time.time()}", options={'captureHeaders': True, 'captureContent': False})
9198
9299 # Create the path for storing har data
93100 try:
@@ -105,19 +112,18 @@ class NFLClient():
105112
106113 def wait_for_auth_token(self):
107114 """Downloads the auth token using the scores page of nfl.com"""
108- # Wait for the header with the name "Authorization"
109- def get_auth_token():
110- start_time = time.time()
111- while time.time() - start_time < self.TOKEN_AUTH_TIMEOUT:
112- self.har = self.proxy.har
113- for entry in self.har['log']['entries']:
114- request_headers = entry['request']['headers']
115- for header in request_headers:
116- if header['name'] == 'Authorization':
117- return header['value']
118- time.sleep(1)
119- return None
120- self.auth_token = get_auth_token()
115+ start_time = time.time()
116+ while time.time() - start_time < self.TOKEN_AUTH_TIMEOUT:
117+ # Capture the HAR once
118+ self.har = self.proxy.har
119+ for entry in self.har['log']['entries']:
120+ request_headers = entry['request']['headers']
121+ for header in request_headers:
122+ if header['name'] == 'Authorization':
123+ self.auth_token = header['value']
124+ return self.auth_token
125+ time.sleep(1)
126+ return None
121127
122128 def store_auth_token(self):
123129 """Stores the current auth token"""
@@ -156,37 +162,24 @@ class NFLClient():
156162 self.store_har()
157163 self.close_proxy()
158164
165+ # Load previous urls
166+ url_json = {}
167+ if os.path.exists(self.URL_JSON_PATH):
168+ with open(self.URL_JSON_PATH, 'r') as f:
169+ url_json = json.load(f)
170+
159171 # Gather the list of endpoints
160- url_list = []
161172 for entry in self.har['log']['entries']:
162- request = entry['request']
163- raw_url = request['url']
164- if self.API_ROOT in raw_url:
165- print(raw_url)
166- url_split = raw_url.split('?')
167- full_url = url_split[0]
168- new_endpoint = ''
169- base_split = full_url.split('.com')
170- if len(base_split) > 1:
171- new_endpoint = base_split[1]
172- param_list = []
173- if len(url_split) > 1:
174- param_split = url_split[1].split('&')
175- for param in param_split:
176- param, val = param.split('=')
177- param_list.append({
178- 'param': param,
179- 'val': val
180- })
181- url_list.append({
182- 'raw_url': raw_url,
183- 'endpoint': new_endpoint,
184- 'params': param_list
185- })
186-
187- # Store the url list json
173+ if self.API_ROOT in entry['request']['url']:
174+ url_json.update(urlparse_json(entry['request']['url']))
175+
176+ # Store the url json
188177 with open(self.URL_JSON_PATH, 'w') as f:
189- json.dump(url_list, f)
178+ json.dump(url_json, f)
179+
180+ # Store the url openapi
181+ with open(self.OPENAPI_PATH, 'w') as f:
182+ f.write(generate_openapi_spec(url_json))
190183
191184 def request(self, endpoint) -> dict:
192185 """Request an endpoint"""
+107-0nfl_client/url_utils.py
@@ -0,0 +1,107 @@
1+import yaml
2+from urllib.parse import urlparse, parse_qs
3+import re
4+
5+
6+id_re = re.compile(
7+ r"([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})")
8+
9+
10+def urlparse_json(url):
11+ r = urlparse(url)
12+ id_match = id_re.search(r.path)
13+ path = r.path
14+ query_params = {}
15+ for key, item in parse_qs(r.query).items():
16+ item_type = 'string'
17+ example = ''
18+ if len(item) > 1:
19+ item_type = 'array'
20+ example = ','.join(item)
21+ if len(item) == 1:
22+ example = item[0]
23+ try:
24+ example = float(item[0])
25+ item_type = 'number'
26+ except:
27+ pass
28+ try:
29+ example = int(item[0])
30+ item_type = 'integer'
31+ except:
32+ pass
33+ if item[0] in ['true', 'false']:
34+ item_type = 'boolean'
35+ query_params.update({
36+ key: {
37+ 'type': item_type,
38+ 'example': example
39+ }
40+ })
41+ path_params = {}
42+ if id_match:
43+ uuid = id_match.group(0)
44+ path = r.path.replace(uuid, '{id}')
45+ path_params = {'id': {'type': 'string', 'example': uuid}}
46+ return {
47+ path: {
48+ 'query_parameters': query_params,
49+ 'path_parameters': path_params
50+ }
51+ }
52+
53+
54+def add_api_component(openapi_spec, path, info):
55+ path_parameters = info['path_parameters']
56+ query_parameters = info['query_parameters']
57+ openapi_spec['paths'].update({
58+ path: {
59+ 'get': {
60+ 'parameters': [],
61+ 'responses': {
62+ '200': {
63+ 'description': 'Successful response',
64+ },
65+ },
66+ },
67+ },
68+ })
69+
70+ if path_parameters:
71+ for param_name, param_details in path_parameters.items():
72+ openapi_spec['paths'][path]['get']['parameters'].append({
73+ 'name': param_name,
74+ 'in': 'path',
75+ 'required': True,
76+ 'schema': {
77+ 'type': param_details['type'],
78+ },
79+ 'description': f'The {param_name} parameter',
80+ 'example': param_details['example']
81+ })
82+
83+ if query_parameters:
84+ for param_name, param_details in query_parameters.items():
85+ openapi_spec['paths'][path]['get']['parameters'].append({
86+ 'name': param_name,
87+ 'in': 'query',
88+ 'schema': {
89+ 'type': param_details['type'],
90+ },
91+ 'description': f'The {param_name} parameter',
92+ 'example': param_details['example']
93+ })
94+
95+
96+def generate_openapi_spec(url_json):
97+ openapi_spec = {
98+ 'openapi': '3.0.0',
99+ 'info': {
100+ 'title': 'NFL API',
101+ 'version': '1.0.0',
102+ },
103+ 'paths': {}
104+ }
105+ for path, info in url_json.items():
106+ add_api_component(openapi_spec, path, info)
107+ return yaml.dump(openapi_spec, default_flow_style=False)
+175-0nfl_client_data/openapi.yaml
@@ -0,0 +1,175 @@
1+info:
2+ title: NFL API
3+ version: 1.0.0
4+openapi: 3.0.0
5+paths:
6+ /content/v1/videos:
7+ get:
8+ parameters:
9+ - description: The clipType parameter
10+ example: Preview
11+ in: query
12+ name: clipType
13+ schema:
14+ type: string
15+ - description: The season parameter
16+ example: 2023
17+ in: query
18+ name: season
19+ schema:
20+ type: integer
21+ - description: The seasonType parameter
22+ example: REG
23+ in: query
24+ name: seasonType
25+ schema:
26+ type: string
27+ - description: The week parameter
28+ example: 9
29+ in: query
30+ name: week
31+ schema:
32+ type: integer
33+ - description: The sort parameter
34+ example: contentDate:desc
35+ in: query
36+ name: sort
37+ schema:
38+ type: string
39+ responses:
40+ '200':
41+ description: Successful response
42+ /content/v1/videos/replays:
43+ get:
44+ parameters:
45+ - description: The gameId parameter
46+ example: b07ea540-f053-11ed-b4a7-bab79e4492fa
47+ in: query
48+ name: gameId
49+ schema:
50+ type: string
51+ responses:
52+ '200':
53+ description: Successful response
54+ /fe-store/instances:
55+ get:
56+ parameters:
57+ - description: The query parameter
58+ example: query{viewer{instances(ids:["48ca44cb-212e-4dfd-a277-1d40f26b0ed1"],label:""){edges{node{name,items{id,name,image{id,src,name,alt},links{id,url,name,text},summary,title,category},title,type}}}}}
59+ in: query
60+ name: query
61+ schema:
62+ type: string
63+ - description: The variables parameter
64+ example: '{"FE_STORE_INSTANCE_NAMESPACE":"WEB.NDC","FE_STORE_TYPE_NAME":"CardList","FE_STORE_TYPE_NAMESPACE":"WEB"}'
65+ in: query
66+ name: variables
67+ schema:
68+ type: string
69+ responses:
70+ '200':
71+ description: Successful response
72+ /football/v2/games/season/2023/seasonType/REG/week/10:
73+ get:
74+ parameters:
75+ - description: The withExternalIds parameter
76+ example: 'true'
77+ in: query
78+ name: withExternalIds
79+ schema:
80+ type: boolean
81+ responses:
82+ '200':
83+ description: Successful response
84+ /football/v2/games/{id}:
85+ get:
86+ parameters:
87+ - description: The id parameter
88+ example: b07ee5cd-f053-11ed-b4a7-bab79e4492fa
89+ in: path
90+ name: id
91+ required: true
92+ schema:
93+ type: string
94+ - description: The withExternalIds parameter
95+ example: 'true'
96+ in: query
97+ name: withExternalIds
98+ schema:
99+ type: boolean
100+ responses:
101+ '200':
102+ description: Successful response
103+ /football/v2/standings:
104+ get:
105+ parameters:
106+ - description: The seasonType parameter
107+ example: REG
108+ in: query
109+ name: seasonType
110+ schema:
111+ type: string
112+ - description: The week parameter
113+ example: 8
114+ in: query
115+ name: week
116+ schema:
117+ type: integer
118+ - description: The season parameter
119+ example: 2023
120+ in: query
121+ name: season
122+ schema:
123+ type: integer
124+ - description: The limit parameter
125+ example: 100
126+ in: query
127+ name: limit
128+ schema:
129+ type: integer
130+ responses:
131+ '200':
132+ description: Successful response
133+ /football/v2/stats/live/game-summaries/{id}:
134+ get:
135+ parameters:
136+ - description: The id parameter
137+ example: b07ee5cd-f053-11ed-b4a7-bab79e4492fa
138+ in: path
139+ name: id
140+ required: true
141+ schema:
142+ type: string
143+ responses:
144+ '200':
145+ description: Successful response
146+ /live/v1/livestreams:
147+ get:
148+ parameters:
149+ - description: The contentType parameter
150+ example: AUDIO
151+ in: query
152+ name: contentType
153+ schema:
154+ type: string
155+ - description: The endTime parameter
156+ example: '2023-11-06T08:00:00.000Z'
157+ in: query
158+ name: endTime
159+ schema:
160+ type: string
161+ - description: The startTime parameter
162+ example: '2023-11-04T07:00:00.000Z'
163+ in: query
164+ name: startTime
165+ schema:
166+ type: string
167+ responses:
168+ '200':
169+ description: Successful response
170+ /play/v1/asset/L5P64hq7cI6KLFiWM_XVSA:
171+ get:
172+ parameters: []
173+ responses:
174+ '200':
175+ description: Successful response
+1-1015nfl_client_data/urls.json
@@ -1,1015 +1 @@
1-[
2- {
3- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
4- "endpoint": "/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
5- "params": []
6- },
7- {
8- "raw_url": "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
9- "endpoint": "/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa",
10- "params": [{ "param": "withExternalIds", "val": "true" }]
11- },
12- {
13- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
14- "endpoint": "/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
15- "params": []
16- },
17- {
18- "raw_url": "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
19- "endpoint": "/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
20- "params": [{ "param": "withExternalIds", "val": "true" }]
21- },
22- {
23- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
24- "endpoint": "/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
25- "params": []
26- },
27- {
28- "raw_url": "https://api.nfl.com/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
29- "endpoint": "/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
30- "params": [{ "param": "withExternalIds", "val": "true" }]
31- },
32- {
33- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
34- "endpoint": "/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
35- "params": []
36- },
37- {
38- "raw_url": "https://api.nfl.com/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
39- "endpoint": "/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
40- "params": [{ "param": "withExternalIds", "val": "true" }]
41- },
42- {
43- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
44- "endpoint": "/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
45- "params": []
46- },
47- {
48- "raw_url": "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
49- "endpoint": "/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa",
50- "params": [{ "param": "withExternalIds", "val": "true" }]
51- },
52- {
53- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
54- "endpoint": "/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
55- "params": []
56- },
57- {
58- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ec866-f053-11ed-b4a7-bab79e4492fa",
59- "endpoint": "/content/v1/videos/replays",
60- "params": [
61- { "param": "gameId", "val": "b07ec866-f053-11ed-b4a7-bab79e4492fa" }
62- ]
63- },
64- {
65- "raw_url": "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
66- "endpoint": "/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa",
67- "params": [{ "param": "withExternalIds", "val": "true" }]
68- },
69- {
70- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
71- "endpoint": "/content/v1/videos/replays",
72- "params": [
73- { "param": "gameId", "val": "b07eb9ec-f053-11ed-b4a7-bab79e4492fa" }
74- ]
75- },
76- {
77- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
78- "endpoint": "/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
79- "params": []
80- },
81- {
82- "raw_url": "https://api.nfl.com/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
83- "endpoint": "/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
84- "params": [{ "param": "withExternalIds", "val": "true" }]
85- },
86- {
87- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07eccd5-f053-11ed-b4a7-bab79e4492fa",
88- "endpoint": "/content/v1/videos/replays",
89- "params": [
90- { "param": "gameId", "val": "b07eccd5-f053-11ed-b4a7-bab79e4492fa" }
91- ]
92- },
93- {
94- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
95- "endpoint": "/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
96- "params": []
97- },
98- {
99- "raw_url": "https://api.nfl.com/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
100- "endpoint": "/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
101- "params": [{ "param": "withExternalIds", "val": "true" }]
102- },
103- {
104- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
105- "endpoint": "/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
106- "params": []
107- },
108- {
109- "raw_url": "https://api.nfl.com/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
110- "endpoint": "/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
111- "params": [{ "param": "withExternalIds", "val": "true" }]
112- },
113- {
114- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
115- "endpoint": "/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
116- "params": []
117- },
118- {
119- "raw_url": "https://api.nfl.com/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
120- "endpoint": "/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
121- "params": [{ "param": "withExternalIds", "val": "true" }]
122- },
123- {
124- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
125- "endpoint": "/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
126- "params": []
127- },
128- {
129- "raw_url": "https://api.nfl.com/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
130- "endpoint": "/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
131- "params": [{ "param": "withExternalIds", "val": "true" }]
132- },
133- {
134- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
135- "endpoint": "/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
136- "params": []
137- },
138- {
139- "raw_url": "https://api.nfl.com/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
140- "endpoint": "/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
141- "params": [{ "param": "withExternalIds", "val": "true" }]
142- },
143- {
144- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
145- "endpoint": "/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
146- "params": []
147- },
148- {
149- "raw_url": "https://api.nfl.com/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
150- "endpoint": "/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa",
151- "params": [{ "param": "withExternalIds", "val": "true" }]
152- },
153- {
154- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa",
155- "endpoint": "/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa",
156- "params": []
157- },
158- {
159- "raw_url": "https://api.nfl.com/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
160- "endpoint": "/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa",
161- "params": [{ "param": "withExternalIds", "val": "true" }]
162- },
163- {
164- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa",
165- "endpoint": "/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa",
166- "params": []
167- },
168- {
169- "raw_url": "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
170- "endpoint": "/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
171- "params": [{ "param": "withExternalIds", "val": "true" }]
172- },
173- {
174- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
175- "endpoint": "/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
176- "params": []
177- },
178- {
179- "raw_url": "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
180- "endpoint": "/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
181- "params": [{ "param": "withExternalIds", "val": "true" }]
182- },
183- {
184- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
185- "endpoint": "/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
186- "params": []
187- },
188- {
189- "raw_url": "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
190- "endpoint": "/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa",
191- "params": [{ "param": "withExternalIds", "val": "true" }]
192- },
193- {
194- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
195- "endpoint": "/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
196- "params": []
197- },
198- {
199- "raw_url": "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
200- "endpoint": "/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa",
201- "params": [{ "param": "withExternalIds", "val": "true" }]
202- },
203- {
204- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
205- "endpoint": "/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
206- "params": []
207- },
208- {
209- "raw_url": "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
210- "endpoint": "/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa",
211- "params": [{ "param": "withExternalIds", "val": "true" }]
212- },
213- {
214- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
215- "endpoint": "/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
216- "params": []
217- },
218- {
219- "raw_url": "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
220- "endpoint": "/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
221- "params": [{ "param": "withExternalIds", "val": "true" }]
222- },
223- {
224- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
225- "endpoint": "/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
226- "params": []
227- },
228- {
229- "raw_url": "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
230- "endpoint": "/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
231- "params": [{ "param": "withExternalIds", "val": "true" }]
232- },
233- {
234- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
235- "endpoint": "/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
236- "params": []
237- },
238- {
239- "raw_url": "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
240- "endpoint": "/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
241- "params": [{ "param": "withExternalIds", "val": "true" }]
242- },
243- {
244- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
245- "endpoint": "/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
246- "params": []
247- },
248- {
249- "raw_url": "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
250- "endpoint": "/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
251- "params": [{ "param": "withExternalIds", "val": "true" }]
252- },
253- {
254- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
255- "endpoint": "/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
256- "params": []
257- },
258- {
259- "raw_url": "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
260- "endpoint": "/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
261- "params": [{ "param": "withExternalIds", "val": "true" }]
262- },
263- {
264- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
265- "endpoint": "/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
266- "params": []
267- },
268- {
269- "raw_url": "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
270- "endpoint": "/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
271- "params": [{ "param": "withExternalIds", "val": "true" }]
272- },
273- {
274- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
275- "endpoint": "/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
276- "params": []
277- },
278- {
279- "raw_url": "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
280- "endpoint": "/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa",
281- "params": [{ "param": "withExternalIds", "val": "true" }]
282- },
283- {
284- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
285- "endpoint": "/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
286- "params": []
287- },
288- {
289- "raw_url": "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
290- "endpoint": "/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa",
291- "params": [{ "param": "withExternalIds", "val": "true" }]
292- },
293- {
294- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
295- "endpoint": "/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
296- "params": []
297- },
298- {
299- "raw_url": "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
300- "endpoint": "/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa",
301- "params": [{ "param": "withExternalIds", "val": "true" }]
302- },
303- {
304- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
305- "endpoint": "/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
306- "params": []
307- },
308- {
309- "raw_url": "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
310- "endpoint": "/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa",
311- "params": [{ "param": "withExternalIds", "val": "true" }]
312- },
313- {
314- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
315- "endpoint": "/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
316- "params": []
317- },
318- {
319- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ec38f-f053-11ed-b4a7-bab79e4492fa",
320- "endpoint": "/content/v1/videos/replays",
321- "params": [
322- { "param": "gameId", "val": "b07ec38f-f053-11ed-b4a7-bab79e4492fa" }
323- ]
324- },
325- {
326- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ebf16-f053-11ed-b4a7-bab79e4492fa",
327- "endpoint": "/content/v1/videos/replays",
328- "params": [
329- { "param": "gameId", "val": "b07ebf16-f053-11ed-b4a7-bab79e4492fa" }
330- ]
331- },
332- {
333- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ed134-f053-11ed-b4a7-bab79e4492fa",
334- "endpoint": "/content/v1/videos/replays",
335- "params": [
336- { "param": "gameId", "val": "b07ed134-f053-11ed-b4a7-bab79e4492fa" }
337- ]
338- },
339- {
340- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ee104-f053-11ed-b4a7-bab79e4492fa",
341- "endpoint": "/content/v1/videos/replays",
342- "params": [
343- { "param": "gameId", "val": "b07ee104-f053-11ed-b4a7-bab79e4492fa" }
344- ]
345- },
346- {
347- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07edc7f-f053-11ed-b4a7-bab79e4492fa",
348- "endpoint": "/content/v1/videos/replays",
349- "params": [
350- { "param": "gameId", "val": "b07edc7f-f053-11ed-b4a7-bab79e4492fa" }
351- ]
352- },
353- {
354- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ed7da-f053-11ed-b4a7-bab79e4492fa",
355- "endpoint": "/content/v1/videos/replays",
356- "params": [
357- { "param": "gameId", "val": "b07ed7da-f053-11ed-b4a7-bab79e4492fa" }
358- ]
359- },
360- {
361- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ee5cd-f053-11ed-b4a7-bab79e4492fa",
362- "endpoint": "/content/v1/videos/replays",
363- "params": [
364- { "param": "gameId", "val": "b07ee5cd-f053-11ed-b4a7-bab79e4492fa" }
365- ]
366- },
367- {
368- "raw_url": "https://api.nfl.com/football/v2/games/b07eaa67-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
369- "endpoint": "/football/v2/games/b07eaa67-f053-11ed-b4a7-bab79e4492fa",
370- "params": [{ "param": "withExternalIds", "val": "true" }]
371- },
372- {
373- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaa67-f053-11ed-b4a7-bab79e4492fa",
374- "endpoint": "/football/v2/stats/live/game-summaries/b07eaa67-f053-11ed-b4a7-bab79e4492fa",
375- "params": []
376- },
377- {
378- "raw_url": "https://api.nfl.com/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
379- "endpoint": "/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
380- "params": [{ "param": "withExternalIds", "val": "true" }]
381- },
382- {
383- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa",
384- "endpoint": "/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa",
385- "params": []
386- },
387- {
388- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
389- "endpoint": "/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
390- "params": []
391- },
392- {
393- "raw_url": "https://api.nfl.com/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
394- "endpoint": "/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
395- "params": [{ "param": "withExternalIds", "val": "true" }]
396- },
397- {
398- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
399- "endpoint": "/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
400- "params": []
401- },
402- {
403- "raw_url": "https://api.nfl.com/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
404- "endpoint": "/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
405- "params": [{ "param": "withExternalIds", "val": "true" }]
406- },
407- {
408- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
409- "endpoint": "/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
410- "params": []
411- },
412- {
413- "raw_url": "https://api.nfl.com/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
414- "endpoint": "/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
415- "params": [{ "param": "withExternalIds", "val": "true" }]
416- },
417- {
418- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
419- "endpoint": "/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
420- "params": []
421- },
422- {
423- "raw_url": "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
424- "endpoint": "/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa",
425- "params": [{ "param": "withExternalIds", "val": "true" }]
426- },
427- {
428- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
429- "endpoint": "/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
430- "params": []
431- },
432- {
433- "raw_url": "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
434- "endpoint": "/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
435- "params": [{ "param": "withExternalIds", "val": "true" }]
436- },
437- {
438- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
439- "endpoint": "/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
440- "params": []
441- },
442- {
443- "raw_url": "https://api.nfl.com/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
444- "endpoint": "/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa",
445- "params": [{ "param": "withExternalIds", "val": "true" }]
446- },
447- {
448- "raw_url": "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
449- "endpoint": "/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa",
450- "params": [{ "param": "withExternalIds", "val": "true" }]
451- },
452- {
453- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
454- "endpoint": "/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
455- "params": []
456- },
457- {
458- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
459- "endpoint": "/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
460- "params": []
461- },
462- {
463- "raw_url": "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
464- "endpoint": "/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
465- "params": [{ "param": "withExternalIds", "val": "true" }]
466- },
467- {
468- "raw_url": "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
469- "endpoint": "/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
470- "params": [{ "param": "withExternalIds", "val": "true" }]
471- },
472- {
473- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
474- "endpoint": "/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
475- "params": []
476- },
477- {
478- "raw_url": "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
479- "endpoint": "/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa",
480- "params": [{ "param": "withExternalIds", "val": "true" }]
481- },
482- {
483- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
484- "endpoint": "/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
485- "params": []
486- },
487- {
488- "raw_url": "https://api.nfl.com/live/v1/livestreams?contentType=GAME&endTime=2023-11-07T08%3A00%3A00.000Z&startTime=2023-11-01T07%3A00%3A00.000Z",
489- "endpoint": "/live/v1/livestreams",
490- "params": [
491- { "param": "contentType", "val": "GAME" },
492- { "param": "endTime", "val": "2023-11-07T08%3A00%3A00.000Z" },
493- { "param": "startTime", "val": "2023-11-01T07%3A00%3A00.000Z" }
494- ]
495- },
496- {
497- "raw_url": "https://api.nfl.com/live/v1/livestreams?contentType=GAME&endTime=2023-11-05T07%3A00%3A00.000Z&startTime=2023-11-03T07%3A00%3A00.000Z",
498- "endpoint": "/live/v1/livestreams",
499- "params": [
500- { "param": "contentType", "val": "GAME" },
501- { "param": "endTime", "val": "2023-11-05T07%3A00%3A00.000Z" },
502- { "param": "startTime", "val": "2023-11-03T07%3A00%3A00.000Z" }
503- ]
504- },
505- {
506- "raw_url": "https://api.nfl.com/live/v1/livestreams?contentType=AUDIO&endTime=2023-11-07T08%3A00%3A00.000Z&startTime=2023-11-01T07%3A00%3A00.000Z",
507- "endpoint": "/live/v1/livestreams",
508- "params": [
509- { "param": "contentType", "val": "AUDIO" },
510- { "param": "endTime", "val": "2023-11-07T08%3A00%3A00.000Z" },
511- { "param": "startTime", "val": "2023-11-01T07%3A00%3A00.000Z" }
512- ]
513- },
514- {
515- "raw_url": "https://api.nfl.com/live/v1/livestreams?contentType=AUDIO&endTime=2023-11-05T07%3A00%3A00.000Z&startTime=2023-11-03T07%3A00%3A00.000Z",
516- "endpoint": "/live/v1/livestreams",
517- "params": [
518- { "param": "contentType", "val": "AUDIO" },
519- { "param": "endTime", "val": "2023-11-05T07%3A00%3A00.000Z" },
520- { "param": "startTime", "val": "2023-11-03T07%3A00%3A00.000Z" }
521- ]
522- },
523- {
524- "raw_url": "https://api.nfl.com/football/v2/games/b07eaa67-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
525- "endpoint": "/football/v2/games/b07eaa67-f053-11ed-b4a7-bab79e4492fa",
526- "params": [{ "param": "withExternalIds", "val": "true" }]
527- },
528- {
529- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa",
530- "endpoint": "/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa",
531- "params": []
532- },
533- {
534- "raw_url": "https://api.nfl.com/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
535- "endpoint": "/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
536- "params": [{ "param": "withExternalIds", "val": "true" }]
537- },
538- {
539- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaa67-f053-11ed-b4a7-bab79e4492fa",
540- "endpoint": "/football/v2/stats/live/game-summaries/b07eaa67-f053-11ed-b4a7-bab79e4492fa",
541- "params": []
542- },
543- {
544- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
545- "endpoint": "/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
546- "params": []
547- },
548- {
549- "raw_url": "https://api.nfl.com/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
550- "endpoint": "/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
551- "params": [{ "param": "withExternalIds", "val": "true" }]
552- },
553- {
554- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
555- "endpoint": "/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
556- "params": []
557- },
558- {
559- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
560- "endpoint": "/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
561- "params": []
562- },
563- {
564- "raw_url": "https://api.nfl.com/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
565- "endpoint": "/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
566- "params": [{ "param": "withExternalIds", "val": "true" }]
567- },
568- {
569- "raw_url": "https://api.nfl.com/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
570- "endpoint": "/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
571- "params": [{ "param": "withExternalIds", "val": "true" }]
572- },
573- {
574- "raw_url": "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
575- "endpoint": "/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa",
576- "params": [{ "param": "withExternalIds", "val": "true" }]
577- },
578- {
579- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
580- "endpoint": "/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
581- "params": []
582- },
583- {
584- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
585- "endpoint": "/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
586- "params": []
587- },
588- {
589- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
590- "endpoint": "/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
591- "params": []
592- },
593- {
594- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
595- "endpoint": "/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
596- "params": []
597- },
598- {
599- "raw_url": "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
600- "endpoint": "/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
601- "params": [{ "param": "withExternalIds", "val": "true" }]
602- },
603- {
604- "raw_url": "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
605- "endpoint": "/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa",
606- "params": [{ "param": "withExternalIds", "val": "true" }]
607- },
608- {
609- "raw_url": "https://api.nfl.com/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
610- "endpoint": "/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa",
611- "params": [{ "param": "withExternalIds", "val": "true" }]
612- },
613- {
614- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
615- "endpoint": "/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
616- "params": []
617- },
618- {
619- "raw_url": "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
620- "endpoint": "/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
621- "params": [{ "param": "withExternalIds", "val": "true" }]
622- },
623- {
624- "raw_url": "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
625- "endpoint": "/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
626- "params": [{ "param": "withExternalIds", "val": "true" }]
627- },
628- {
629- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
630- "endpoint": "/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
631- "params": []
632- },
633- {
634- "raw_url": "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
635- "endpoint": "/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa",
636- "params": [{ "param": "withExternalIds", "val": "true" }]
637- },
638- {
639- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
640- "endpoint": "/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
641- "params": []
642- },
643- {
644- "raw_url": "https://api.nfl.com/live/v1/livestreams?contentType=AUDIO&endTime=2023-11-05T07%3A00%3A00.000Z&startTime=2023-11-03T07%3A00%3A00.000Z",
645- "endpoint": "/live/v1/livestreams",
646- "params": [
647- { "param": "contentType", "val": "AUDIO" },
648- { "param": "endTime", "val": "2023-11-05T07%3A00%3A00.000Z" },
649- { "param": "startTime", "val": "2023-11-03T07%3A00%3A00.000Z" }
650- ]
651- },
652- {
653- "raw_url": "https://api.nfl.com/live/v1/livestreams?contentType=GAME&endTime=2023-11-07T08%3A00%3A00.000Z&startTime=2023-11-01T07%3A00%3A00.000Z",
654- "endpoint": "/live/v1/livestreams",
655- "params": [
656- { "param": "contentType", "val": "GAME" },
657- { "param": "endTime", "val": "2023-11-07T08%3A00%3A00.000Z" },
658- { "param": "startTime", "val": "2023-11-01T07%3A00%3A00.000Z" }
659- ]
660- },
661- {
662- "raw_url": "https://api.nfl.com/live/v1/livestreams?contentType=GAME&endTime=2023-11-05T07%3A00%3A00.000Z&startTime=2023-11-03T07%3A00%3A00.000Z",
663- "endpoint": "/live/v1/livestreams",
664- "params": [
665- { "param": "contentType", "val": "GAME" },
666- { "param": "endTime", "val": "2023-11-05T07%3A00%3A00.000Z" },
667- { "param": "startTime", "val": "2023-11-03T07%3A00%3A00.000Z" }
668- ]
669- },
670- {
671- "raw_url": "https://api.nfl.com/live/v1/livestreams?contentType=AUDIO&endTime=2023-11-07T08%3A00%3A00.000Z&startTime=2023-11-01T07%3A00%3A00.000Z",
672- "endpoint": "/live/v1/livestreams",
673- "params": [
674- { "param": "contentType", "val": "AUDIO" },
675- { "param": "endTime", "val": "2023-11-07T08%3A00%3A00.000Z" },
676- { "param": "startTime", "val": "2023-11-01T07%3A00%3A00.000Z" }
677- ]
678- },
679- {
680- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa",
681- "endpoint": "/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa",
682- "params": []
683- },
684- {
685- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
686- "endpoint": "/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
687- "params": []
688- },
689- {
690- "raw_url": "https://api.nfl.com/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
691- "endpoint": "/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa",
692- "params": [{ "param": "withExternalIds", "val": "true" }]
693- },
694- {
695- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
696- "endpoint": "/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
697- "params": []
698- },
699- {
700- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
701- "endpoint": "/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
702- "params": []
703- },
704- {
705- "raw_url": "https://api.nfl.com/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
706- "endpoint": "/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa",
707- "params": [{ "param": "withExternalIds", "val": "true" }]
708- },
709- {
710- "raw_url": "https://api.nfl.com/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
711- "endpoint": "/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
712- "params": [{ "param": "withExternalIds", "val": "true" }]
713- },
714- {
715- "raw_url": "https://api.nfl.com/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
716- "endpoint": "/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
717- "params": [{ "param": "withExternalIds", "val": "true" }]
718- },
719- {
720- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
721- "endpoint": "/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa",
722- "params": []
723- },
724- {
725- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
726- "endpoint": "/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa",
727- "params": []
728- },
729- {
730- "raw_url": "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
731- "endpoint": "/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa",
732- "params": [{ "param": "withExternalIds", "val": "true" }]
733- },
734- {
735- "raw_url": "https://api.nfl.com/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
736- "endpoint": "/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa",
737- "params": [{ "param": "withExternalIds", "val": "true" }]
738- },
739- {
740- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
741- "endpoint": "/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa",
742- "params": []
743- },
744- {
745- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
746- "endpoint": "/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
747- "params": []
748- },
749- {
750- "raw_url": "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
751- "endpoint": "/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa",
752- "params": [{ "param": "withExternalIds", "val": "true" }]
753- },
754- {
755- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
756- "endpoint": "/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
757- "params": []
758- },
759- {
760- "raw_url": "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
761- "endpoint": "/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa",
762- "params": [{ "param": "withExternalIds", "val": "true" }]
763- },
764- {
765- "raw_url": "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
766- "endpoint": "/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa",
767- "params": [{ "param": "withExternalIds", "val": "true" }]
768- },
769- {
770- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
771- "endpoint": "/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
772- "params": []
773- },
774- {
775- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
776- "endpoint": "/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
777- "params": []
778- },
779- {
780- "raw_url": "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
781- "endpoint": "/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa",
782- "params": [{ "param": "withExternalIds", "val": "true" }]
783- },
784- {
785- "raw_url": "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
786- "endpoint": "/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa",
787- "params": [{ "param": "withExternalIds", "val": "true" }]
788- },
789- {
790- "raw_url": "https://api.nfl.com/content/v1/videos?clipType=Preview&season=2023&seasonType=REG&week=9&sort=contentDate%3Adesc",
791- "endpoint": "/content/v1/videos",
792- "params": [
793- { "param": "clipType", "val": "Preview" },
794- { "param": "season", "val": "2023" },
795- { "param": "seasonType", "val": "REG" },
796- { "param": "week", "val": "9" },
797- { "param": "sort", "val": "contentDate%3Adesc" }
798- ]
799- },
800- {
801- "raw_url": "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
802- "endpoint": "/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa",
803- "params": []
804- },
805- {
806- "raw_url": "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true",
807- "endpoint": "/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa",
808- "params": [{ "param": "withExternalIds", "val": "true" }]
809- },
810- {
811- "raw_url": "https://api.nfl.com/content/v1/videos?clipType=Preview&season=2023&seasonType=REG&week=9&sort=contentDate%3Adesc",
812- "endpoint": "/content/v1/videos",
813- "params": [
814- { "param": "clipType", "val": "Preview" },
815- { "param": "season", "val": "2023" },
816- { "param": "seasonType", "val": "REG" },
817- { "param": "week", "val": "9" },
818- { "param": "sort", "val": "contentDate%3Adesc" }
819- ]
820- },
821- {
822- "raw_url": "https://api.nfl.com/football/v2/games/season/2023/seasonType/REG/week/10?withExternalIds=true",
823- "endpoint": "/football/v2/games/season/2023/seasonType/REG/week/10",
824- "params": [{ "param": "withExternalIds", "val": "true" }]
825- },
826- {
827- "raw_url": "https://api.nfl.com/football/v2/games/season/2023/seasonType/REG/week/10?withExternalIds=true",
828- "endpoint": "/football/v2/games/season/2023/seasonType/REG/week/10",
829- "params": [{ "param": "withExternalIds", "val": "true" }]
830- },
831- {
832- "raw_url": "https://api.nfl.com/football/v2/standings?seasonType=REG&week=8&season=2023&limit=100",
833- "endpoint": "/football/v2/standings",
834- "params": [
835- { "param": "seasonType", "val": "REG" },
836- { "param": "week", "val": "8" },
837- { "param": "season", "val": "2023" },
838- { "param": "limit", "val": "100" }
839- ]
840- },
841- {
842- "raw_url": "https://api.nfl.com/football/v2/standings?seasonType=REG&week=8&season=2023&limit=100",
843- "endpoint": "/football/v2/standings",
844- "params": [
845- { "param": "seasonType", "val": "REG" },
846- { "param": "week", "val": "8" },
847- { "param": "season", "val": "2023" },
848- { "param": "limit", "val": "100" }
849- ]
850- },
851- {
852- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07eaa67-f053-11ed-b4a7-bab79e4492fa",
853- "endpoint": "/content/v1/videos/replays",
854- "params": [
855- { "param": "gameId", "val": "b07eaa67-f053-11ed-b4a7-bab79e4492fa" }
856- ]
857- },
858- {
859- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07eaef2-f053-11ed-b4a7-bab79e4492fa",
860- "endpoint": "/content/v1/videos/replays",
861- "params": [
862- { "param": "gameId", "val": "b07eaef2-f053-11ed-b4a7-bab79e4492fa" }
863- ]
864- },
865- {
866- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07eb396-f053-11ed-b4a7-bab79e4492fa",
867- "endpoint": "/content/v1/videos/replays",
868- "params": [
869- { "param": "gameId", "val": "b07eb396-f053-11ed-b4a7-bab79e4492fa" }
870- ]
871- },
872- {
873- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07eb9ec-f053-11ed-b4a7-bab79e4492fa",
874- "endpoint": "/content/v1/videos/replays",
875- "params": [
876- { "param": "gameId", "val": "b07eb9ec-f053-11ed-b4a7-bab79e4492fa" }
877- ]
878- },
879- {
880- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ebf16-f053-11ed-b4a7-bab79e4492fa",
881- "endpoint": "/content/v1/videos/replays",
882- "params": [
883- { "param": "gameId", "val": "b07ebf16-f053-11ed-b4a7-bab79e4492fa" }
884- ]
885- },
886- {
887- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ec38f-f053-11ed-b4a7-bab79e4492fa",
888- "endpoint": "/content/v1/videos/replays",
889- "params": [
890- { "param": "gameId", "val": "b07ec38f-f053-11ed-b4a7-bab79e4492fa" }
891- ]
892- },
893- {
894- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ec866-f053-11ed-b4a7-bab79e4492fa",
895- "endpoint": "/content/v1/videos/replays",
896- "params": [
897- { "param": "gameId", "val": "b07ec866-f053-11ed-b4a7-bab79e4492fa" }
898- ]
899- },
900- {
901- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07eccd5-f053-11ed-b4a7-bab79e4492fa",
902- "endpoint": "/content/v1/videos/replays",
903- "params": [
904- { "param": "gameId", "val": "b07eccd5-f053-11ed-b4a7-bab79e4492fa" }
905- ]
906- },
907- {
908- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ed134-f053-11ed-b4a7-bab79e4492fa",
909- "endpoint": "/content/v1/videos/replays",
910- "params": [
911- { "param": "gameId", "val": "b07ed134-f053-11ed-b4a7-bab79e4492fa" }
912- ]
913- },
914- {
915- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ed7da-f053-11ed-b4a7-bab79e4492fa",
916- "endpoint": "/content/v1/videos/replays",
917- "params": [
918- { "param": "gameId", "val": "b07ed7da-f053-11ed-b4a7-bab79e4492fa" }
919- ]
920- },
921- {
922- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07edc7f-f053-11ed-b4a7-bab79e4492fa",
923- "endpoint": "/content/v1/videos/replays",
924- "params": [
925- { "param": "gameId", "val": "b07edc7f-f053-11ed-b4a7-bab79e4492fa" }
926- ]
927- },
928- {
929- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ee104-f053-11ed-b4a7-bab79e4492fa",
930- "endpoint": "/content/v1/videos/replays",
931- "params": [
932- { "param": "gameId", "val": "b07ee104-f053-11ed-b4a7-bab79e4492fa" }
933- ]
934- },
935- {
936- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ee5cd-f053-11ed-b4a7-bab79e4492fa",
937- "endpoint": "/content/v1/videos/replays",
938- "params": [
939- { "param": "gameId", "val": "b07ee5cd-f053-11ed-b4a7-bab79e4492fa" }
940- ]
941- },
942- {
943- "raw_url": "https://api.nfl.com/content/v1/videos/replays?gameId=b07ea540-f053-11ed-b4a7-bab79e4492fa",
944- "endpoint": "/content/v1/videos/replays",
945- "params": [
946- { "param": "gameId", "val": "b07ea540-f053-11ed-b4a7-bab79e4492fa" }
947- ]
948- },
949- {
950- "raw_url": "https://api.nfl.com/fe-store/instances?query=query%7Bviewer%7Binstances(ids%3A%5B%22a2d4a910-4a59-447b-abde-dd969693e784%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7BbuyTicketsDefault%7Btext%2Curl%7D%2CbuyTicketsProBowl%7Btext%2Curl%7D%2CbuyTicketsSuperBowl%7Btext%2Curl%7D%2CrewatchCTA%7Btext%2Curl%7D%7D%7D%7D%7D%7D&variables=%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22ScoresPage%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D",
951- "endpoint": "/fe-store/instances",
952- "params": [
953- {
954- "param": "query",
955- "val": "query%7Bviewer%7Binstances(ids%3A%5B%22a2d4a910-4a59-447b-abde-dd969693e784%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7BbuyTicketsDefault%7Btext%2Curl%7D%2CbuyTicketsProBowl%7Btext%2Curl%7D%2CbuyTicketsSuperBowl%7Btext%2Curl%7D%2CrewatchCTA%7Btext%2Curl%7D%7D%7D%7D%7D%7D"
956- },
957- {
958- "param": "variables",
959- "val": "%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22ScoresPage%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D"
960- }
961- ]
962- },
963- {
964- "raw_url": "https://api.nfl.com/fe-store/instances?query=query%7Bviewer%7Binstances(ids%3A%5B%2248ca44cb-212e-4dfd-a277-1d40f26b0ed1%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7Bname%2Citems%7Bid%2Cname%2Cimage%7Bid%2Csrc%2Cname%2Calt%7D%2Clinks%7Bid%2Curl%2Cname%2Ctext%7D%2Csummary%2Ctitle%2Ccategory%7D%2Ctitle%2Ctype%7D%7D%7D%7D%7D&variables=%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22CardList%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D",
965- "endpoint": "/fe-store/instances",
966- "params": [
967- {
968- "param": "query",
969- "val": "query%7Bviewer%7Binstances(ids%3A%5B%2248ca44cb-212e-4dfd-a277-1d40f26b0ed1%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7Bname%2Citems%7Bid%2Cname%2Cimage%7Bid%2Csrc%2Cname%2Calt%7D%2Clinks%7Bid%2Curl%2Cname%2Ctext%7D%2Csummary%2Ctitle%2Ccategory%7D%2Ctitle%2Ctype%7D%7D%7D%7D%7D"
970- },
971- {
972- "param": "variables",
973- "val": "%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22CardList%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D"
974- }
975- ]
976- },
977- {
978- "raw_url": "https://api.nfl.com/fe-store/instances?query=query%7Bviewer%7Binstances(ids%3A%5B%22a2d4a910-4a59-447b-abde-dd969693e784%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7BbuyTicketsDefault%7Btext%2Curl%7D%2CbuyTicketsProBowl%7Btext%2Curl%7D%2CbuyTicketsSuperBowl%7Btext%2Curl%7D%2CrewatchCTA%7Btext%2Curl%7D%7D%7D%7D%7D%7D&variables=%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22ScoresPage%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D",
979- "endpoint": "/fe-store/instances",
980- "params": [
981- {
982- "param": "query",
983- "val": "query%7Bviewer%7Binstances(ids%3A%5B%22a2d4a910-4a59-447b-abde-dd969693e784%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7BbuyTicketsDefault%7Btext%2Curl%7D%2CbuyTicketsProBowl%7Btext%2Curl%7D%2CbuyTicketsSuperBowl%7Btext%2Curl%7D%2CrewatchCTA%7Btext%2Curl%7D%7D%7D%7D%7D%7D"
984- },
985- {
986- "param": "variables",
987- "val": "%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22ScoresPage%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D"
988- }
989- ]
990- },
991- {
992- "raw_url": "https://api.nfl.com/fe-store/instances?query=query%7Bviewer%7Binstances(ids%3A%5B%2248ca44cb-212e-4dfd-a277-1d40f26b0ed1%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7Bname%2Citems%7Bid%2Cname%2Cimage%7Bid%2Csrc%2Cname%2Calt%7D%2Clinks%7Bid%2Curl%2Cname%2Ctext%7D%2Csummary%2Ctitle%2Ccategory%7D%2Ctitle%2Ctype%7D%7D%7D%7D%7D&variables=%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22CardList%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D",
993- "endpoint": "/fe-store/instances",
994- "params": [
995- {
996- "param": "query",
997- "val": "query%7Bviewer%7Binstances(ids%3A%5B%2248ca44cb-212e-4dfd-a277-1d40f26b0ed1%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7Bname%2Citems%7Bid%2Cname%2Cimage%7Bid%2Csrc%2Cname%2Calt%7D%2Clinks%7Bid%2Curl%2Cname%2Ctext%7D%2Csummary%2Ctitle%2Ccategory%7D%2Ctitle%2Ctype%7D%7D%7D%7D%7D"
998- },
999- {
1000- "param": "variables",
1001- "val": "%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22CardList%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D"
1002- }
1003- ]
1004- },
1005- {
1006- "raw_url": "https://api.nfl.com/play/v1/asset/L5P64hq7cI6KLFiWM_XVSA",
1007- "endpoint": "/play/v1/asset/L5P64hq7cI6KLFiWM_XVSA",
1008- "params": []
1009- },
1010- {
1011- "raw_url": "https://api.nfl.com/play/v1/asset/L5P64hq7cI6KLFiWM_XVSA",
1012- "endpoint": "/play/v1/asset/L5P64hq7cI6KLFiWM_XVSA",
1013- "params": []
1014- }
1015-]
1+{"/football/v2/games/{id}": {"query_parameters": {"withExternalIds": {"type": "boolean", "example": "true"}}, "path_parameters": {"id": {"type": "string", "example": "b07ee5cd-f053-11ed-b4a7-bab79e4492fa"}}}, "/football/v2/stats/live/game-summaries/{id}": {"query_parameters": {}, "path_parameters": {"id": {"type": "string", "example": "b07ee5cd-f053-11ed-b4a7-bab79e4492fa"}}}, "/content/v1/videos/replays": {"query_parameters": {"gameId": {"type": "string", "example": "b07ea540-f053-11ed-b4a7-bab79e4492fa"}}, "path_parameters": {}}, "/live/v1/livestreams": {"query_parameters": {"contentType": {"type": "string", "example": "AUDIO"}, "endTime": {"type": "string", "example": "2023-11-06T08:00:00.000Z"}, "startTime": {"type": "string", "example": "2023-11-04T07:00:00.000Z"}}, "path_parameters": {}}, "/content/v1/videos": {"query_parameters": {"clipType": {"type": "string", "example": "Preview"}, "season": {"type": "integer", "example": 2023}, "seasonType": {"type": "string", "example": "REG"}, "week": {"type": "integer", "example": 9}, "sort": {"type": "string", "example": "contentDate:desc"}}, "path_parameters": {}}, "/football/v2/games/season/2023/seasonType/REG/week/10": {"query_parameters": {"withExternalIds": {"type": "boolean", "example": "true"}}, "path_parameters": {}}, "/football/v2/standings": {"query_parameters": {"seasonType": {"type": "string", "example": "REG"}, "week": {"type": "integer", "example": 8}, "season": {"type": "integer", "example": 2023}, "limit": {"type": "integer", "example": 100}}, "path_parameters": {}}, "/fe-store/instances": {"query_parameters": {"query": {"type": "string", "example": "query{viewer{instances(ids:[\"48ca44cb-212e-4dfd-a277-1d40f26b0ed1\"],label:\"\"){edges{node{name,items{id,name,image{id,src,name,alt},links{id,url,name,text},summary,title,category},title,type}}}}}"}, "variables": {"type": "string", "example": "{\"FE_STORE_INSTANCE_NAMESPACE\":\"WEB.NDC\",\"FE_STORE_TYPE_NAME\":\"CardList\",\"FE_STORE_TYPE_NAMESPACE\":\"WEB\"}"}}, "path_parameters": {}}, "/play/v1/asset/L5P64hq7cI6KLFiWM_XVSA": {"query_parameters": {}, "path_parameters": {}}}
+132-327notes.ipynb
@@ -87,403 +87,208 @@
8787 },
8888 {
8989 "cell_type": "code",
90- "execution_count": 1,
90+ "execution_count": 5,
9191 "metadata": {},
9292 "outputs": [],
9393 "source": [
9494 "from nfl_client import NFLClient\n",
95- "client = NFLClient()"
95+ "client = NFLClient(headless=True)"
9696 ]
9797 },
9898 {
9999 "cell_type": "code",
100- "execution_count": 2,
100+ "execution_count": 7,
101101 "metadata": {},
102102 "outputs": [
103103 {
104104 "name": "stdout",
105105 "output_type": "stream",
106106 "text": [
107- "Auth Token: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6ImU1MzVjN2MwLTgxN2YtNDc3Ni04OTkwLTU2NTU2ZjhiMTkyOCIsImNsaWVudEtleSI6IjRjRlVXNkRtd0pwelQ5TDdMckczcVJBY0FCRzVzMDRnIiwiaXNzIjoiTkZMIiwiZGV2aWNlSWQiOiJkMTdlYThlYy02NWVlLTQ5YjUtOTYyNi04NThjN2I4NDFjNDUiLCJwbGFucyI6W3sicGxhbiI6ImZyZWUiLCJleHBpcmF0aW9uRGF0ZSI6IjIwMjQtMTEtMDQiLCJzb3VyY2UiOiJORkwiLCJzdGFydERhdGUiOiIyMDIzLTExLTA1Iiwic3RhdHVzIjoiQUNUSVZFIiwidHJpYWwiOmZhbHNlfV0sIkRpc3BsYXlOYW1lIjoiV0VCX0RFU0tUT1BfREVTS1RPUCIsIk5vdGVzIjoiIiwiZm9ybUZhY3RvciI6IkRFU0tUT1AiLCJsdXJhQXBwS2V5IjoiU1pzNTdkQkdSeGJMNzI4bFZwN0RZUSIsInBsYXRmb3JtIjoiREVTS1RPUCIsInByb2R1Y3ROYW1lIjoiV0VCIiwiY2l0eSI6ImFwcGxlIHZhbGxleSIsImNvdW50cnlDb2RlIjoiVVMiLCJkbWFDb2RlIjoiODAzIiwiaG1hVGVhbXMiOlsiMTA0MDI1MTAtODkzMS0wZDVmLTk4MTUtNzliYjc5NjQ5YTY1IiwiMTA0MDI1MjAtOTZiZi1lOWYyLTRmNjgtODUyMWNhODk2MDYwIiwiMTA0MDQ0MDAtM2IzNS0wNzNmLTE5N2UtMTk0YmI4MjQwNzIzIl0sInJlZ2lvbiI6IkNBIiwiYnJvd3NlciI6IkNocm9tZSBIZWFkbGVzcyIsImNlbGx1bGFyIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJwcm9kdWN0aW9uIiwicm9sZXMiOlsiZnJlZSJdLCJleHAiOjE2OTkxNTkxNTN9.uq3VzAFHpGdUzkvWvYcWzykY6NBlCmuYUR-bR-y_-iQ\n"
107+ "Auth Token: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6ImU1MzVjN2MwLTgxN2YtNDc3Ni04OTkwLTU2NTU2ZjhiMTkyOCIsImNsaWVudEtleSI6IjRjRlVXNkRtd0pwelQ5TDdMckczcVJBY0FCRzVzMDRnIiwiaXNzIjoiTkZMIiwiZGV2aWNlSWQiOiI0YTIzZGM2My00YmQ2LTQ0OTMtYWVmNC0yNDk0OGRkNGMxYTUiLCJwbGFucyI6W3sicGxhbiI6ImZyZWUiLCJleHBpcmF0aW9uRGF0ZSI6IjIwMjQtMTEtMDQiLCJzb3VyY2UiOiJORkwiLCJzdGFydERhdGUiOiIyMDIzLTExLTA1Iiwic3RhdHVzIjoiQUNUSVZFIiwidHJpYWwiOmZhbHNlfV0sIkRpc3BsYXlOYW1lIjoiV0VCX0RFU0tUT1BfREVTS1RPUCIsIk5vdGVzIjoiIiwiZm9ybUZhY3RvciI6IkRFU0tUT1AiLCJsdXJhQXBwS2V5IjoiU1pzNTdkQkdSeGJMNzI4bFZwN0RZUSIsInBsYXRmb3JtIjoiREVTS1RPUCIsInByb2R1Y3ROYW1lIjoiV0VCIiwiY2l0eSI6ImFwcGxlIHZhbGxleSIsImNvdW50cnlDb2RlIjoiVVMiLCJkbWFDb2RlIjoiODAzIiwiaG1hVGVhbXMiOlsiMTA0MDI1MTAtODkzMS0wZDVmLTk4MTUtNzliYjc5NjQ5YTY1IiwiMTA0MDI1MjAtOTZiZi1lOWYyLTRmNjgtODUyMWNhODk2MDYwIiwiMTA0MDQ0MDAtM2IzNS0wNzNmLTE5N2UtMTk0YmI4MjQwNzIzIl0sInJlZ2lvbiI6IkNBIiwiYnJvd3NlciI6IkNocm9tZSBIZWFkbGVzcyIsImNlbGx1bGFyIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJwcm9kdWN0aW9uIiwicm9sZXMiOlsiZnJlZSJdLCJleHAiOjE2OTkxNjQ3MTh9.l60UboGxeZ4ma5dfBircoc9ok_X25aerWyTFFxYTJjo\n"
108108 ]
109109 }
110110 ],
111111 "source": [
112- "client.load_auth_token()\n",
112+ "client.load_auth_token(store_har=True)\n",
113113 "print('Auth Token:', client.auth_token)"
114114 ]
115115 },
116116 {
117- "cell_type": "code",
118- "execution_count": 3,
117+ "cell_type": "markdown",
119118 "metadata": {},
120- "outputs": [
121- {
122- "name": "stdout",
123- "output_type": "stream",
124- "text": [
125- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa\n",
126- "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
127- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa\n",
128- "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
129- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa\n",
130- "https://api.nfl.com/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
131- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa\n",
132- "https://api.nfl.com/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
133- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa\n",
134- "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
135- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa\n",
136- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ec866-f053-11ed-b4a7-bab79e4492fa\n",
137- "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
138- "https://api.nfl.com/content/v1/videos/replays?gameId=b07eb9ec-f053-11ed-b4a7-bab79e4492fa\n",
139- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa\n",
140- "https://api.nfl.com/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
141- "https://api.nfl.com/content/v1/videos/replays?gameId=b07eccd5-f053-11ed-b4a7-bab79e4492fa\n",
142- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa\n",
143- "https://api.nfl.com/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
144- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa\n",
145- "https://api.nfl.com/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
146- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa\n",
147- "https://api.nfl.com/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
148- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa\n",
149- "https://api.nfl.com/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
150- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa\n",
151- "https://api.nfl.com/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
152- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa\n",
153- "https://api.nfl.com/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
154- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa\n",
155- "https://api.nfl.com/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
156- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa\n",
157- "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
158- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa\n",
159- "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
160- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa\n",
161- "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
162- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa\n",
163- "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
164- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa\n",
165- "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
166- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa\n",
167- "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
168- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa\n",
169- "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
170- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa\n",
171- "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
172- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa\n",
173- "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
174- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa\n",
175- "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
176- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa\n",
177- "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
178- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa\n",
179- "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
180- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa\n",
181- "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
182- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa\n",
183- "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
184- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa\n",
185- "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
186- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa\n",
187- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ec38f-f053-11ed-b4a7-bab79e4492fa\n",
188- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ebf16-f053-11ed-b4a7-bab79e4492fa\n",
189- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ed134-f053-11ed-b4a7-bab79e4492fa\n",
190- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ee104-f053-11ed-b4a7-bab79e4492fa\n",
191- "https://api.nfl.com/content/v1/videos/replays?gameId=b07edc7f-f053-11ed-b4a7-bab79e4492fa\n",
192- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ed7da-f053-11ed-b4a7-bab79e4492fa\n",
193- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ee5cd-f053-11ed-b4a7-bab79e4492fa\n",
194- "https://api.nfl.com/football/v2/games/b07eaa67-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
195- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaa67-f053-11ed-b4a7-bab79e4492fa\n",
196- "https://api.nfl.com/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
197- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa\n",
198- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa\n",
199- "https://api.nfl.com/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
200- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa\n",
201- "https://api.nfl.com/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
202- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa\n",
203- "https://api.nfl.com/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
204- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa\n",
205- "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
206- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa\n",
207- "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
208- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa\n",
209- "https://api.nfl.com/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
210- "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
211- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa\n",
212- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa\n",
213- "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
214- "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
215- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa\n",
216- "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
217- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa\n",
218- "https://api.nfl.com/live/v1/livestreams?contentType=GAME&endTime=2023-11-07T08%3A00%3A00.000Z&startTime=2023-11-01T07%3A00%3A00.000Z\n",
219- "https://api.nfl.com/live/v1/livestreams?contentType=GAME&endTime=2023-11-05T07%3A00%3A00.000Z&startTime=2023-11-03T07%3A00%3A00.000Z\n",
220- "https://api.nfl.com/live/v1/livestreams?contentType=AUDIO&endTime=2023-11-07T08%3A00%3A00.000Z&startTime=2023-11-01T07%3A00%3A00.000Z\n",
221- "https://api.nfl.com/live/v1/livestreams?contentType=AUDIO&endTime=2023-11-05T07%3A00%3A00.000Z&startTime=2023-11-03T07%3A00%3A00.000Z\n",
222- "https://api.nfl.com/football/v2/games/b07eaa67-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
223- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa\n",
224- "https://api.nfl.com/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
225- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaa67-f053-11ed-b4a7-bab79e4492fa\n",
226- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa\n",
227- "https://api.nfl.com/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
228- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa\n",
229- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa\n",
230- "https://api.nfl.com/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
231- "https://api.nfl.com/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
232- "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
233- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa\n",
234- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa\n",
235- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa\n",
236- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa\n",
237- "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
238- "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
239- "https://api.nfl.com/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
240- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa\n",
241- "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
242- "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
243- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa\n",
244- "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
245- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa\n",
246- "https://api.nfl.com/live/v1/livestreams?contentType=AUDIO&endTime=2023-11-05T07%3A00%3A00.000Z&startTime=2023-11-03T07%3A00%3A00.000Z\n",
247- "https://api.nfl.com/live/v1/livestreams?contentType=GAME&endTime=2023-11-07T08%3A00%3A00.000Z&startTime=2023-11-01T07%3A00%3A00.000Z\n",
248- "https://api.nfl.com/live/v1/livestreams?contentType=GAME&endTime=2023-11-05T07%3A00%3A00.000Z&startTime=2023-11-03T07%3A00%3A00.000Z\n",
249- "https://api.nfl.com/live/v1/livestreams?contentType=AUDIO&endTime=2023-11-07T08%3A00%3A00.000Z&startTime=2023-11-01T07%3A00%3A00.000Z\n",
250- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec866-f053-11ed-b4a7-bab79e4492fa\n",
251- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eaef2-f053-11ed-b4a7-bab79e4492fa\n",
252- "https://api.nfl.com/football/v2/games/b07eaef2-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
253- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ebf16-f053-11ed-b4a7-bab79e4492fa\n",
254- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb9ec-f053-11ed-b4a7-bab79e4492fa\n",
255- "https://api.nfl.com/football/v2/games/b07ebf16-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
256- "https://api.nfl.com/football/v2/games/b07eb9ec-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
257- "https://api.nfl.com/football/v2/games/b07ec38f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
258- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ec38f-f053-11ed-b4a7-bab79e4492fa\n",
259- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eb396-f053-11ed-b4a7-bab79e4492fa\n",
260- "https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
261- "https://api.nfl.com/football/v2/games/b07ec866-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
262- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed134-f053-11ed-b4a7-bab79e4492fa\n",
263- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ed7da-f053-11ed-b4a7-bab79e4492fa\n",
264- "https://api.nfl.com/football/v2/games/b07ed134-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
265- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07eccd5-f053-11ed-b4a7-bab79e4492fa\n",
266- "https://api.nfl.com/football/v2/games/b07eccd5-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
267- "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
268- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07edc7f-f053-11ed-b4a7-bab79e4492fa\n",
269- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa\n",
270- "https://api.nfl.com/football/v2/games/b07ed7da-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
271- "https://api.nfl.com/football/v2/games/b07edc7f-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
272- "https://api.nfl.com/content/v1/videos?clipType=Preview&season=2023&seasonType=REG&week=9&sort=contentDate%3Adesc\n",
273- "https://api.nfl.com/football/v2/stats/live/game-summaries/b07ee104-f053-11ed-b4a7-bab79e4492fa\n",
274- "https://api.nfl.com/football/v2/games/b07ee104-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true\n",
275- "https://api.nfl.com/content/v1/videos?clipType=Preview&season=2023&seasonType=REG&week=9&sort=contentDate%3Adesc\n",
276- "https://api.nfl.com/football/v2/games/season/2023/seasonType/REG/week/10?withExternalIds=true\n",
277- "https://api.nfl.com/football/v2/games/season/2023/seasonType/REG/week/10?withExternalIds=true\n",
278- "https://api.nfl.com/football/v2/standings?seasonType=REG&week=8&season=2023&limit=100\n",
279- "https://api.nfl.com/football/v2/standings?seasonType=REG&week=8&season=2023&limit=100\n",
280- "https://api.nfl.com/content/v1/videos/replays?gameId=b07eaa67-f053-11ed-b4a7-bab79e4492fa\n",
281- "https://api.nfl.com/content/v1/videos/replays?gameId=b07eaef2-f053-11ed-b4a7-bab79e4492fa\n",
282- "https://api.nfl.com/content/v1/videos/replays?gameId=b07eb396-f053-11ed-b4a7-bab79e4492fa\n",
283- "https://api.nfl.com/content/v1/videos/replays?gameId=b07eb9ec-f053-11ed-b4a7-bab79e4492fa\n",
284- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ebf16-f053-11ed-b4a7-bab79e4492fa\n",
285- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ec38f-f053-11ed-b4a7-bab79e4492fa\n",
286- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ec866-f053-11ed-b4a7-bab79e4492fa\n",
287- "https://api.nfl.com/content/v1/videos/replays?gameId=b07eccd5-f053-11ed-b4a7-bab79e4492fa\n",
288- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ed134-f053-11ed-b4a7-bab79e4492fa\n",
289- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ed7da-f053-11ed-b4a7-bab79e4492fa\n",
290- "https://api.nfl.com/content/v1/videos/replays?gameId=b07edc7f-f053-11ed-b4a7-bab79e4492fa\n",
291- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ee104-f053-11ed-b4a7-bab79e4492fa\n",
292- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ee5cd-f053-11ed-b4a7-bab79e4492fa\n",
293- "https://api.nfl.com/content/v1/videos/replays?gameId=b07ea540-f053-11ed-b4a7-bab79e4492fa\n",
294- "https://api.nfl.com/fe-store/instances?query=query%7Bviewer%7Binstances(ids%3A%5B%22a2d4a910-4a59-447b-abde-dd969693e784%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7BbuyTicketsDefault%7Btext%2Curl%7D%2CbuyTicketsProBowl%7Btext%2Curl%7D%2CbuyTicketsSuperBowl%7Btext%2Curl%7D%2CrewatchCTA%7Btext%2Curl%7D%7D%7D%7D%7D%7D&variables=%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22ScoresPage%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D\n",
295- "https://api.nfl.com/fe-store/instances?query=query%7Bviewer%7Binstances(ids%3A%5B%2248ca44cb-212e-4dfd-a277-1d40f26b0ed1%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7Bname%2Citems%7Bid%2Cname%2Cimage%7Bid%2Csrc%2Cname%2Calt%7D%2Clinks%7Bid%2Curl%2Cname%2Ctext%7D%2Csummary%2Ctitle%2Ccategory%7D%2Ctitle%2Ctype%7D%7D%7D%7D%7D&variables=%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22CardList%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D\n",
296- "https://api.nfl.com/fe-store/instances?query=query%7Bviewer%7Binstances(ids%3A%5B%22a2d4a910-4a59-447b-abde-dd969693e784%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7BbuyTicketsDefault%7Btext%2Curl%7D%2CbuyTicketsProBowl%7Btext%2Curl%7D%2CbuyTicketsSuperBowl%7Btext%2Curl%7D%2CrewatchCTA%7Btext%2Curl%7D%7D%7D%7D%7D%7D&variables=%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22ScoresPage%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D\n",
297- "https://api.nfl.com/fe-store/instances?query=query%7Bviewer%7Binstances(ids%3A%5B%2248ca44cb-212e-4dfd-a277-1d40f26b0ed1%22%5D%2Clabel%3A%22%22)%7Bedges%7Bnode%7Bname%2Citems%7Bid%2Cname%2Cimage%7Bid%2Csrc%2Cname%2Calt%7D%2Clinks%7Bid%2Curl%2Cname%2Ctext%7D%2Csummary%2Ctitle%2Ccategory%7D%2Ctitle%2Ctype%7D%7D%7D%7D%7D&variables=%7B%22FE_STORE_INSTANCE_NAMESPACE%22%3A%22WEB.NDC%22%2C%22FE_STORE_TYPE_NAME%22%3A%22CardList%22%2C%22FE_STORE_TYPE_NAMESPACE%22%3A%22WEB%22%7D\n",
298- "https://api.nfl.com/play/v1/asset/L5P64hq7cI6KLFiWM_XVSA\n",
299- "https://api.nfl.com/play/v1/asset/L5P64hq7cI6KLFiWM_XVSA\n"
300- ]
301- }
302- ],
303119 "source": [
304- "client.download_endpoints()"
120+ "### 1.3 Prepare url endpoints into json version for openapi"
305121 ]
306122 },
307123 {
308124 "cell_type": "code",
309- "execution_count": 25,
125+ "execution_count": 16,
310126 "metadata": {},
311127 "outputs": [
312128 {
313129 "data": {
314130 "text/plain": [
315- "WindowsPath('nfl_client_data/har_files')"
131+ "{'/football/v2/games/{id}': {'query_parameters': {'withExternalIds': {'type': 'boolean',\n",
132+ " 'example': 'true'},\n",
133+ " 'int_item': {'type': 'integer', 'example': 4},\n",
134+ " 'num_item': {'type': 'number', 'example': 3.2}},\n",
135+ " 'path_parameters': {'id': {'type': 'string',\n",
136+ " 'example': 'b07eb396-f053-11ed-b4a7-bab79e4492fa'}}}}"
316137 ]
317138 },
318- "execution_count": 25,
139+ "execution_count": 16,
319140 "metadata": {},
320141 "output_type": "execute_result"
321142 }
322143 ],
323144 "source": [
324- "client.HAR_DIR"
325- ]
326- },
327- {
328- "cell_type": "code",
329- "execution_count": 103,
330- "metadata": {},
331- "outputs": [
332- {
333- "data": {
334- "text/plain": [
335- "'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6ImU1MzVjN2MwLTgxN2YtNDc3Ni04OTkwLTU2NTU2ZjhiMTkyOCIsImNsaWVudEtleSI6IjRjRlVXNkRtd0pwelQ5TDdMckczcVJBY0FCRzVzMDRnIiwiaXNzIjoiTkZMIiwiZGV2aWNlSWQiOiI3ZWRmZDk4Yy03MDY0LTQyMTUtYjFiMi0yOTY4MGFhODgyNzgiLCJwbGFucyI6W3sicGxhbiI6ImZyZWUiLCJleHBpcmF0aW9uRGF0ZSI6IjIwMjQtMTEtMDQiLCJzb3VyY2UiOiJORkwiLCJzdGFydERhdGUiOiIyMDIzLTExLTA0Iiwic3RhdHVzIjoiQUNUSVZFIiwidHJpYWwiOmZhbHNlfV0sIkRpc3BsYXlOYW1lIjoiV0VCX0RFU0tUT1BfREVTS1RPUCIsIk5vdGVzIjoiIiwiZm9ybUZhY3RvciI6IkRFU0tUT1AiLCJsdXJhQXBwS2V5IjoiU1pzNTdkQkdSeGJMNzI4bFZwN0RZUSIsInBsYXRmb3JtIjoiREVTS1RPUCIsInByb2R1Y3ROYW1lIjoiV0VCIiwiY2l0eSI6ImFwcGxlIHZhbGxleSIsImNvdW50cnlDb2RlIjoiVVMiLCJkbWFDb2RlIjoiODAzIiwiaG1hVGVhbXMiOlsiMTA0MDI1MTAtODkzMS0wZDVmLTk4MTUtNzliYjc5NjQ5YTY1IiwiMTA0MDI1MjAtOTZiZi1lOWYyLTRmNjgtODUyMWNhODk2MDYwIiwiMTA0MDQ0MDAtM2IzNS0wNzNmLTE5N2UtMTk0YmI4MjQwNzIzIl0sInJlZ2lvbiI6IkNBIiwiYnJvd3NlciI6IkNocm9tZSIsImNlbGx1bGFyIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJwcm9kdWN0aW9uIiwicm9sZXMiOlsiZnJlZSJdLCJleHAiOjE2OTkxNDA3OTB9.L9qs6t9J4yU89RO4Jq1u3YUEIxsmxQ4ffZeXzmHlGn0'"
336- ]
337- },
338- "execution_count": 103,
339- "metadata": {},
340- "output_type": "execute_result"
341- }
342- ],
343- "source": [
344- "import json\n",
145+ "from urllib.parse import urlparse, parse_qs\n",
146+ "import re\n",
345147 "\n",
346148 "\n",
347- "def get_token():\n",
348- " with open('nfl.har', 'r') as f:\n",
349- " har_json = json.load(f)\n",
350- " for entry in har_json['log']['entries']:\n",
351- " for header in entry['request']['headers']:\n",
352- " if header['name'].lower() == 'authorization':\n",
353- " return header['value']\n",
354- "get_token()\n"
149+ "id_re = re.compile(r\"([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})\")\n",
150+ "\n",
151+ "def urlparse_json(url):\n",
152+ " r = urlparse(url)\n",
153+ " id_match = id_re.search(r.path)\n",
154+ " path = r.path\n",
155+ " query_params = {}\n",
156+ " for key, item in parse_qs(r.query).items():\n",
157+ " item_type = 'string'\n",
158+ " example = ''\n",
159+ " if len(item) > 1:\n",
160+ " item_type = 'array'\n",
161+ " example = ','.join(item)\n",
162+ " if len(item) == 1:\n",
163+ " example = item[0]\n",
164+ " try:\n",
165+ " example = float(item[0])\n",
166+ " item_type = 'number'\n",
167+ " except:\n",
168+ " pass\n",
169+ " try:\n",
170+ " example = int(item[0])\n",
171+ " item_type = 'integer'\n",
172+ " except:\n",
173+ " pass\n",
174+ " if item[0] in ['true', 'false']:\n",
175+ " item_type = 'boolean'\n",
176+ " query_params.update({\n",
177+ " key: {\n",
178+ " 'type': item_type,\n",
179+ " 'example': example\n",
180+ " }\n",
181+ " })\n",
182+ " path_params = {}\n",
183+ " if id_match:\n",
184+ " uuid = id_match.group(0)\n",
185+ " path = r.path.replace(uuid, '{id}')\n",
186+ " path_params = {'id': {'type': 'string', 'example': uuid}}\n",
187+ " return {\n",
188+ " path: {\n",
189+ " 'query_parameters': query_params,\n",
190+ " 'path_parameters': path_params\n",
191+ " }\n",
192+ " }\n",
193+ "\n",
194+ "url = 'https://api.nfl.com/football/v2/games/b07eb396-f053-11ed-b4a7-bab79e4492fa?withExternalIds=true&int_item=4&num_item=3.2'\n",
195+ "url_data = urlparse_json(url)\n",
196+ "url_data"
355197 ]
356198 },
357199 {
358- "cell_type": "code",
359- "execution_count": 93,
200+ "cell_type": "markdown",
360201 "metadata": {},
361- "outputs": [
362- {
363- "name": "stdout",
364- "output_type": "stream",
365- "text": [
366- "Authorization header found in the HAR\n"
367- ]
368- }
369- ],
370202 "source": [
371- "from browsermobproxy import Server\n",
372- "from selenium import webdriver\n",
373- "from selenium.webdriver.common.by import By\n",
374- "from selenium.webdriver.support.ui import WebDriverWait\n",
375- "from selenium.webdriver.support import expected_conditions as EC\n",
376- "\n",
377- "# Start BrowserMob Proxy\n",
378- "server = Server(BMP_PATH)\n",
379- "server.start()\n",
380- "proxy = server.create_proxy()\n",
381- "\n",
382- "# Configure Chrome with the proxy\n",
383- "chrome_options = webdriver.ChromeOptions()\n",
384- "chrome_options.add_argument(f'--proxy-server={proxy.proxy}')\n",
385- "chrome_options.add_argument('--ignore-certificate-errors')\n",
386- "driver = webdriver.Chrome(options=chrome_options)\n",
387- "\n",
388- "# Navigate to the website\n",
389- "driver.get(\"https://nfl.com\")\n",
390- "\n",
391- "# Start capturing network traffic\n",
392- "proxy.new_har(\"nfl\", options={'captureHeaders': True})\n",
393- "\n",
394- "# Perform interactions on the website as needed\n",
395- "\n",
396- "# Wait for the \"Authorization\" header to appear in the HAR\n",
397- "def is_authorization_in_har(har):\n",
398- " for entry in har['log']['entries']:\n",
399- " for header in entry['request']['headers']:\n",
400- " if header['name'] == 'Authorization':\n",
401- " return True\n",
402- " return False\n",
403- "\n",
404- "wait = WebDriverWait(driver, 60) # Adjust the timeout as needed\n",
405- "try:\n",
406- " wait.until(lambda driver: is_authorization_in_har(proxy.har))\n",
407- " print(\"Authorization header found in the HAR\")\n",
408- "except Exception:\n",
409- " print(\"Authorization header not found in the HAR\")\n",
410- "\n",
411- "# Close the browser and BrowserMob Proxy\n",
412- "driver.quit()\n",
413- "server.stop()\n"
203+ "#### 1.3.1 Create something to convert this into openapi"
414204 ]
415205 },
416206 {
417207 "cell_type": "code",
418- "execution_count": 38,
208+ "execution_count": 18,
419209 "metadata": {},
420210 "outputs": [],
421211 "source": [
422- "from selenium import webdriver\n",
212+ "import yaml\n",
423213 "\n",
214+ "def add_api_component(openapi_spec, path, info):\n",
215+ " path_parameters = info['path_parameters']\n",
216+ " query_parameters = info['query_parameters']\n",
217+ " openapi_spec['paths'].update({\n",
218+ " path: {\n",
219+ " 'get': {\n",
220+ " 'parameters': [],\n",
221+ " 'responses': {\n",
222+ " '200': {\n",
223+ " 'description': 'Successful response',\n",
224+ " },\n",
225+ " },\n",
226+ " },\n",
227+ " },\n",
228+ " })\n",
424229 "\n",
425- "options = webdriver.ChromeOptions()\n",
426- "options.add_argument('--headless')\n",
230+ " if path_parameters:\n",
231+ " for param_name, param_details in path_parameters.items():\n",
232+ " openapi_spec['paths'][path]['get']['parameters'].append({\n",
233+ " 'name': param_name,\n",
234+ " 'in': 'path',\n",
235+ " 'required': True,\n",
236+ " 'schema': {\n",
237+ " 'type': param_details['type'],\n",
238+ " },\n",
239+ " 'description': f'The {param_name} parameter',\n",
240+ " 'example': param_details['example']\n",
241+ " })\n",
427242 "\n",
428- "driver = webdriver.Chrome(options)\n",
243+ " if query_parameters:\n",
244+ " for param_name, param_details in query_parameters.items():\n",
245+ " openapi_spec['paths'][path]['get']['parameters'].append({\n",
246+ " 'name': param_name,\n",
247+ " 'in': 'query',\n",
248+ " 'schema': {\n",
249+ " 'type': param_details['type'],\n",
250+ " },\n",
251+ " 'description': f'The {param_name} parameter',\n",
252+ " 'example': param_details['example']\n",
253+ " })\n",
429254 "\n",
430- "root_url = 'https://google.com'\n",
431- "root_url = 'https://nfl.com'\n",
432- "driver.get(root_url)"
433- ]
434- },
435- {
436- "cell_type": "code",
437- "execution_count": 48,
438- "metadata": {},
439- "outputs": [
440- {
441- "ename": "WebDriverException",
442- "evalue": "Message: unknown error: network conditions must be set before it can be retrieved\n (Session info: headless chrome=118.0.5993.120)\nStacktrace:\n\tGetHandleVerifier [0x00007FF7D1028EF2+54786]\n\t(No symbol) [0x00007FF7D0F95612]\n\t(No symbol) [0x00007FF7D0E4A64B]\n\t(No symbol) [0x00007FF7D0EB8E10]\n\t(No symbol) [0x00007FF7D0EABE30]\n\t(No symbol) [0x00007FF7D0E80941]\n\t(No symbol) [0x00007FF7D0E81B84]\n\tGetHandleVerifier [0x00007FF7D1377F52+3524194]\n\tGetHandleVerifier [0x00007FF7D13CD800+3874576]\n\tGetHandleVerifier [0x00007FF7D13C5D7F+3843215]\n\tGetHandleVerifier [0x00007FF7D10C5086+694166]\n\t(No symbol) [0x00007FF7D0FA0A88]\n\t(No symbol) [0x00007FF7D0F9CA94]\n\t(No symbol) [0x00007FF7D0F9CBC2]\n\t(No symbol) [0x00007FF7D0F8CC83]\n\tBaseThreadInitThunk [0x00007FFD49F27344+20]\n\tRtlUserThreadStart [0x00007FFD4A5E26B1+33]\n",
443- "output_type": "error",
444- "traceback": [
445- "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
446- "\u001b[1;31mWebDriverException\u001b[0m Traceback (most recent call last)",
447- "\u001b[1;32mc:\\Users\\huncho\\code\\hackathons\\DockerAiHackathon\\main.ipynb Cell 4\u001b[0m line \u001b[0;36m1\n\u001b[1;32m----> <a href='vscode-notebook-cell:/c%3A/Users/huncho/code/hackathons/DockerAiHackathon/main.ipynb#X11sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m driver\u001b[39m.\u001b[39;49mget_network_conditions()\n",
448- "File \u001b[1;32mc:\\Users\\huncho\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\selenium\\webdriver\\chromium\\webdriver.py:82\u001b[0m, in \u001b[0;36mChromiumDriver.get_network_conditions\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 75\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mget_network_conditions\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[0;32m 76\u001b[0m \u001b[39m\"\"\"Gets Chromium network emulation settings.\u001b[39;00m\n\u001b[0;32m 77\u001b[0m \n\u001b[0;32m 78\u001b[0m \u001b[39m :Returns: A dict. For example: {'latency': 4,\u001b[39;00m\n\u001b[0;32m 79\u001b[0m \u001b[39m 'download_throughput': 2, 'upload_throughput': 2, 'offline':\u001b[39;00m\n\u001b[0;32m 80\u001b[0m \u001b[39m False}\u001b[39;00m\n\u001b[0;32m 81\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[1;32m---> 82\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mexecute(\u001b[39m\"\u001b[39;49m\u001b[39mgetNetworkConditions\u001b[39;49m\u001b[39m\"\u001b[39;49m)[\u001b[39m\"\u001b[39m\u001b[39mvalue\u001b[39m\u001b[39m\"\u001b[39m]\n",
449- "File \u001b[1;32mc:\\Users\\huncho\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py:347\u001b[0m, in \u001b[0;36mWebDriver.execute\u001b[1;34m(self, driver_command, params)\u001b[0m\n\u001b[0;32m 345\u001b[0m response \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcommand_executor\u001b[39m.\u001b[39mexecute(driver_command, params)\n\u001b[0;32m 346\u001b[0m \u001b[39mif\u001b[39;00m response:\n\u001b[1;32m--> 347\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49merror_handler\u001b[39m.\u001b[39;49mcheck_response(response)\n\u001b[0;32m 348\u001b[0m response[\u001b[39m\"\u001b[39m\u001b[39mvalue\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_unwrap_value(response\u001b[39m.\u001b[39mget(\u001b[39m\"\u001b[39m\u001b[39mvalue\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mNone\u001b[39;00m))\n\u001b[0;32m 349\u001b[0m \u001b[39mreturn\u001b[39;00m response\n",
450- "File \u001b[1;32mc:\\Users\\huncho\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\selenium\\webdriver\\remote\\errorhandler.py:229\u001b[0m, in \u001b[0;36mErrorHandler.check_response\u001b[1;34m(self, response)\u001b[0m\n\u001b[0;32m 227\u001b[0m alert_text \u001b[39m=\u001b[39m value[\u001b[39m\"\u001b[39m\u001b[39malert\u001b[39m\u001b[39m\"\u001b[39m]\u001b[39m.\u001b[39mget(\u001b[39m\"\u001b[39m\u001b[39mtext\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m 228\u001b[0m \u001b[39mraise\u001b[39;00m exception_class(message, screen, stacktrace, alert_text) \u001b[39m# type: ignore[call-arg] # mypy is not smart enough here\u001b[39;00m\n\u001b[1;32m--> 229\u001b[0m \u001b[39mraise\u001b[39;00m exception_class(message, screen, stacktrace)\n",
451- "\u001b[1;31mWebDriverException\u001b[0m: Message: unknown error: network conditions must be set before it can be retrieved\n (Session info: headless chrome=118.0.5993.120)\nStacktrace:\n\tGetHandleVerifier [0x00007FF7D1028EF2+54786]\n\t(No symbol) [0x00007FF7D0F95612]\n\t(No symbol) [0x00007FF7D0E4A64B]\n\t(No symbol) [0x00007FF7D0EB8E10]\n\t(No symbol) [0x00007FF7D0EABE30]\n\t(No symbol) [0x00007FF7D0E80941]\n\t(No symbol) [0x00007FF7D0E81B84]\n\tGetHandleVerifier [0x00007FF7D1377F52+3524194]\n\tGetHandleVerifier [0x00007FF7D13CD800+3874576]\n\tGetHandleVerifier [0x00007FF7D13C5D7F+3843215]\n\tGetHandleVerifier [0x00007FF7D10C5086+694166]\n\t(No symbol) [0x00007FF7D0FA0A88]\n\t(No symbol) [0x00007FF7D0F9CA94]\n\t(No symbol) [0x00007FF7D0F9CBC2]\n\t(No symbol) [0x00007FF7D0F8CC83]\n\tBaseThreadInitThunk [0x00007FFD49F27344+20]\n\tRtlUserThreadStart [0x00007FFD4A5E26B1+33]\n"
452- ]
453- }
454- ],
455- "source": [
456- "driver.get_network_conditions()"
255+ "\n",
256+ "def generate_openapi_spec(url_json):\n",
257+ " openapi_spec = {\n",
258+ " 'openapi': '3.0.0',\n",
259+ " 'info': {\n",
260+ " 'title': 'NFL API',\n",
261+ " 'version': '1.0.0',\n",
262+ " },\n",
263+ " 'paths': {}\n",
264+ " } \n",
265+ " for path, info in url_json.items():\n",
266+ " add_api_component(openapi_spec, path, info)\n",
267+ " return yaml.dump(openapi_spec, default_flow_style=False)\n",
268+ "\n",
269+ "# Example\n",
270+ "\n",
271+ "openapi_yaml = generate_openapi_spec(url_data)\n",
272+ "with open('openapi.yaml', 'w') as f:\n",
273+ " f.write(openapi_yaml)"
457274 ]
458275 },
459276 {
460- "cell_type": "code",
461- "execution_count": 50,
277+ "cell_type": "markdown",
462278 "metadata": {},
463- "outputs": [],
464279 "source": [
465- "driver.quit()"
280+ "#### 1.3.2 Put it all together"
466281 ]
467282 },
468283 {
469284 "cell_type": "code",
470- "execution_count": 34,
285+ "execution_count": null,
471286 "metadata": {},
472287 "outputs": [],
473288 "source": [
474- "import requests\n",
475- "import json\n",
476- "\n",
477- "# Define the access token\n",
478- "access_token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6ImU1MzVjN2MwLTgxN2YtNDc3Ni04OTkwLTU2NTU2ZjhiMTkyOCIsImNsaWVudEtleSI6IjRjRlVXNkRtd0pwelQ5TDdMckczcVJBY0FCRzVzMDRnIiwiaXNzIjoiTkZMIiwiZGV2aWNlSWQiOiI5NTIzOGE1YS05MTIxLTQzNTEtOTY4MC0wNzZlN2Y2ZTQ1NmYiLCJwbGFucyI6W3sicGxhbiI6ImZyZWUiLCJleHBpcmF0aW9uRGF0ZSI6IjIwMjQtMTEtMDMiLCJzb3VyY2UiOiJORkwiLCJzdGFydERhdGUiOiIyMDIzLTExLTA0Iiwic3RhdHVzIjoiQUNUSVZFIiwidHJpYWwiOmZhbHNlfV0sIkRpc3BsYXlOYW1lIjoiV0VCX0RFU0tUT1BfREVTS1RPUCIsIk5vdGVzIjoiIiwiZm9ybUZhY3RvciI6IkRFU0tUT1AiLCJsdXJhQXBwS2V5IjoiU1pzNTdkQkdSeGJMNzI4bFZwN0RZUSIsInBsYXRmb3JtIjoiREVTS1RPUCIsInByb2R1Y3ROYW1lIjoiV0VCIiwiY2l0eSI6ImxvcyBhbmdlbGVzIiwiY291bnRyeUNvZGUiOiJVUyIsImRtYUNvZGUiOiI4MDMiLCJobWFUZWFtcyI6WyIxMDQwMjUxMC04OTMxLTBkNWYtOTgxNS03OWJiNzk2NDlhNjUiLCIxMDQwMjUyMC05NmJmLWU5ZjItNGY2OC04NTIxY2E4OTYwNjAiLCIxMDQwNDQwMC0zYjM1LTA3M2YtMTk3ZS0xOTRiYjgyNDA3MjMiXSwicmVnaW9uIjoiQ0EiLCJicm93c2VyIjoiQ2hyb21lIiwiY2VsbHVsYXIiOmZhbHNlLCJlbnZpcm9ubWVudCI6InByb2R1Y3Rpb24iLCJyb2xlcyI6WyJmcmVlIl0sImV4cCI6MTY5OTA2NTUwMH0.3a0m-SwXS5ElV9NHNFy2EXwTUDtDCzZkpdPpYs-eW_g'\n",
479- "headers = {\n",
480- " 'Authorization': access_token\n",
481- "}\n",
482- "\n",
483- "def request(api_url):\n",
484- " return requests.get(api_url, headers={\n",
485- " 'Authorization': access_token\n",
486- " })"
289+ "from nfl_client import NFLClient\n",
290+ "client = NFLClient()\n",
291+ "client.download_endpoints()"
487292 ]
488293 },
489294 {