100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
Microsoft 365

The Teams App Manifest

The manifest.json file is the declarative blueprint that tells Microsoft Teams who an app is, what it can do, and where it is allowed to run.

Building Teams AppsBeginner8 min readJul 10, 2026
Analogies

What Is the Teams App Manifest?

Every Microsoft Teams app is described by a single JSON file, manifest.json, which acts as the contract between the app and the Teams client. Before Teams ever renders a tab, starts a bot conversation, or shows a message extension, it reads this file to learn the app's identity, required capabilities, and permitted domains. Nothing runs in Teams that isn't first declared here.

🏏

Cricket analogy: Just as a cricket team submits its playing XI and fielding plan to the match referee before the toss, declaring exactly who bowls and where each fielder stands, the manifest declares every capability an app needs before Teams allows it to take the field.

Manifest Structure and Required Fields

The manifest's top-level fields anchor the app's identity: $schema and manifestVersion pin which version of the manifest schema Teams should validate against (currently 1.19 or 1.20), id is a GUID that uniquely identifies the app across tenants, and packageName follows reverse-DNS convention like com.contoso.helpdesk. The developer object records the publisher's name, website, and support/privacy URLs, while name, description, and version fields exist in both short and full variants for display in the Teams app catalog. Icons must be supplied as a 192x192 color PNG and a 32x32 transparent outline PNG, referenced by filename and bundled in the same zip package.

🏏

Cricket analogy: The id GUID is like a player's unique ICC registration number that never changes even if they switch franchises between IPL seasons, letting scorers and broadcasters track the same person across every tournament unambiguously.

Capabilities: Tabs, Bots, and Message Extensions

Capabilities are declared in dedicated arrays. staticTabs list personal-scope tabs pinned to the app's personal app bar entry, each with an entityId and contentUrl. configurableTabs are added to a channel or group chat and include a configurationUrl the user visits once to set up the tab instance. The bots array holds one entry per bot, referencing its botId (the Azure AD app ID from Bot Framework registration) and a scopes array such as personal, team, or groupchat. composeExtensions likewise reference a botId and list commands the user can invoke from the compose box, each with a type of query or action.

🏏

Cricket analogy: Declaring scopes like personal, team, and groupchat for a bot is like a franchise registering a player as eligible for T20, ODI, and Test formats separately, since eligibility in one format doesn't automatically carry to another.

json
{
  "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.19/MicrosoftTeams.schema.json",
  "manifestVersion": "1.19",
  "version": "1.0.0",
  "id": "9c4b1f2e-7a3d-4e5c-8f1a-2b3c4d5e6f7a",
  "packageName": "com.contoso.helpdesk",
  "developer": {
    "name": "Contoso",
    "websiteUrl": "https://contoso.com",
    "privacyUrl": "https://contoso.com/privacy",
    "termsOfUseUrl": "https://contoso.com/terms"
  },
  "name": { "short": "Helpdesk", "full": "Contoso Helpdesk Assistant" },
  "description": { "short": "Log and track IT tickets", "full": "Create, track, and resolve IT support tickets without leaving Teams." },
  "icons": { "color": "color.png", "outline": "outline.png" },
  "accentColor": "#464775",
  "staticTabs": [
    { "entityId": "myTickets", "name": "My Tickets", "contentUrl": "https://helpdesk.contoso.com/tab", "scopes": ["personal"] }
  ],
  "bots": [
    { "botId": "9c4b1f2e-7a3d-4e5c-8f1a-2b3c4d5e6f7a", "scopes": ["personal", "team"], "supportsFiles": false }
  ],
  "validDomains": ["helpdesk.contoso.com"]
}

You rarely hand-write a manifest from a blank file. Teams Toolkit (for VS Code) and the Teams Developer Portal both scaffold a valid starting manifest and offer a schema-aware editor that flags missing required fields before you ever try to sideload the app.

Permissions, validDomains, and Packaging

The validDomains array whitelists every external domain the app's tabs, bots, or connectors are allowed to load content from or redirect to; any domain not listed will be blocked by the Teams client, typically showing a blank iframe with no error surfaced to the user. The webApplicationInfo object enables single sign-on by pointing to the Azure AD app registration's client id and the API resource URI Teams should request a token for, letting getAuthToken() in the Teams JS SDK silently obtain access without a separate login prompt. Once all fields are complete, the manifest.json plus the two icon PNGs are zipped together into a single app package, which is what gets uploaded to the Developer Portal, sideloaded for testing, or published to the tenant app catalog.

🏏

Cricket analogy: validDomains acting as a whitelist is like a stadium's accredited-vehicle list for the players' entrance; any car not on that list, even a legitimate team bus, gets turned away silently at the gate.

The most common manifest failures aren't syntax errors but silent runtime ones: an icon that isn't exactly 192x192 or 32x32 pixels, a botId that doesn't match the Azure Bot Service's Microsoft App ID, or a tab's contentUrl domain missing from validDomains. These pass JSON validation but produce a blank tab or a bot that never responds, so always test with a real sideload, not just schema validation.

  • manifest.json is the single declarative source of truth Teams reads before loading any app capability.
  • Required top-level fields include manifestVersion, a unique id GUID, packageName, developer info, and two icon sizes (192x192 color, 32x32 outline).
  • staticTabs are personal-scope tabs with a fixed contentUrl; configurableTabs are added to channels/chats via a one-time configurationUrl.
  • bots and composeExtensions both reference a botId tied to an Azure Bot Service registration and declare their allowed scopes or commands.
  • validDomains must whitelist every external domain used by tabs or auth redirects, or content silently fails to load.
  • webApplicationInfo enables SSO by linking the manifest to an Azure AD app registration.
  • The final app package is a zip of manifest.json plus both icon files, used for sideloading or catalog publishing.

Practice what you learned

Was this page helpful?

Topics covered

#Microsoft365#MicrosoftTeamsDevelopmentStudyNotes#MicrosoftTechnologies#TheTeamsAppManifest#Teams#App#Manifest#Structure#StudyNotes#SkillVeris

Frequently Asked Questions

21 categories · pick one to explore

Where can I get free study notes for programming and tech subjects?
SkillVeris offers completely free study notes covering programming and tech subjects, with no signup fees or paywalls. The notes are structured by course and topic, written for quick understanding, and enriched with the Learn Through Hobbies analogy method, so you can revise concepts through cricket, music, gaming, cooking and more.
Are SkillVeris study notes good for exam revision?
Yes, the study notes are designed for efficient revision: each topic answers its heading immediately, keeps explanations concise, and links to related glossary terms and cheat sheets. Students preparing for university exams or certification tests use them as quick revision notes because they distil concepts without the padding of full textbooks.
What subjects do the free study notes cover?
The study notes span the platform's main domains, including AI and machine learning, Python and programming, web development, DevOps, cloud, security and databases. Coverage mirrors the 37 live courses, so notes exist for the topics you are actually studying, and new note sets are added as courses launch.
How are SkillVeris study notes different from regular textbooks?
The notes are answer-first, concise and free, whereas textbooks are long and often expensive. Each section explains one concept directly, then reinforces it through selectable hobby analogies like cricket or cooking. Notes also cross-link to the glossary, blog and cheat sheets, letting you jump to related material instantly instead of flipping pages.
Can I use the developer study material without creating an account?
The study notes are free to access, and SkillVeris does not charge anything for its developer study material at any point. Browsing notes is straightforward from the Study Notes section, and if you want progress tracking, certificates and AI Mentor conversations tied to your learning, a free account unlocks those extras.
Do the study notes explain concepts with analogies?
Yes, this is a signature SkillVeris feature. Study notes use the Learn Through Hobbies method, explaining technical concepts through analogies from twelve domains including cricket, music, gaming, photography, travel, movies, fitness, chess, cooking, finance, business and sports. You can switch the analogy domain instantly to whichever hobby makes the concept click.
Are the revision notes suitable for last-minute exam preparation?
Yes, revision notes on SkillVeris work well for last-minute preparation because every section states the answer in its first sentences, so skimming is genuinely effective. Pair them with the relevant cheat sheet for formulas and syntax, and use the glossary for any unfamiliar term you meet while cramming.
Is there free study material for AI and machine learning?
Yes, SkillVeris provides free study notes across its AI and ML catalogue, covering Python for AI, deep learning frameworks like PyTorch and TensorFlow, Hugging Face Transformers, Large Language Models, RAG, AI agents and MLOps. All of it is free, making it a strong resource for Indian students and global learners alike.
Can beginners understand the study notes, or are they for experts?
Beginners can absolutely use them. The notes are written in plain language, define terms as they appear, and lean on hobby analogies to make abstract ideas concrete. Difficulty scales with the underlying course level, so beginner-course notes stay gentle while advanced-course notes go deeper, and the glossary supports you throughout.
How do study notes connect with SkillVeris courses?
Study notes are organised by course and topic, so they map directly to the structured courses and their 24–40-lesson curriculum. Many learners study a lesson first, then use the matching notes for revision before module assessments and the final exam, where 80 percent is required to pass and earn the certificate.
Are there study notes for Python specifically?
Yes, Python is well covered through notes tied to the Python-focused courses, including Python for AI and ML. Topics span fundamentals through applied machine learning usage. You can reinforce the notes with Python practice in Code Lab, which runs code in your browser with no installation required.
Do the study notes include code examples?
Yes, study notes include code examples wherever a concept is best shown in code, alongside explanations, key points and analogies. Reading a snippet in the notes and then reproducing it yourself in Code Lab is an effective loop, since Code Lab lets you run code in the browser across six languages.
How often is new study material added to SkillVeris?
Study material grows alongside the course catalogue. Whenever new courses join the platform's 37 live courses, matching study notes, glossary entries and cheat sheets are added so the resources stay in sync. Existing notes are also refined over time, so it is worth revisiting topics you studied earlier.
Can I use SkillVeris notes to prepare for technical interviews?
Yes, the notes make excellent interview revision because they compress each concept into direct, answer-first explanations, which mirrors how you should answer interview questions. Combine them with the SkillVeris interview questions feature, which includes readiness scoring, to test whether your revision has actually made you interview-ready.
Are the study notes mobile-friendly for studying on the go?
Yes, the study notes are built to load fast and read comfortably on mobile devices, so you can revise during a commute or between classes. Sections are short and answer-first, which suits small screens, and analogy switching works on mobile too, letting you study anywhere without carrying books.
What is the difference between study notes and cheat sheets?
Study notes explain concepts in depth with context, examples and analogies, making them ideal for learning and revision. Cheat sheets are compact quick-reference summaries of syntax, commands and key facts, ideal once you already understand a topic. Most learners study the notes first, then keep the cheat sheet handy while coding.
Do study notes help if I am stuck on a course lesson?
Yes, reading the matching study notes often clarifies a lesson because the same concept is explained from a different angle, frequently with a different analogy. If you are still stuck, ask the AI Mentor, which answers 24/7 at Quick, Detailed or Deep-dive depth until the idea genuinely makes sense.
Is there free study material for DevOps and cloud topics?
Yes, SkillVeris carries free study notes for DevOps and cloud topics as part of its coverage across 37 live courses. The material suits learners following the DevOps Engineer or Cloud Engineer paths, and it links to related glossary terms and cheat sheets so you can revise the whole toolchain in one place.
Can school or college students in India use these notes for projects?
Yes, students across India and worldwide use SkillVeris notes for coursework, projects and exam preparation, and everything is free, which matters for student budgets. The notes explain concepts clearly enough to cite in project reports, and Code Lab lets you prototype the project code directly in your browser.
How should I combine study notes with other SkillVeris resources?
A proven loop: learn from a course lesson, revise with the matching study notes, look up unfamiliar terms in the glossary, keep the cheat sheet open while practising in Code Lab, and quiz yourself with interview questions. The AI Mentor fills any remaining gaps 24/7, at whatever depth you need.

What Learners Say

Real journeys from the SkillVeris community — swipe for more.

SkillVeris taught me Python through Cricket. Now I’m building real projects and feeling confident!
Arjun S. · B.Tech Student
The best platform for hobby-based learning. Concepts finally stick.
Priya R. · Data Analyst
I went from zero coding to a portfolio of projects — all by learning through my love for gaming. Landed my first internship!
Kabir M. · CS Undergraduate
Trending Topics50 popular tags — tap to explore
Trending CoursesAll 37 free courses — tap to browse