API Documentation
Comprehensive guide to accessing Microsoft Fabric roadmap data through our RSS and JSON endpoints.
GET RSS Feed
Endpoints: /rss and /rss.xml
Description: Returns an RSS 2.0 feed of recently modified releases with optional filtering.
Parameters
product_name- Filter by exact product name (case-sensitive)release_type- Filter by exact release typerelease_status- Filter by exact release statuslimit- Maximum number of items (1-25, default: 25)
Examples
RSS: Administration, Governance and Security
/rss?product_name=Administration%2C+Governance+and+Security&limit=10RSS: Cosmos DB (NoSQL)
/rss?product_name=Cosmos+DB+%28NoSQL%29&limit=10RSS: Data Engineering
/rss?product_name=Data+Engineering&limit=10RSS: Data Factory
/rss?product_name=Data+Factory&limit=10RSS: Data Science
/rss?product_name=Data+Science&limit=10RSS: General availability
/rss?release_type=General+availability&limit=10RSS: Public preview
/rss?release_type=Public+preview&limit=10RSS: Planned
/rss?release_status=Planned&limit=10RSS: Shipped
/rss?release_status=Shipped&limit=10GET JSON API
Endpoint: /api/releases
Description: Returns a paginated envelope of releases. Sorted by last_modified (desc) by default, or by release_date (desc) when specified via the sort parameter. Supports filtering, full-text style partial search (simple ILIKE %q%) and page-based navigation. All collection responses are wrapped; a single-item lookup via release_item_id returns just the object (legacy compatibility) without the envelope.
Parameters
product_name- Exact match on product namerelease_type- Exact match on release typerelease_status- Exact match on release statusmodified_within_days- Items modified within last N days (1–30)q- Case-insensitive substring search acrossfeature_name,feature_description,product_name. When Azure OpenAI embeddings are configured,quses vector (semantic) search instead.sort- Sort order:last_modified(default) orrelease_datepage- 1-based page number (default 1)page_size- Items per page (default 50, max 200, min 1)release_item_id- If provided, bypasses pagination and returns a single release objectinclude_inactive- Include releases removed from the roadmap (trueor1). Default: only active releases are returned.
Notes:
qtrimming applied; empty/whitespace-only search is ignored.- When
release_item_idis supplied, all other filter / paging parameters are ignored. - Stable, stateless pagination: combine your filters +
page/page_size; uselinks.nextuntil it becomesnull. - Returns
Linkresponse header withrel="next"/rel="prev"when applicable.
Examples
JSON: Administration, Governance and Security
/api/releases?product_name=Administration%2C+Governance+and+SecurityJSON: Cosmos DB (NoSQL)
/api/releases?product_name=Cosmos+DB+%28NoSQL%29JSON: Data Engineering
/api/releases?product_name=Data+EngineeringJSON: Data Factory
/api/releases?product_name=Data+FactoryJSON: Data Science
/api/releases?product_name=Data+ScienceJSON: General availability
/api/releases?release_type=General+availabilityJSON: Public preview
/api/releases?release_type=Public+previewJSON: Planned
/api/releases?release_status=PlannedJSON: Shipped
/api/releases?release_status=ShippedJSON: modified_within_days=7
/api/releases?modified_within_days=7JSON: modified_within_days=14
/api/releases?modified_within_days=14JSON: modified_within_days=30
/api/releases?modified_within_days=30Search (q)
/api/releases?q=lake&page_size=25Page 3 with filters
/api/releases?product_name=Power BI&release_status=GA&page=3&page_size=50Single Item
/api/releases?release_item_id=YOUR-ID-HEREResponse Format & Schemas
Collection responses (/api/releases without release_item_id) are wrapped in an envelope that includes pagination metadata and HATEOAS-style links.
Collection Envelope
{
"data": [
{
"release_item_id": "uuid",
"feature_name": "string",
"release_date": "YYYY-MM-DD|null",
"release_type": "string",
"release_status": "string",
"product_id": "uuid|null",
"product_name": "string",
"feature_description": "string|null",
"blog_title": "string|null",
"blog_url": "string|null",
"last_modified": "YYYY-MM-DD",
"active": true
}
// ... up to page_size items
],
"pagination": {
"page": 1,
"page_size": 50,
"total_items": 1234,
"total_pages": 25,
"has_next": true,
"has_prev": false,
"next_page": 2,
"prev_page": null
},
"links": {
"self": "/api/releases?product_name=Power%20BI&page=1&page_size=50",
"first": "/api/releases?product_name=Power%20BI&page=1&page_size=50",
"last": "/api/releases?product_name=Power%20BI&page=25&page_size=50",
"next": "/api/releases?product_name=Power%20BI&page=2&page_size=50",
"prev": null
}
}
Single Item (release_item_id)
{
"release_item_id": "uuid",
"feature_name": "string",
"release_date": "YYYY-MM-DD|null",
"release_type": "string",
"release_status": "string",
"product_id": "uuid|null",
"product_name": "string",
"feature_description": "string|null",
"blog_title": "string|null",
"blog_url": "string|null",
"last_modified": "YYYY-MM-DD",
"active": true
}
History Endpoint /api/releases/history/<release_item_id>
Returns the change history for a single release item, newest first. Each entry shows which fields changed. Possible change descriptions include field diffs (e.g. Release Date 2025-06-01 -> 2025-09-01), Roadmap Item Added, Removed from Roadmap, and Restored to Roadmap.
[
{
"changed_columns": "Removed from Roadmap",
"last_modified": "2026-03-20"
},
{
"changed_columns": "Release Status In Development -> Shipped",
"last_modified": "2026-02-15"
},
{
"changed_columns": "Roadmap Item Added",
"last_modified": "2025-01-12"
}
]
Changelog /api/changelog
Returns releases grouped by last_modified date with change annotations showing what was modified. Useful for building daily/weekly change reports.
Parameters
days- Look-back window in days (default: 30, max: 90)product_name- Filter by exact product namerelease_type- Filter by exact release typerelease_status- Filter by exact release statusinclude_inactive- Include removed items (trueor1, default: true)
{
"total_items": 48,
"days": [
{
"date": "2026-04-04",
"count": 5,
"items": [
{
"release_item_id": "uuid",
"feature_name": "string",
"product_name": "string",
"release_type": "string",
"release_status": "string",
"release_date": "YYYY-MM-DD|null",
"last_modified": "YYYY-MM-DD",
"active": true,
"changed_columns": [
"Release Date 2026-04-21 -> 2027-05-05"
]
}
]
}
]
}
Examples
Last 7 days
/api/changelog?days=7Power BI changes
/api/changelog?days=30&product_name=Power BIGA items only
/api/changelog?days=30&release_type=General availabilityFilter Options /api/filter-options
{
"product_names": ["Power BI", "Data Factory", ...],
"release_types": ["Public Preview", "GA", ...],
"release_statuses": ["In Development", "Launched", ...]
}
Email Subscription
POST /api/subscribe JSON body:
{
"email": "user@example.com",
"products": ["Power BI"], // optional array
"types": ["GA"], // optional array
"statuses": ["Launched"] // optional array
}
Verification link sent if new/unverified. Other related endpoints:
GET /api/verify-email?token=...(JSON result)GET /verify-email?token=...(HTML page)GET /unsubscribe?token=...(HTML page)
HTTP Caching
All JSON & RSS endpoints emit:
- ETag - Weak hash for conditional GET (send
If-None-Matchto receive 304) - Last-Modified - Based on build time (collection) or entity timestamp
- Cache-Control -
public, max-age=14400, stale-while-revalidate=3600(4h fresh, 1h serve-stale)
Caching is handled by Azure Front Door at the CDN edge. The server sets appropriate HTTP cache headers on responses.
Caching & Performance
Summary of caching strategy:
- CDN Cache (Azure Front Door): Responses cached at edge based on Cache-Control headers
- Cache-Control:
public, max-age=14400, stale-while-revalidate=3600(4h fresh, 1h stale) - ETag: Weak content hash enables conditional GET (304 Not Modified)
- Last-Modified: Build timestamp for conditional revalidation