The TMSL to TMDL Switch (Part 2): I Did My Homework!
A while ago, I wrote “Why Microsoft, WHY!!!!?” about Fabric’s shift from TMSL (JSON) to TMDL (YAML-like). That sparked debate—some said both are API-supported, and reports stay JSON. So, I did my homework! This follow-up confirms what’s true, what’s not, and what I uncovered.

The Investigation Continues...
A little while ago, I wrote “Why Microsoft, WHY!!!!?”, where I expressed my frustration about Microsoft Fabric’s decision to move Semantic Model definitions from TMSL (JSON-based) to TMDL (YAML-like-based). That post sparked a lot of discussions—some people agreed, others pointed out that both TMSL and TMDL are supported via the API and that report definitions are JSON-based anyway.
"Fabric APIs support both formats (create/update/get), the Get API even allows you to retrieve the semantic model definition as TMSL by using the ‘format’ parameter. " https://www.linkedin.com/in/ruiromano/
So, I decided to do the homework 😅 , try it and share with you guys!
This article is my follow-up—confirming what’s true, what’s not exactly true, and what I uncovered about report formats and API behaviors along the way.
A Few Precisions to Begin With...
Before diving in, let’s clarify two key points so we’re all on the same page:
1️⃣ TMSL vs. TMDL Applies Only to Semantic Models (Not Reports!)
One of the biggest misunderstandings in my last article was that people assumed I was talking about Power BI Reports. I wasn’t.
- The TMSL to TMDL switch applies only to Semantic Models.
- Report definitions remain JSON-based using the Power BI report (PBIR) format
- Currently in preview a Power BI enhanced report format (PBIR), so the current version will soon be known as PBIR-legacy
- TMDL is not technically YAML, is uses grammar similar to YAML, that is, relies on indentation to define parent-child relationships.
So, if you were worried about reports moving to YAML-like syntax—don’t be. That’s not happening (to the best of my knowledge and hope it stays that way 😬🤞)
What I Found in My Investigation
Now that we’ve set the record straight, let’s talk about what I tested, what worked, and what didn’t.
Watch the demo
For a more detailed explanation and a demo of the functionality described in this article, you can watch the full process in action in my YouTube video...
1. The API Does Support Both TMSL & TMDL for Semantic Models
Yes—when I tested Microsoft Fabric’s API, I was able to successfully retrieve a Semantic Model definition in both TMSL and TMDL formats by specifying the format
parameter.
🔹 TMSL (JSON-based) ✅ Works!
🔹 TMDL (YAML-like) ✅ Works!
So, if you’re working with Semantic Models, you have options.

2. Reports Are a Different Story (PBIR vs. PBIR-Legacy)
Since many people brought up report definitions, I decided to test how the Fabric API handles them.
Here’s what I found:
🔹 PBIR-Legacy is the current report format in Fabric.
🔹 PBIR (Power BI Enhanced Report Format) is in preview but not fully supported in the API yet.
🔹 If you try to fetch a report using format=PBIR
, you get an error:
Error: Report is using format '[CurrentFormat]' and cannot be converted to '[APIFormat]' using the API.
In other words, reports in Fabric still use PBIR-Legacy by default, and PBIR support in the API is not yet functional.
This means Microsoft is preparing to transition to PBIR, but the shift hasn’t fully happened yet.
Call to action
I’ve done my homework, and now it’s your turn! 🎯
If you’re working with Microsoft Fabric, Semantic Models, or report definitions, this is your chance to test the API behavior for yourself and see how it fits into your automation workflows.
📌 I’ve published the PowerShell scripts that make it super easy to:
✅ Extract item definitions (Semantic Models & Reports)
✅ Fetch both TMSL & TMDL formats where applicable
✅ Handle the API’s quirks and limitations