Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 69 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,72 @@
# Microsoft JSON schema publishing repository

This repository contains schemas which are published at https://developer.microsoft.com/json-schemas/. Maintenance and publishing is performed by Microsoft employees from different organizations.
This repository contains schemas which are published at https://developer.microsoft.com/json-schemas/. Maintenance and publishing is performed by Microsoft employees from different organizations.

Notice. You cannot access the schemas directly from above URL, they are simply hosted there based on the folder structure in this repository. Tools are pointing automatically to the exact schema files as needed.
> [!IMPORTANT]
> You cannot access the schemas directly from https://developer.microsoft.com/json-schemas/. They are simply hosted there based on the folder structure in this repository. Tools are pointing automatically to the exact schema files as needed.

Last updated: 27 May 2026

## Publish Microsoft JSON schemas to the centralized json-schemas repo

Microsoft launched a centralized GitHub repo for publishing Microsoft-owned JSON schemas. Previously, JSON schema files were published to a public site (http://json-schema.org) for universally hosting json-schema files and to other Microsoft sites such as dev.office.com. However, there's an inherent risk in using the public site and much benefit to customers to provide a single, supported location for all Microsoft JSON schemas.

- Repo: https://github.com/Microsoft/json-schemas
- Admins: https://github.com/orgs/Microsoft/teams/json-schemas-admins
- Public site: https://developer.microsoft.com/json-schemas
- Owner: @VesaJuvonen (Eastern European Time (EET))
- Publishing: Self-publish via an admin from your team/organization.
- For publishing support or if you don't have an admin who can publish:
- M365 Developer program engineering team: DevAppPortalEng@microsoft.com (Indian Standard Time (IST))
- Office Developer documentation team: opcontent@microsoft.com or tag @OfficeDev/opcontent in GitHub (Pacific Daylight Time (PDT))
- Check the json-schemas-admins repo for someone in your organization with Administrator permissions!

## Get Admin perms REQUIRED

All Microsoft teams are welcome to publish schemas to this repo. Pick two FTE team members and request Admin permission. Submit your request to @Microsoft/json-schemas-admins for approval and tag @VesaJuvonen. This may take some time, so please be sure to do this part in advance.

After you're approved as an Admin, you have the power to create your own folder, add your schemas, manage your pull requests, etc. We suggest you contact your documentation team or several reliable PMs/EMs on your team and request Admin perms for them as well. There is no central person to publish and assist you.

## Publish a new schema

1. Create one folder per team in the repo. Keep your folder structure as flat as reasonable. Each folder will become an element of the JSON URL (e.g. https://developer.microsoft.com/json-schemas/folder/schema_name.json) Use examples in the repo for guidance. Stay consistent.

2. Create a working branch in GitHub and add your new schema file. Then open a PR to merge to the **Main** branch. You'll need your other team member to approve, or you can ask any Admin. Changes should appear on the staging servers 2-15 minutes after merging to Main branch.

3. After review, open a pull request and merge to Live branch. After approval, the new schema goes live in about 2-15 minutes.

### Troubleshooting

If your new schema doesn't appear, or to be extra safe, you'll need to "manually" publish your new schema by copying it directly to the Azure storage repo. Find your team folder, drill down, and create a new version folder. Follow the example of previous schemas and be consistent. Once you create the new version folder, copy your new schema. As of May 2026, the links to the Azure blob storage location for each folder are:

- api-extractor https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/api-extractor/
- copilot https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/copilot/
- core-build https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/core-build/
- dotnet https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/dotnet/
- fabric https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/fabric/
- heft https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/heft/
- lockfile-explorer https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/lockfile-explorer/
- office-js https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/office-js/
- pnp https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/pnp/
- rig-package https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/rig-package/
- rush https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/rush/
- sp https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/sp/
- spfx-build https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/spfx-build/
- spfx https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/spfx/
- teams-toolkit https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/teams-toolkit/
- teams https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/teams/
- tsdoc https://graphprodblobstorage.blob.core.windows.net/content/json-schemas/en-us/html/tsdoc/

> [!IMPORTANT]
> If you add a new root level folder then you need to send an email to devappportaleng@microsoft.com (developer app portal engineering team) and request they "allowlist" your folder for removing the locale from the full URL. You don't need to do this for sub-folders. As mentioned, this is the team that hosts the Azure blob so reach out to them for support if needed. You'll find they're very responsive if you catch them on India time!

## Update existing schemas

For minor changes, i.e. schema changes that are just a few lines, you can elimintate churn and skip these steps and make your changes directly in the **Main** branch. As an Admin, you are responsible for your own changes so be extra careful when doing this.

1. Create a branch in GitHub and make changes to **existing** schema file.
2. Open a PR and tag your other team Admin as reviewer.
3. Once approved, merge your PR to **Main**.
4. After you verify your update was merged to **Main**, open a new PR and merge **Main** to **Live**. You may note other schema commits; it's up to you how to handle this but my theory is that if they're in **Main**, then they're ready to go live.

Generally, updates occur within 30 minutes but it can take up to 24 hours. To see your updated or new file, you may need to clear your cache.
153 changes: 142 additions & 11 deletions fabric/item/operationsAgents/definition/1.0.0/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,37 @@
"configuration": {
"type": "object",
"title": "Operations Agent Configuration",
"description": "User specified configuration containing goals, instructions, data sources, and actions of the agent.",
"description": "User specified configuration containing instructions, data sources, actions, message destination, and identity of the agent.",
"properties": {
"goals": {
"type": "string",
"description": "Business goals for the agent to accomplish."
},
"instructions": {
"type": "string",
"description": "Explicit instructions or procedures for the agent to follow."
},
"dataSources": {
"type": "object",
"description": "Map of user-chosen data source aliases to data source objects or variable reference strings.",
"additionalProperties": {
"$ref": "#/definitions/dataSource"
"oneOf": [
{ "$ref": "#/definitions/dataSource" },
{ "$ref": "#/definitions/variableReference" }
]
}
},
"actions": {
"type": "object",
"description": "Map of user-chosen action aliases to action objects.",
"additionalProperties": {
"$ref": "#/definitions/action"
}
},
"recipient": {
"type": "string"
"messageDestination": {
"$ref": "#/definitions/messageDestination"
},
"identity": {
"$ref": "#/definitions/agentIdentity"
}
},
"required": [
"goals",
"instructions",
"dataSources",
"actions"
Expand All @@ -56,6 +59,11 @@
],
"additionalProperties": false,
"definitions": {
"variableReference": {
"type": "string",
"description": "Reference to a variable in a Fabric variable library, in the form $(/<WorkspaceName>/<LibraryName>/<VariableName>).",
"pattern": "^\\$\\(/[^/]+/[^/]+/[^/]+\\)$"
},
"dataSource": {
"type": "object",
"properties": {
Expand All @@ -66,7 +74,8 @@
"type": {
"type": "string",
"enum": [
"KustoDatabase"
"KustoDatabase",
"Ontology"
]
},
"workspaceId": {
Expand Down Expand Up @@ -96,23 +105,73 @@
"kind": {
"type": "string",
"enum": [
"PowerAutomateAction"
"PowerAutomateAction",
"FabricJobAction"
]
},
"parameters": {
"type": "array",
"items": {
"$ref": "#/definitions/parameter"
}
},
"connection": {
"$ref": "#/definitions/fabricItemConnection"
}
},
"required": [
"id",
"displayName",
"description",
"kind"
],
"allOf": [
{
"if": {
"properties": { "kind": { "const": "FabricJobAction" } },
"required": ["kind"]
},
"then": {
"required": ["connection"]
}
}
]
},
"fabricItemConnection": {
"type": "object",
"description": "Specifies the Fabric item and job to invoke for a FabricJobAction.",
"properties": {
"jobArtifactId": {
"type": "string",
"format": "uuid",
"description": "Artifact (item) ID of the Fabric item to run the job on."
},
"jobWorkspaceId": {
"type": "string",
"format": "uuid",
"description": "Workspace ID containing the item."
},
"itemType": {
"type": "string",
"description": "The Fabric item type (for example, DataPipeline, Notebook)."
},
"jobType": {
"type": "string",
"description": "The job type to invoke on the item (for example, Pipeline, RunNotebook)."
},
"subItemId": {
"type": "string",
"description": "Identifier for the sub-item being targeted by the job, when applicable."
}
},
"required": [
"jobArtifactId",
"jobWorkspaceId",
"itemType",
"jobType"
],
"additionalProperties": false
},
"parameter": {
"type": "object",
"properties": {
Expand All @@ -127,6 +186,78 @@
"name"
],
"additionalProperties": false
},
"messageDestination": {
"description": "Polymorphic destination for agent notifications. Selected by the kind discriminator.",
"oneOf": [
{ "$ref": "#/definitions/recipientDestination" },
{ "$ref": "#/definitions/teamsChannelDestination" }
]
},
"recipientDestination": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "Recipient"
},
"recipient": {
"type": "string",
"description": "The UPN of the recipient."
}
},
"required": [
"kind",
"recipient"
],
"additionalProperties": false
},
"teamsChannelDestination": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "TeamsChannel"
},
"teamId": {
"type": "string",
"description": "The Teams team ID."
},
"channelId": {
"type": "string",
"description": "The Teams channel ID."
}
},
"required": [
"kind",
"teamId",
"channelId"
],
"additionalProperties": false
},
"agentIdentity": {
"type": "object",
"description": "Identity information for the agent, used for agent OBO / app-only scenarios on ALM import/export.",
"properties": {
"principalId": {
"type": "string",
"description": "The principal ID for the agent identity."
},
"blueprintId": {
"type": "string",
"description": "The agent identity blueprint ID."
},
"mode": {
"type": "string",
"enum": ["Delegated"],
"description": "Execution mode."
},
"sponsor": {
"type": "string",
"description": "The UPN of the sponsor user. Required when messageDestination is a non-Recipient kind."
}
},
"additionalProperties": false
}
}
}
Loading