📖 Scenario: You work for a company that provides a public API. Your job is to analyze the usage data to understand how many times each API endpoint was called and by which users.
🎯 Goal: Build a simple program that processes API call logs stored in a dictionary, counts the number of calls per endpoint, and shows usage metrics per user.
📋 What You'll Learn
Create a dictionary with API call logs
Add a variable to hold a threshold for minimum calls
Use a loop to count calls per endpoint and per user
Print the final usage metrics
💡 Why This Matters
🌍 Real World
API providers often need to analyze usage data to improve performance and detect abuse.
💼 Career
Understanding API analytics is important for backend developers, data analysts, and product managers.
Progress0 / 4 steps
1
Create API call logs dictionary
Create a dictionary called api_calls with these exact entries: 'user1': ['/login', '/data', '/logout'], 'user2': ['/login', '/data', '/data'], 'user3': ['/login', '/logout']
Rest API
Hint
Use curly braces to create a dictionary. Keys are user names, values are lists of API endpoints called.
2
Add minimum call threshold
Create a variable called min_calls and set it to 2 to filter endpoints with at least 2 calls
Rest API
Hint
Just create a variable and assign the number 2 to it.
3
Count calls per endpoint and per user
Create two empty dictionaries called endpoint_counts and user_counts. Then use a for loop with variables user and calls to iterate over api_calls.items(). Inside, use another for loop with variable endpoint to iterate over calls. Increment counts in both dictionaries accordingly.
Rest API
Hint
Use dict.get(key, 0) to safely increment counts. Remember to count total calls per user and per endpoint.
4
Print usage metrics filtered by threshold
Use a for loop with variables endpoint and count to iterate over endpoint_counts.items(). Inside the loop, use an if statement to check if count is greater than or equal to min_calls. If yes, print the message f"Endpoint {endpoint} was called {count} times". Then print the user_counts dictionary.
Rest API
Hint
Use a loop and an if condition to filter and print. Then print the user_counts dictionary as is.
Practice
(1/5)
1. What is the main purpose of API analytics in REST APIs?
easy
A. To generate API documentation
B. To create new API endpoints automatically
C. To encrypt API data during transmission
D. To track how the API is used and find issues
Solution
Step 1: Understand API analytics role
API analytics collect data on API usage and performance.
Step 2: Identify main goal
The main goal is to track usage and detect problems.
Final Answer:
To track how the API is used and find issues -> Option D
Quick Check:
API analytics = usage tracking [OK]
Hint: API analytics = usage + problem detection [OK]
Common Mistakes:
Confusing analytics with encryption
Thinking analytics create endpoints
Assuming analytics generate docs
2. Which of the following is the correct way to request API usage metrics grouped by date using query parameters?
easy
A. POST /metrics group_by=date
B. GET /metrics/date
C. GET /metrics?group_by=date
D. PUT /metrics?date=group_by
Solution
Step 1: Identify HTTP method for data retrieval
GET is used to request data without changing it.
Step 2: Check query parameter syntax
Query parameters follow ?key=value format, so ?group_by=date is correct.
Final Answer:
GET /metrics?group_by=date -> Option C
Quick Check:
GET + ?group_by=date = correct syntax [OK]
Hint: Use GET with ?key=value for queries [OK]
Common Mistakes:
Using POST instead of GET for data retrieval
Incorrect query parameter placement
Confusing URL path with query parameters
3. Given this API call: GET /api/usage?start=2024-01-01&end=2024-01-07&group_by=endpoint, what is the expected output?
medium
A. Usage data grouped by API endpoint from Jan 1 to Jan 7, 2024
B. Error because 'group_by' is not a valid parameter
C. Data for all endpoints without grouping
D. Usage data only for Jan 7, 2024
Solution
Step 1: Analyze query parameters
start and end define the date range; group_by=endpoint means grouping results by endpoint.
Step 2: Determine output meaning
The API returns usage data grouped by endpoint for the specified date range.
Final Answer:
Usage data grouped by API endpoint from Jan 1 to Jan 7, 2024 -> Option A
Quick Check:
start/end + group_by=endpoint = grouped usage data [OK]
4. You wrote this API call to get usage metrics but get a 400 Bad Request error: GET /metrics?start_date=2024-01-01&end_date=2024-01-07&groupby=endpoint What is the likely cause?
medium
A. Incorrect query parameter names; should be 'start' and 'end' and 'group_by'
B. GET method cannot have query parameters
C. Missing API key in the URL
D. Using 'groupby' instead of 'groupby_endpoint'
Solution
Step 1: Check query parameter names
The API expects 'start', 'end', and 'group_by' parameters, not 'start_date', 'end_date', or 'groupby'.
Step 2: Understand error cause
Wrong parameter names cause the API to reject the request with 400 Bad Request.
Final Answer:
Incorrect query parameter names; should be 'start' and 'end' and 'group_by' -> Option A
Quick Check:
Parameter names must match API spec [OK]
Hint: Match query parameter names exactly as API docs say [OK]
Common Mistakes:
Using wrong parameter names
Thinking GET can't have query parameters
Assuming missing API key causes 400 error
5. You want to build a dashboard showing daily API call counts and average response times grouped by endpoint for the last 30 days. Which API call best fits this need?
hard
A. GET /api/metrics/daily?group=endpoint&fields=count,response_time_avg
B. GET /api/metrics?start=2024-05-01&end=2024-05-30&group_by=endpoint&metrics=count,response_time_avg
C. POST /api/metrics with JSON body {"group_by":"endpoint","metrics":["count","response_time_avg"]}
D. GET /api/metrics?date_range=last30days&group_by=endpoint
Solution
Step 1: Identify required parameters
We need a date range (last 30 days), grouping by endpoint, and metrics count and average response time.
Step 2: Match API call to requirements
GET /api/metrics?start=2024-05-01&end=2024-05-30&group_by=endpoint&metrics=count,response_time_avg uses GET with start/end dates, group_by=endpoint, and metrics=count,response_time_avg which fits perfectly.
Step 3: Check other options
POST /api/metrics with JSON body {"group_by":"endpoint","metrics":["count","response_time_avg"]} uses POST which is unusual for fetching metrics; A uses different parameter names not standard; D lacks metrics selection.
Final Answer:
GET /api/metrics?start=2024-05-01&end=2024-05-30&group_by=endpoint&metrics=count,response_time_avg -> Option B
Quick Check:
Date range + group_by + metrics = GET /api/metrics?start=2024-05-01&end=2024-05-30&group_by=endpoint&metrics=count,response_time_avg [OK]
Hint: Use GET with start/end, group_by, and metrics parameters [OK]
Common Mistakes:
Using POST instead of GET for data retrieval
Missing metrics parameter
Using incorrect parameter names
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.