API Migration and Consolidation with TypeSpec

Stockholm, October 14th 2025

model Speaker { 
role: string; ghUsername: string; bluesky: string; websites: string[]; }

 

const speaker: Speaker = {    
	role: "Developer Tools and AI @Microsoft | OSS",
    ghUsername: "@anfibiacreativa",
    bluesky: "@anfibiacreativa.bsky.social",
    websites: ["https://microfrontend.dev",
    "https://webfragments.dev"],
 };
LEGACY SYSTEM
  • Tech Debt
  • Outdated dependencies
  • Tightly coupled logic

YOU ARE HERE (SORRY)

Simple Object Access Protocol (~1998).

used by XML.

SOAP

RPC

Remote Procedural Calls. Remote subroutines (XML-RPC usa XML) (~1980's)

WebSocket

Full duplex TCP enabling streaming. (~2008)

GraphQL

Open Source data query and manipulation language for API's first developed by Facebook in 2012.

RESTful

Representational State Transfer architecture pattern. (~2000)

Migra(ine)tion

Migra       tion

Reducing Patterns

Enabling versioning

Facilitating spec authoring

Consolidating protocols

Introducing diagnostics

API Migration Goals and Challenges

Enabling extensibility

Breaking down silos

?

App

UI Design

microfrontend.dev - @anfibiacreativa

API FIRST

Consolidation anchor

App

UI/UX Design

microfrontend.dev - @anfibiacreativa

API FIRST

SINGLE SOURCE OF TRUTH

See Playground

Teams maintain multiple OpenAPI files

Each service defines overlapping schemas

Manual diffing, client regeneration and sync'ing

Model ONCE in .tsp files

Auto-generate outputs for all consumers

Define a centralized and unique governance with reusable libs

@service({ title: "Orders API" })
namespace Orders;

model Order {
  id: string;
  total: float32;
}

@get op getOrder(id: string): Order;

M

Static files

C

P

Static files

M

AI

C

P

AI

SDK Generator

Gateway

Docs

MCP Server

(wraps existing API)

Model

Alive, versioned, queryable.

Demo Time

All images: Unsplash or Flaticon.com.

Tack själv!

@anfibiacreativa

microfrontend.dev

webfragments.dev

typespec.io

typespec-mcp

@typespec

demo

API Migration with TypeSpec

By Natalia Venditto

API Migration with TypeSpec

  • 21