This roadmap presents a progressive journey through API fundamentals, professional development, testing, multiple frameworks, delivery practices and complete API projects.
Each lab builds a practical API for a different business scenario, introducing new concepts and technologies while reinforcing previously acquired skills.
Completed: 1 / 18 Labs
- ⬜ Planned
- 🟨 In Progress
- ✅ Completed
- 🟢 Fundamentals
- 🟡 Intermediate
- 🟠 Testing
- 🔵 Multi-Framework
- 🔴 Delivery
- 🟣 Consolidated Project
Build a solid foundation in HTTP, REST, JSON, resource modeling, validation and error handling.
| Status | Lab | Level | API Project | Business Scenario | Main Concepts | Technologies | Skills Demonstrated |
|---|---|---|---|---|---|---|---|
| ✅ | 01 | 🟢 | Weather API | Public Weather Service | HTTP, REST, JSON, Routing, Query Parameters | Python, FastAPI | REST Design, Routing, Responses |
| ⬜ | 02 | 🟢 | Library Management API | University Library | CRUD, Resources, HTTP Methods, Status Codes | Python, FastAPI | Resource Modeling, CRUD Operations |
| ⬜ | 03 | 🟢 | Inventory API | Retail Inventory | Schemas, Validation, Error Handling | Python, FastAPI, Pydantic | Input Validation, Standardized Errors |
An introductory API that initially does not rely on an external weather service. It will accept a city name and return simulated data in JSON format. The goal is to learn API structure, create routes, and work with parameters.
Possible endpoints:
GET /
GET /health
GET /weather
GET /weather/{city}https://github.com/itamarsb/api-engineering-lab/blob/main/labs/01-weather-api/README.md
First complete CRUD. It will allow for registering, querying, updating, and removing books.
Possible endpoints:
GET /books
GET /books/{book_id}
POST /books
PUT /books/{book_id}
PATCH /books/{book_id}
DELETE /books/{book_id}API for product and inventory management. The focus will be on data validation, business rules, and consistent error responses.
Validation examples:
- price greater than zero;
- non-negative quantity;
- mandatory and unique SKU;
- non-existent product;
- insufficient stock.
Develop APIs with authentication, persistence, relational data and advanced resource queries.
| Status | Lab | Level | API Project | Business Scenario | Main Concepts | Technologies | Skills Demonstrated |
|---|---|---|---|---|---|---|---|
| ⬜ | 04 | 🟡 | Authentication API | SaaS Platform | Password Hashing, JWT, Protected Routes, Authorization | Python, FastAPI, JWT | Authentication, Route Protection |
| ⬜ | 05 | 🟡 | Blog Platform API | Content Publishing Platform | Persistence, ORM, Relationships, Data Modeling | FastAPI, SQLite, SQLAlchemy | Database Integration, Relational Modeling |
| ⬜ | 06 | 🟡 | E-commerce Catalog API | Online Store | Pagination, Filtering, Sorting, Search | FastAPI, SQLAlchemy | Query Design, Collection Endpoints |
Will allow creating users, logging in, and accessing protected routes.
Possible endpoints:
POST /auth/register
POST /auth/login
GET /auth/me
GET /admin/usersKey concepts:
- secure password storage;
- password hashing;
- JWT generation;
- Bearer Token;
- authenticated user;
- basic role-based permissions.
The first project featuring actual data persistence. We will use SQLite to keep the lab simple, portable, and easy to run.
Features:
/users
/posts
/comments
/categoriesPossible relationships:
User 1 ─── N Posts
Post 1 ─── N Comments
Category N ─── N Posts
A catalog API with endpoints that handle larger datasets.
Examples:
GET /products?page=1&limit=10
GET /products?category=electronics
GET /products?min_price=100&max_price=1000
GET /products?sort=price&order=asc
GET /products?search=notebookCreate organized test collections, environments, assertions and automated API test executions.
| Status | Lab | Level | API Project | Business Scenario | Main Concepts | Technologies | Skills Demonstrated |
|---|---|---|---|---|---|---|---|
| ⬜ | 07 | 🟠 | Movie Catalog API | Streaming Catalog | Requests, Collections, Environments, Variables | Postman, FastAPI | Manual API Testing, Test Organization |
| ⬜ | 08 | 🟠 | Task Management API | Team Productivity Platform | Assertions, Test Scripts, Dynamic Variables | Postman, JavaScript | Automated Functional Testing |
| ⬜ | 09 | 🟠 | Hotel Booking API | Hotel Reservation Platform | Authentication Flow, Collection Runner, Newman | Postman, Newman, JavaScript | End-to-End API Testing |
The focus will be on creating and organizing a Postman collection.
The collection may contain:
Health Check
Movies
Genres
Directors
Search
The following will be used:
- environments;
- base URL;
- collection variables;
- query parameters;
- headers;
- request body;
- response examples;
- collection documentation.
This lab introduces automated tests written in JavaScript within Postman.
Examples:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Response contains task ID", function () {
const response = pm.response.json();
pm.expect(response).to.have.property("id");
});We will also have:
- dynamic ID capture;
- request chaining;
- creation and removal of test data;
- header validation;
- type validation;
- positive and negative tests.
It will represent a complete business flow:
Register User
↓
Login
↓
Search Rooms
↓
Create Booking
↓
Get Booking
↓
Cancel Booking
The collection will be executed by the Postman Collection Runner and by Newman in the terminal.
Apply the same API engineering principles using different languages, frameworks and architectural styles.
| Status | Lab | Level | API Project | Business Scenario | Main Concepts | Technologies | Skills Demonstrated |
|---|---|---|---|---|---|---|---|
| ⬜ | 10 | 🔵 | Currency Exchange API | Financial Utility Service | External APIs, Async Requests, Error Mapping | Python, FastAPI, HTTPX | External API Integration |
| ⬜ | 11 | 🔵 | Flight Search API | Airline Search Platform | Flask Routing, Blueprints, Serialization | Python, Flask | Flask API Development |
| ⬜ | 12 | 🔵 | Student Management API | Education Platform | Express Routing, Middleware, Controllers | JavaScript, Node.js, Express | JavaScript API Development |
| ⬜ | 13 | 🔵 | Healthcare Appointment API | Appointment Scheduling Platform | TypeScript, Modules, Services, DTOs | TypeScript, NestJS | Structured Backend Development |
You will consume a public currency exchange API and provide a custom interface for conversions.
Possible endpoints:
GET /currencies
GET /rates/{base_currency}
GET /convert?from=USD&to=BRL&amount=100Concepts:
- external API consumption;
- asynchronous HTTP client;
- timeouts;
- handling unavailability;
- mapping external errors;
- currency and value validation.
First API with Flask.
Possible features:
/airports
/flights
/routes
/search
The lab will cover:
- application factory;
- blueprints;
- configuration;
- serialization;
- error handling;
- differences between Flask and FastAPI.
First API using JavaScript and Node.js.
Suggested structure:
src/
├── controllers/
├── routes/
├── services/
├── middlewares/
├── models/
└── app.js
Concepts:
- routes;
- controllers;
- middleware;
- validation;
- centralized error handling;
- asynchronous programming.
First API using TypeScript and NestJS.
Features:
/patients
/doctors
/specialties
/appointments
The lab will demonstrate:
- modules;
- controllers;
- providers;
- services;
- DTOs;
- decorators;
- dependency injection;
- validation with TypeScript.
The project is educational and will not handle real medical data.
Package APIs into containers and automate their basic quality and testing workflows.
| Status | Lab | Level | API Project | Business Scenario | Main Concepts | Technologies | Skills Demonstrated |
|---|---|---|---|---|---|---|---|
| ⬜ | 14 | 🔴 | File Storage API | Document Management Service | File Upload, Validation, Download, Metadata | Python, FastAPI | File Handling, Content Validation |
| ⬜ | 15 | 🔴 | Notification API | Notification Service | Environment Variables, Dockerfile, Containers | JavaScript, Express, Docker | API Containerization |
| ⬜ | 16 | 🔴 | Payment Simulation API | Payment Sandbox | Automated Tests, Linting, CI Workflow | GitHub Actions, Postman, Newman | Continuous Integration |
It will allow uploading, querying, and downloading files.
Possible endpoints:
POST /files
GET /files
GET /files/{file_id}
GET /files/{file_id}/download
DELETE /files/{file_id}Validations:
- allowed extension;
- MIME type;
- maximum size;
- safe name;
- non-existent file;
- metadata.
Express API to simulate sending notifications.
Possible types:
email
sms
push
There will be no need to use paid providers. Sending can be simulated and logged locally.
The objectives are:
- configuration via environment variables;
- creation of a
Dockerfile; - image creation;
- container execution;
- port exposure;
- optional log persistence.
An educational sandbox for simulating payment operations without processing real money.
Supported operations:
POST /payments
GET /payments/{payment_id}
POST /payments/{payment_id}/confirm
POST /payments/{payment_id}/cancel
POST /payments/{payment_id}/refundThe pipeline will be able to execute:
Install Dependencies
↓
Lint
↓
Start API
↓
Run Newman Tests
↓
Publish Test Result
Consolidate API design, development, persistence, authentication and testing in complete portfolio projects.
| Status | Lab | Level | API Project | Business Scenario | Main Concepts | Technologies | Skills Demonstrated |
|---|---|---|---|---|---|---|---|
| ⬜ | 17 | 🟣 | IoT Telemetry API | Sensor Data Collection | Data Ingestion, Timestamps, Filtering, Aggregation | Python, FastAPI, SQLite | Telemetry API Design |
| ⬜ | 18 | 🟣 | Service Desk API | IT Support Management | Authentication, CRUD, Roles, Persistence, Testing | FastAPI or NestJS, Database, Postman | Complete API Lifecycle |
You will receive simulated sensor data.
Payload example:
{
"device_id": "sensor-001",
"temperature": 24.7,
"humidity": 71.2,
"timestamp": "2026-07-23T18:30:00Z"
}Possible endpoints:
POST /telemetry
GET /telemetry
GET /telemetry/{device_id}
GET /telemetry/{device_id}/latest
GET /telemetry/{device_id}/summaryConcepts:
- timestamps;
- data ingestion;
- time-range filters;
- grouping;
- calculation of minimum, maximum, and average;
- device validation;
- contract documentation.
This will be the final and most comprehensive project in the repository.
Features:
/users
/auth
/tickets
/categories
/priorities
/statuses
/comments
Possible profiles:
Requester
Technician
Administrator
Features:
- user creation;
- login;
- ticket creation;
- technician assignment;
- priority modification;
- status updates;
- comments;
- basic history;
- filters;
- pagination;
- role-based authorization;
- OpenAPI documentation;
- Postman collection;
- tests with Newman;
- well-documented local execution.
API Fundamentals
│
▼
Professional API Development
│
▼
API Testing with Postman
│
▼
Multi-Framework Development
│
▼
API Delivery Basics
│
▼
Consolidated API Projects
Every lab follows these principles:
- Practical and business-oriented API development;
- Clear REST and HTTP semantics;
- Consistent request and response contracts;
- Input validation and standardized error handling;
- OpenAPI documentation;
- Postman-based API testing;
- Progressive use of Python, JavaScript and TypeScript;
- Simple and reproducible local execution;
- Clear technical documentation;
- Portfolio-oriented delivery.
- Python
- JavaScript
- TypeScript
- FastAPI
- Flask
- Express
- NestJS
- HTTP
- REST
- JSON
- OpenAPI
- Swagger UI
- Postman
- Newman
- JavaScript Test Scripts
- SQLite
- PostgreSQL
- SQLAlchemy
- Docker
- GitHub Actions
This structure should evolve as the labs and tutorials are developed.
api-engineering-lab/
│
├── README.md
├── LICENSE
│
├── labs/
│ ├── 01-weather-api/
│ ├── 02-library-management-api/
│ ├── 03-inventory-api/
│ ├── 04-authentication-api/
│ ├── 05-blog-platform-api/
│ ├── 06-ecommerce-catalog-api/
│ ├── 07-movie-catalog-api/
│ ├── 08-task-management-api/
│ ├── 09-hotel-booking-api/
│ ├── 10-currency-exchange-api/
│ ├── 11-flight-search-api/
│ ├── 12-student-management-api/
│ ├── 13-healthcare-appointment-api/
│ ├── 14-file-storage-api/
│ ├── 15-notification-api/
│ ├── 16-payment-simulation-api/
│ ├── 17-iot-telemetry-api/
│ └── 18-service-desk-api/
| └── script/
│
├── postman/
│ ├── collections/
│ └── environments/
│
├── docs/
│ ├── api-fundamentals/
│ └── images/
│
└── .github/
└── workflows/


