From 3fe23d897cac0132d584b5ab275e5e7f2a6d9444 Mon Sep 17 00:00:00 2001
From: Simon Kurtz <simonkurtz@microsoft.com>
Date: Fri, 30 May 2025 09:25:04 -0400
Subject: [PATCH 1/6] Add icons and format

---
 samples/authX/create.ipynb | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/samples/authX/create.ipynb b/samples/authX/create.ipynb
index 33d3158a..d02b0edd 100644
--- a/samples/authX/create.ipynb
+++ b/samples/authX/create.ipynb
@@ -6,20 +6,20 @@
    "source": [
     "# Samples: AuthX - Authentication & Authorization\n",
     "\n",
-    "[BRIEF SAMPLE DESCRIPTION]\n",
+    "Sets up a simple authentication (authN) and authorization (authZ) combination for role-based access control (RBAC) to a mock _Employees_ API and its operations.\n",
     "\n",
     "⚙️ **Supported infrastructures**: All infrastructures\n",
     "\n",
     "⌚ **Expected *Run All* runtime (excl. infrastructure prerequisite): ~2-3 minutes**\n",
     "\n",
-    "## Objectives\n",
+    "## 🎯 Objectives\n",
     "\n",
     "1. Understand how API Management supports OAuth 2.0 authentication (authN) with JSON Web Tokens (JWT).\n",
     "1. Learn how authorization (authZ) can be accomplished based on JWT claims.\n",
     "1. Configure authN and authZ at various levels in the API Management hierarchy.\n",
     "1. Use external secrets in policies.\n",
     "\n",
-    "## Scenario\n",
+    "## 📝 Scenario\n",
     "\n",
     "This sample combines _authentication (authN)_ and _authorization (authZ)_ into _authX_. This scenario focuses on a Human Resources API that requires privileged role-based access to GET and to POST data. This is simplistic but shows the combination of authN and authZ.\n",
     "\n",
@@ -30,7 +30,7 @@
     "\n",
     "Both personas are part of an HR_Members group and may access the HR API Management Product. Subsequent access to the APIs and their operations must be granular.\n",
     "\n",
-    "### Notes\n",
+    "### 💡 Notes\n",
     "\n",
     "Many organizations require 100% authentication for their APIs. While that is prudent and typically done at the global _All APIs_ level, we refrain from doing so here as to not impact other samples. Instead, we focus on authentication at the API Management API and API operation levels.\n",
     "\n",

From 8a0830409311963bbb88845d4f3b1f601b56c032 Mon Sep 17 00:00:00 2001
From: Simon Kurtz <simonkurtz@microsoft.com>
Date: Fri, 30 May 2025 09:26:02 -0400
Subject: [PATCH 2/6] Further format

---
 samples/authX/create.ipynb | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/samples/authX/create.ipynb b/samples/authX/create.ipynb
index d02b0edd..fcba22b6 100644
--- a/samples/authX/create.ipynb
+++ b/samples/authX/create.ipynb
@@ -34,7 +34,7 @@
     "\n",
     "Many organizations require 100% authentication for their APIs. While that is prudent and typically done at the global _All APIs_ level, we refrain from doing so here as to not impact other samples. Instead, we focus on authentication at the API Management API and API operation levels.\n",
     "\n",
-    "## Lab Components\n",
+    "## 🧩 Lab Components\n",
     "\n",
     "While OAuth 2.0 includes an identity provider (IDP), for sake of the sample, we can remove the complexity of including real identities. It is sufficient to use mock JWTs that we can \"authenticate\" by way of a signing key. This is a valid, albeit not the default method for authentication. \n",
     "\n",
@@ -42,9 +42,11 @@
     "\n",
     "Furthermore, secrets would ideally be kept in a secret store such as Azure Key Vault and be accessed via API Management's managed identity. Adding a Key Vault to our architecture is a stretch goal that provides value but is not immediately necessary to showcase the authX sample.\n",
     "\n",
-    "JSON Web Tokens are defined in [RFC 7519](https://www.rfc-editor.org/rfc/rfc7519). Two websites to use with JWTs are [Okta's](https://jwt.io/) and [Microsoft's](https://jwt.ms/). Okta's may be preferential due to its features.\n",
+    "JSON Web Tokens are defined in RFC 7519. Okta's JWT website is great to experiment with tokens. Microsoft provides one as well, but it is not as feature-rich.\n",
     "\n",
-    "## Configuration\n",
+    "🔗 [RFC 7519 - JWT](https://www.rfc-editor.org/rfc/rfc7519) | [jwt.io](https://jwt.io/) | [jwt.ms](https://jwt.ms/)\n",
+    "\n",
+    "## ⚙️ Configuration\n",
     "\n",
     "1. Decide which of the [Infrastructure Architectures](../../README.md#infrastructure-architectures) you wish to use.\n",
     "    1. If the infrastructure _does not_ yet exist, navigate to the desired [infrastructure](../../infrastructure/) folder and follow its README.md.\n",
@@ -55,13 +57,11 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Initialize notebook variables\n",
+    "### 🛠️ 1. Initialize notebook variables\n",
     "\n",
     "Configures everything that's needed for deployment. \n",
     "\n",
-    "[ADD ANY SPECIAL INSTRUCTIONS]\n",
-    "\n",
-    "**Modify entries under _1) User-defined parameters_ and _3) Define the APIs and their operations and policies_**."
+    "👉 **Modify entries under _1) User-defined parameters_ and _3) Define the APIs and their operations and policies_**."
    ]
   },
   {
@@ -131,7 +131,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Create deployment using Bicep\n",
+    "### 🚀 2. Create deployment using Bicep\n",
     "\n",
     "Creates the bicep deployment into the previously-specified resource group. A bicep parameters file will be created prior to execution."
    ]
@@ -172,7 +172,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Verify API Request Success\n",
+    "### ✅ 3. Verify API Request Success\n",
     "\n",
     "Assert that the deployment was successful by making simple calls to APIM. \n",
     "\n",

From 01a6d8dcab28f69c21f155f77fab71fb3e3152be Mon Sep 17 00:00:00 2001
From: Simon Kurtz <simonkurtz@microsoft.com>
Date: Fri, 30 May 2025 12:16:21 -0400
Subject: [PATCH 3/6] Add icons and numbering to headers

---
 infrastructure/afd-apim/README.md       |  6 +++---
 infrastructure/afd-apim/create.ipynb    | 15 +++++++--------
 infrastructure/apim-aca/README.md       |  6 +++---
 infrastructure/apim-aca/create.ipynb    |  9 ++++-----
 infrastructure/simple-apim/README.md    |  6 +++---
 infrastructure/simple-apim/create.ipynb |  9 ++++-----
 samples/_TEMPLATE/create.ipynb          | 14 +++++++-------
 samples/general/create.ipynb            |  4 ++--
 samples/load-balancing/create.ipynb     | 12 ++++++------
 9 files changed, 39 insertions(+), 42 deletions(-)

diff --git a/infrastructure/afd-apim/README.md b/infrastructure/afd-apim/README.md
index 547f67c3..95a27b61 100644
--- a/infrastructure/afd-apim/README.md
+++ b/infrastructure/afd-apim/README.md
@@ -4,17 +4,17 @@ Secure architecture that takes all traffic off the public Internet once Azure Fr
 
 <img src="./Azure Front Door, API Management & Container Apps Architecture.svg" alt="Diagram showing Azure Front Door, API Management, and Container Apps architecture. Azure Front Door routes traffic to API Management, which then routes to Container Apps. Telemetry is sent to Azure Monitor." title="Azure Front Door, API Management & Container Apps Architecture" width="1000" />
 
-## Objectives
+## 🎯 Objectives
 
 1. Provide a secure pathway to API Management via a private link from Front Door
 1. Maintain private networking by integrating API Management with a VNet to communicate with Azure Container Apps. (This can also be achieved via a private link there)
 1. Empower users to use Azure Container Apps, if desired
 1. Enable observability by sending telemetry to Azure Monitor
 
-## Configuration
+## ⚙️ Configuration
 
 Adjust the `user-defined parameters` in this lab's Jupyter Notebook's [Initialize notebook variables](./create.ipynb#initialize-notebook-variables) section.
 
-## Execution
+## ▶️ Execution
 
 1. Execute this lab's [Jupyter Notebook](./create.ipynb) step-by-step or via _Run All_.
\ No newline at end of file
diff --git a/infrastructure/afd-apim/create.ipynb b/infrastructure/afd-apim/create.ipynb
index 4675edf3..1030b707 100644
--- a/infrastructure/afd-apim/create.ipynb
+++ b/infrastructure/afd-apim/create.ipynb
@@ -15,7 +15,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Initialize notebook variables\n",
+    "### 🛠️ 1. Initialize notebook variables\n",
     "\n",
     "Configures everything that's needed for deployment. \n",
     "\n",
@@ -83,7 +83,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Create deployment using Bicep\n",
+    "### 🚀 2. Create deployment using Bicep\n",
     "\n",
     "Creates the bicep deployment into the previously-specified resource group. A bicep parameters file will be created prior to execution."
    ]
@@ -124,7 +124,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Approve Front Door private link connection to APIM\n",
+    "### 🔗 3. Approve Front Door private link connection to APIM\n",
     "\n",
     "In the deployed Bicep template, Azure Front Door will establish a private link connection to the API Management service. This connection should be approved. Run the following command to approve the connection."
    ]
@@ -170,7 +170,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Verify API Request Success via API Management\n",
+    "### ✅ 4. Verify API Request Success via API Management\n",
     "\n",
     "As we have not yet disabled public access to APIM, this request should succeed with a **200**."
    ]
@@ -196,7 +196,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Disabling API Management public network access\n",
+    "### 🔒 5. Disabling API Management public network access\n",
     "\n",
     "The initial `APIM` service deployment above cannot disable public network access. It must be disabled subsequently below."
    ]
@@ -231,7 +231,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Verify API Request Success via Azure Front Door & Failure with API Management\n",
+    "### ✅ 6. Verify API Request Success via Azure Front Door & Failure with API Management\n",
     "\n",
     "At this time only requests through Front Door should be successful and return a **200**. Requests to APIM that worked previously should result in a **403**."
    ]
@@ -269,8 +269,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "<a id='clean'></a>\n",
-    "### Clean up resources\n",
+    "### 🗑️ Clean up resources\n",
     "\n",
     "When you're finished experimenting, it's advisable to remove all associated resources from Azure to avoid unnecessary cost.\n",
     "Use the [clean-up notebook](clean-up.ipynb) for that."
diff --git a/infrastructure/apim-aca/README.md b/infrastructure/apim-aca/README.md
index 862b705f..4f2b92ae 100644
--- a/infrastructure/apim-aca/README.md
+++ b/infrastructure/apim-aca/README.md
@@ -4,16 +4,16 @@ This architecture secures API traffic by routing requests through Azure API Mana
 
 <img src="./API Management & Container Apps Architecture.svg" alt="Diagram showing Azure API Management and Container Apps architecture. API Management routes traffic to Container Apps. Telemetry is sent to Azure Monitor." title="API Management & Container Apps Architecture" width="800" />
 
-## Objectives
+## 🎯 Objectives
 
 1. Provide a secure API gateway using Azure API Management
 1. Integrate API Management with Azure Container Apps for backend services
 1. Enable observability by sending telemetry to Azure Monitor
 
-## Configuration
+## ⚙️ Configuration
 
 Adjust the `user-defined parameters` in this lab's Jupyter Notebook's [Initialize notebook variables](./create.ipynb#initialize-notebook-variables) section.
 
-## Execution
+## ▶️ Execution
 
 1. Execute this lab's [Jupyter Notebook](./create.ipynb) step-by-step or via _Run All_.
\ No newline at end of file
diff --git a/infrastructure/apim-aca/create.ipynb b/infrastructure/apim-aca/create.ipynb
index 21f8216a..6ee828a0 100644
--- a/infrastructure/apim-aca/create.ipynb
+++ b/infrastructure/apim-aca/create.ipynb
@@ -17,7 +17,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Initialize notebook variables\n",
+    "### 🛠️ 1. Initialize notebook variables\n",
     "\n",
     "Configures everything that's needed for deployment. \n",
     "\n",
@@ -76,7 +76,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Create deployment using Bicep\n",
+    "### 🚀 2. Create deployment using Bicep\n",
     "\n",
     "Creates the bicep deployment into the previously-specified resource group. A bicep parameters file will be created prior to execution."
    ]
@@ -114,7 +114,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Verify API Request Success\n",
+    "### ✅ 3. Verify API Request Success\n",
     "\n",
     "Assert that the deployment was successful by making simple calls to APIM. "
    ]
@@ -141,8 +141,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "<a id='clean'></a>\n",
-    "### Clean up resources\n",
+    "### 🗑️ Clean up resources\n",
     "\n",
     "When you're finished experimenting, it's advisable to remove all associated resources from Azure to avoid unnecessary cost.\n",
     "Use the [clean-up notebook](clean-up.ipynb) for that."
diff --git a/infrastructure/simple-apim/README.md b/infrastructure/simple-apim/README.md
index e21dbd00..09419c43 100644
--- a/infrastructure/simple-apim/README.md
+++ b/infrastructure/simple-apim/README.md
@@ -4,15 +4,15 @@ This architecture provides a basic API gateway using Azure API Management, suita
 
 <img src="./Simple API Management Architecture.svg" alt="Diagram showing a simple Azure API Management architecture. API Management acts as a gateway for API consumers. Telemetry is sent to Azure Monitor." title="Simple API Management Architecture" width="800" />
 
-## Objectives
+## 🎯 Objectives
 
 1. Provide the simplest Azure API Management infrastructure with a public ingress to allow for easy testing
 1. Enable observability by sending telemetry to Azure Monitor
 
-## Configuration
+## ⚙️ Configuration
 
 Adjust the `user-defined parameters` in this lab's Jupyter Notebook's [Initialize notebook variables](./create.ipynb#initialize-notebook-variables) section.
 
-## Execution
+## ▶️ Execution
 
 1. Execute this lab's [Jupyter Notebook](./create.ipynb) step-by-step or via _Run All_.
\ No newline at end of file
diff --git a/infrastructure/simple-apim/create.ipynb b/infrastructure/simple-apim/create.ipynb
index 80acba0f..d1e7c421 100644
--- a/infrastructure/simple-apim/create.ipynb
+++ b/infrastructure/simple-apim/create.ipynb
@@ -15,7 +15,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Initialize notebook variables\n",
+    "### 🛠️ 1. Initialize notebook variables\n",
     "\n",
     "Configures everything that's needed for deployment. \n",
     "\n",
@@ -59,7 +59,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Create deployment using Bicep\n",
+    "### 🚀 2. Create deployment using Bicep\n",
     "\n",
     "Creates the bicep deployment into the previously-specified resource group. A bicep parameters file will be created prior to execution."
    ]
@@ -95,7 +95,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Verify API Request Success\n",
+    "### ✅ 3. Verify API Request Success\n",
     "\n",
     "Assert that the deployment was successful by making simple calls to APIM. "
    ]
@@ -119,8 +119,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "<a id='clean'></a>\n",
-    "### Clean up resources\n",
+    "### 🗑️ Clean up resources\n",
     "\n",
     "When you're finished experimenting, it's advisable to remove all associated resources from Azure to avoid unnecessary cost.\n",
     "Use the [clean-up notebook](clean-up.ipynb) for that."
diff --git a/samples/_TEMPLATE/create.ipynb b/samples/_TEMPLATE/create.ipynb
index 83057bec..2d3d6019 100644
--- a/samples/_TEMPLATE/create.ipynb
+++ b/samples/_TEMPLATE/create.ipynb
@@ -12,21 +12,21 @@
     "\n",
     "⌚ **Expected *Run All* runtime (excl. infrastructure prerequisite): ~[NOTEBOOK RUNTIME] minute**\n",
     "\n",
-    "## Objectives\n",
+    "## 🎯 Objectives\n",
     "\n",
     "1. [LEARNING / EXPERIMENTATION OBJECTIVE 1]\n",
     "1. [LEARNING / EXPERIMENTATION OBJECTIVE 2]\n",
     "1. ...\n",
     "\n",
-    "## Scenario\n",
+    "## 📝 Scenario\n",
     "\n",
     "[IF THE SAMPLE IS DEMONSTRATED THROUGH A USE CASE OR SCENARIO, PLEASE DETAIL IT HERE. OTHERWISE, DELETE THIS SECTION]\n",
     "\n",
-    "## Lab Components\n",
+    "## 🧩 Lab Components\n",
     "\n",
     "[DESCRIBE IN MORE DETAIL WHAT THIS LAB SETS UP AND HOW THIS BENEFITS THE LEARNER/USER.]\n",
     "\n",
-    "## Configuration\n",
+    "## ⚙️ Configuration\n",
     "\n",
     "1. Decide which of the [Infrastructure Architectures](../../README.md#infrastructure-architectures) you wish to use.\n",
     "    1. If the infrastructure _does not_ yet exist, navigate to the desired [infrastructure](../../infrastructure/) folder and follow its README.md.\n",
@@ -37,7 +37,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Initialize notebook variables\n",
+    "### 🛠️ 1. Initialize notebook variables\n",
     "\n",
     "Configures everything that's needed for deployment. \n",
     "\n",
@@ -88,7 +88,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Create deployment using Bicep\n",
+    "### 🚀 2. Create deployment using Bicep\n",
     "\n",
     "Creates the bicep deployment into the previously-specified resource group. A bicep parameters file will be created prior to execution."
    ]
@@ -128,7 +128,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Verify API Request Success\n",
+    "### ✅ 3. Verify API Request Success\n",
     "\n",
     "Assert that the deployment was successful by making simple calls to APIM. \n",
     "\n",
diff --git a/samples/general/create.ipynb b/samples/general/create.ipynb
index cd9b3af6..d5fdf03b 100644
--- a/samples/general/create.ipynb
+++ b/samples/general/create.ipynb
@@ -12,13 +12,13 @@
     "\n",
     "⌚ **Expected *Run All* runtime (excl. infrastructure prerequisite): ~1 minute**\n",
     "\n",
-    "## Objectives\n",
+    "## 🎯 Objectives\n",
     "\n",
     "1. Experience a variety of policies in any of the infrastructure architectures. You may see several examples from our [APIM policy snippets repo](https://github.com/Azure/api-management-policy-snippets).\n",
     "1. Become proficient with how policies operate.\n",
     "1. Gain confidence in setting up and configuring policies appropriately.\n",
     "\n",
-    "## Configuration\n",
+    "## ⚙️ Configuration\n",
     "\n",
     "1. Decide which of the [Infrastructure Architectures](../../README.md#infrastructure-architectures) you wish to use.\n",
     "    1. If the infrastructure _does not_ yet exist, navigate to the desired [infrastructure](../../infrastructure/) folder and follow its README.md.\n",
diff --git a/samples/load-balancing/create.ipynb b/samples/load-balancing/create.ipynb
index d0f98ebd..0757d7c8 100644
--- a/samples/load-balancing/create.ipynb
+++ b/samples/load-balancing/create.ipynb
@@ -12,13 +12,13 @@
     "\n",
     "⌚ **Expected *Run All* runtime (excl. infrastructure prerequisite): ~3 minutes**\n",
     "\n",
-    "## Objectives\n",
+    "## 🎯 Objectives\n",
     "\n",
     "1. Understand how backends can be configured to balance load in a prioritized, weighted manner.\n",
     "1. Learn how circuit breakers aid with load balancing.\n",
     "1. Configure how retries in API Management policies can result in more successful requests.\n",
     "\n",
-    "## Lab Components\n",
+    "## 🧩 Lab Components\n",
     "\n",
     "This lab integrates into an existing Azure Container Apps architecture and sets up the following:\n",
     "\n",
@@ -26,7 +26,7 @@
     "- Three separate backends are set up in APIM that each point to a different endpoint on this container app (e.g. /api/0, /api/1, etc.).\n",
     "- Four separate backend pool with varying load balancer setups are configured using these three backends.\n",
     "\n",
-    "## Configuration\n",
+    "## ⚙️ Configuration\n",
     "\n",
     "1. Decide which of the [Infrastructure Architectures](../../README.md#infrastructure-architectures) you wish to use.\n",
     "    1. If the infrastructure _does not_ yet exist, navigate to the desired [infrastructure](../../infrastructure/) folder and follow its README.md.\n",
@@ -37,7 +37,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Initialize notebook variables\n",
+    "### 🛠️ 1. Initialize notebook variables\n",
     "\n",
     "Configures everything that's needed for deployment. \n",
     "\n",
@@ -94,7 +94,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Create deployment using Bicep\n",
+    "### 🚀 2. Create deployment using Bicep\n",
     "\n",
     "Creates the bicep deployment into the previously-specified resource group. A bicep parameters file will be created prior to execution."
    ]
@@ -135,7 +135,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Verify API Request Success\n",
+    "### ✅ 3. Verify API Request Success\n",
     "\n",
     "Assert that the deployment was successful by making simple calls to Azure Front Door or API Management."
    ]

From 6508afa0e82b20791938869055f3a06153915329 Mon Sep 17 00:00:00 2001
From: Simon Kurtz <simonkurtz@microsoft.com>
Date: Fri, 30 May 2025 12:33:24 -0400
Subject: [PATCH 4/6] Add icons

---
 README.md | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/README.md b/README.md
index c93ad136..4bd66c6c 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ This repository provides a playground to safely experiment with and learn Azure
 
 _If you are interested in APIM & Azure OpenAI integrations, please check out the excellent [AI Gateway](https://github.com/Azure-Samples/AI-Gateway) GitHub repository._
 
-## Objectives
+## 🎯 Objectives
 
 1. Educate you on common APIM architectures we see across industries and customers.
 1. Empower you to safely experiment with APIM policies.
@@ -16,9 +16,9 @@ _Try it out, learn from it, apply it in your setups._
 
 ---
 
-## Getting Started
+## 🚀 Getting Started
 
-### Prerequisites
+### 📋 Prerequisites
 
 These prerequisites apply broadly across all infrastructure and samples. If there are specific deviations, expect them to be noted there.
 
@@ -29,7 +29,7 @@ These prerequisites apply broadly across all infrastructure and samples. If ther
 - [An Azure Subscription](https://azure.microsoft.com/free/) with Owner or Contributor+UserAccessAdministrator permissions. Execute [shared/jupyter/verify-az-account.ipynb](shared/jupyter/verify-az-account.ipynb) to verify.
 - [Sign in to Azure with Azure CLI](https://learn.microsoft.com/cli/azure/authenticate-azure-cli-interactively)
 
-### Initialization
+### 🛠️ Initialization
 
 Run through the following steps to create a Python virtual environment before doing anything else:
 
@@ -43,7 +43,7 @@ Run through the following steps to create a Python virtual environment before do
 
 The first time you run a Jupyter notebook, you'll be asked to install the Jupyter kernel package (ipykernel).
 
-### List of Samples
+### 📁 List of Samples
 
 | Sample Name | Description | Supported Infrastructure(s) |
 |:-----------------|:----------------------------------------------------------------------------|:-------------------------------------------|
@@ -51,7 +51,7 @@ The first time you run a Jupyter notebook, you'll be asked to install the Jupyte
 | [Load Balancing](./samples/load-balancing/create.ipynb) | Priority and weighted load balancing across backends. | apim-aca, afd-apim (with ACA) |
 | [AuthX](./samples/authx/create.ipynb) | Authentication and role-based authorization in a mock HR API. | All infrastructures |
 
-### Running a Sample
+### ▶️ Running a Sample
 
 1. Locate the specific sample's `create.ipynb` file and adjust the parameters under the `User-defined Parameters` header as you see fit.
 1. Ensure that the specified infrastructure already exists in your subscription. If not, proceed to the desired infrastructure folder and execute its `create.ipynb` file. Wait until this completes before continuing.
@@ -61,9 +61,9 @@ Now that infrastructure and sample have been stood up, you can experiment with t
 
 ---
 
-## Repo Structure
+## 📂 Repo Structure
 
-### High-level 
+### 🦅 High-level
 
 - All _samples_ can be found in the `samples` folder. Samples showcase functionality and provide a baseline for your experimentation.
 - All _infrastructures_ can be found in the `infrastructure` folder. They provide the architectural underpinnings.
@@ -73,14 +73,14 @@ Now that infrastructure and sample have been stood up, you can experiment with t
   - Reusable _APIM policies_ are found in the `apim-policies` folder. 
   - Reusable Jupyter notebooks are found in the `jupyter` folder.
 
-### Sample Setup
+### ⚙️ Sample Setup
 
 - Each sample uses an architecture infrastructure. This keeps the samples free of almost all setup.
 - Each infrastructure and sample features a `create.ipynb` for creation (and running) of the sample setup and a `main.bicep` file for IaC configuration.
 - Each infrastructure contains a `clean-up.ipynb` file to tear down everything in the infrastructure and its resource group. This reduces your Azure cost.
 - Samples (and infrastructures) may contain additional files specific to their use cases.
 
-### Infrastructure Architectures
+### 🏛️ Infrastructure Architectures
 
 We provide several common architectural approaches to integrating APIM into your Azure ecosystem. While these are high-fidelity setups, they are not production-ready. Please refer to the [Azure API Management landing zone accelerator](https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/landing-zone-accelerator) for up-to-date production setups.
 
@@ -95,7 +95,7 @@ We provide several common architectural approaches to integrating APIM into your
 
 ---
 
-## Development
+## 🛠️ Development
 
 As you work with this repo, you will likely want to make your own customizations. There's little you need to know to be successful.
 
@@ -103,7 +103,7 @@ The repo uses the bicep linter and has rules defined in `bicepconfig.json`. See
 
 **We welcome contributions!** Please consider forking the repo and creating issues and pull requests to share your samples. Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details. Thank you! 
 
-### Adding a Sample
+### ➕ Adding a Sample
 
 Adding a new sample is relatively straight-forward.
 
@@ -115,11 +115,11 @@ Adding a new sample is relatively straight-forward.
 1. Test the sample with all supported infrastructures.
 1. Create a pull request for merge.
 
-### Testing & Code Coverage
+### 🧪 Testing & Code Coverage
 
 Python modules in `shared/python` are covered by comprehensive unit tests located in `tests/python`. All tests use [pytest](https://docs.pytest.org/) and leverage modern pytest features, including custom markers for unit and HTTP tests.
 
-#### Running Tests Locally
+#### 🚀 Running Tests Locally
 
 - **PowerShell (Windows):**
   - Run all tests with coverage: `./tests/python/run_tests.ps1`
@@ -136,18 +136,18 @@ You can also run tests manually and see details in the console:
 pytest -v --cov=shared/python --cov-report=html:tests/python/htmlcov --cov-report=term tests/python
 ```
 
-#### Viewing Coverage Reports
+#### 📊 Viewing Coverage Reports
 
 After running tests, open `tests/python/htmlcov/index.html` in your browser to view detailed coverage information.
 
-#### Pytest Markers
+#### 🏷️ Pytest Markers
 
 - `@pytest.mark.unit` — marks a unit test
 - `@pytest.mark.http` — marks a test involving HTTP/mocking
 
 Markers are registered in `pytest.ini` to avoid warnings.
 
-#### Continuous Integration (CI)
+#### ⚡ Continuous Integration (CI)
 
 On every push or pull request, GitHub Actions will:
 - Install dependencies
@@ -155,7 +155,7 @@ On every push or pull request, GitHub Actions will:
 - Store the `.coverage` file in `tests/python`
 - Upload the HTML coverage report as a workflow artifact for download
 
-#### Additional Notes
+#### 📝 Additional Notes
 
 - The `.gitignore` is configured to exclude coverage output and artifacts.
 - All test and coverage features work both locally and in CI.
@@ -164,13 +164,13 @@ For more details on pytest usage, see the [pytest documentation](https://docs.py
 
 ---
 
-## Supporting Resources
+## 📚 Supporting Resources
 
 The APIM team maintains an [APIM policy snippets repo](https://github.com/Azure/api-management-policy-snippets) with use cases we have seen. They are not immediately executable samples and require integrations such as in this repo.
 
 ---
 
-## Acknowledgements
+## 🙏 Acknowledgements
 
 This project has its roots in work done by [Alex Vieira](https://github.com/vieiraae) on the excellent Azure API Management [AI Gateway](https://github.com/Azure-Samples/AI-Gateway) GitHub repository. Much of the structure is similar and its reuse resulted in significant time savings. Thank you, Alex!
 

From 48b5e1ca3e3e04d6e758e0e0961cf99aea44b75d Mon Sep 17 00:00:00 2001
From: Simon Kurtz <simonkurtz@microsoft.com>
Date: Fri, 30 May 2025 13:21:09 -0400
Subject: [PATCH 5/6] Add images

---
 assets/APIM-Samples-199x163.png | Bin 0 -> 31164 bytes
 assets/APIM-Samples.pdn         | Bin 0 -> 440791 bytes
 assets/APIM-Samples.png         | Bin 0 -> 295581 bytes
 3 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 assets/APIM-Samples-199x163.png
 create mode 100644 assets/APIM-Samples.pdn
 create mode 100644 assets/APIM-Samples.png

diff --git a/assets/APIM-Samples-199x163.png b/assets/APIM-Samples-199x163.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1d0688086b448e30eb86aac13170a7fe7af4361
GIT binary patch
diff --git a/assets/APIM-Samples.pdn b/assets/APIM-Samples.pdn
new file mode 100644
index 0000000000000000000000000000000000000000..63af4661cb04b272fb55c2a40e2bdd2038a27378
GIT binary patch
diff --git a/assets/APIM-Samples.png b/assets/APIM-Samples.png
new file mode 100644
index 0000000000000000000000000000000000000000..eebc7158233b684f634010bdfda40049561ac950
GIT binary patch

From 37119cbe4dacde40f35eab07a9f9dda2475a57ad Mon Sep 17 00:00:00 2001
From: Simon Kurtz <simonkurtz@microsoft.com>
Date: Fri, 30 May 2025 13:32:28 -0400
Subject: [PATCH 6/6] Adjust tone

---
 samples/authX/create.ipynb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/samples/authX/create.ipynb b/samples/authX/create.ipynb
index fcba22b6..1f342a9b 100644
--- a/samples/authX/create.ipynb
+++ b/samples/authX/create.ipynb
@@ -42,7 +42,7 @@
     "\n",
     "Furthermore, secrets would ideally be kept in a secret store such as Azure Key Vault and be accessed via API Management's managed identity. Adding a Key Vault to our architecture is a stretch goal that provides value but is not immediately necessary to showcase the authX sample.\n",
     "\n",
-    "JSON Web Tokens are defined in RFC 7519. Okta's JWT website is great to experiment with tokens. Microsoft provides one as well, but it is not as feature-rich.\n",
+    "JSON Web Tokens (JWTs) are defined in RFC 7519. Several tools exist to explore JWTs:\n",
     "\n",
     "🔗 [RFC 7519 - JWT](https://www.rfc-editor.org/rfc/rfc7519) | [jwt.io](https://jwt.io/) | [jwt.ms](https://jwt.ms/)\n",
     "\n",
