Skip to content

Latest commit

Β 

History

231 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

API Engineering Lab β€” Learning Roadmap

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.

Overall Progress

Completed: 1 / 18 Labs

Status Legend

  • ⬜ Planned
  • 🟨 In Progress
  • βœ… Completed

Level Legend

  • 🟒 Fundamentals
  • 🟑 Intermediate
  • 🟠 Testing
  • πŸ”΅ Multi-Framework
  • πŸ”΄ Delivery
  • 🟣 Consolidated Project

🟒 Phase 1 β€” API Fundamentals

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

Planned Content

Lab 01 β€” Weather API

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

Lab 02 β€” Library Management API

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}

Lab 03 β€” Inventory API

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.

🟑 Phase 2 β€” Professional API Development

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

Planned content

Lab 04 β€” Authentication API

Will allow creating users, logging in, and accessing protected routes.

Possible endpoints:

POST /auth/register
POST /auth/login
GET  /auth/me
GET  /admin/users

Key concepts:

  • secure password storage;
  • password hashing;
  • JWT generation;
  • Bearer Token;
  • authenticated user;
  • basic role-based permissions.

Lab 05 β€” Blog Platform API

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
/categories

Possible relationships:

User 1 ─── N Posts
Post 1 ─── N Comments
Category N ─── N Posts

Lab 06 β€” E-commerce Catalog API

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=notebook

🟠 Phase 3 β€” API Testing with Postman

Create 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

Planned content

Lab 07 β€” Movie Catalog API

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.

Lab 08 β€” Task Management API

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.

Lab 09 β€” Hotel Booking API

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.


πŸ”΅ Phase 4 β€” Multi-Framework API Development

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

Planned content

Lab 10 β€” Currency Exchange API

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=100

Concepts:

  • external API consumption;
  • asynchronous HTTP client;
  • timeouts;
  • handling unavailability;
  • mapping external errors;
  • currency and value validation.

Lab 11 β€” Flight Search API

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.

Lab 12 β€” Student Management API

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.

Lab 13 β€” Healthcare Appointment API

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.


πŸ”΄ Phase 5 β€” API Delivery Basics

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

Planned content

Lab 14 β€” File Storage API

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.

Lab 15 β€” Notification API

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.

Lab 16 β€” Payment Simulation API

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}/refund

The pipeline will be able to execute:

Install Dependencies
        ↓
Lint
        ↓
Start API
        ↓
Run Newman Tests
        ↓
Publish Test Result

🟣 Phase 6 β€” Consolidated API Projects

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

Planned content

Lab 17 β€” IoT Telemetry API

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}/summary

Concepts:

  • timestamps;
  • data ingestion;
  • time-range filters;
  • grouping;
  • calculation of minimum, maximum, and average;
  • device validation;
  • contract documentation.

Lab 18 β€” Service Desk API

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.

Learning Journey

API Fundamentals
        β”‚
        β–Ό
Professional API Development
        β”‚
        β–Ό
API Testing with Postman
        β”‚
        β–Ό
Multi-Framework Development
        β”‚
        β–Ό
API Delivery Basics
        β”‚
        β–Ό
Consolidated API Projects


Core Principles

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.

Main Technologies

Languages

  • Python
  • JavaScript
  • TypeScript

Frameworks

  • FastAPI
  • Flask
  • Express
  • NestJS

API Design and Documentation

  • HTTP
  • REST
  • JSON
  • OpenAPI
  • Swagger UI

Testing

  • Postman
  • Newman
  • JavaScript Test Scripts

Data and Persistence

  • SQLite
  • PostgreSQL
  • SQLAlchemy

Delivery

  • Docker
  • GitHub Actions

Initial directory structure

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/

Overview by Infographics:

English

EN

PortuguΓͺs (Brasil)

PT-BR

EspaΓ±ol (EspaΓ±a)

ES


πŸ“ˆ Repository Metrics

Flag Counter

About

Production-oriented API Engineering Lab using FastAPI, OpenAPI, JWT Authentication, Testing, Observability, Performance Testing and Integration Patterns.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages