{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-graph/json-schema/microsoft-graph-microsoft-graph-teams-app-installation-schema.json",
  "title": "microsoft.graph.teamsAppInstallation",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-graph-chats-teamsappinstallation-api-openapi.yml#/components/schemas/microsoft.graph.teamsAppInstallation",
  "allOf": [
    {
      "$ref": "#/$defs/microsoft.graph.entity"
    },
    {
      "title": "teamsAppInstallation",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "consentedPermissionSet": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.teamsAppPermissionSet"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The set of resource-specific permissions consented to while installing or upgrading the teamsApp."
        },
        "teamsApp": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.teamsApp"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The app that is installed.",
          "x-ms-navigationProperty": true
        },
        "teamsAppDefinition": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.teamsAppDefinition"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The details of this version of the app.",
          "x-ms-navigationProperty": true
        },
        "@odata.type": {
          "type": "string"
        }
      }
    }
  ],
  "$defs": {
    "microsoft.graph.entity": {
      "title": "entity",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier for an entity. Read-only."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.identity": {
      "title": "identity",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "displayName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta."
        },
        "id": {
          "type": [
            "string",
            "null"
          ],
          "description": "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.identitySet": {
      "title": "identitySet",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "application": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.identity"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "Optional. The application associated with this action."
        },
        "device": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.identity"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "Optional. The device associated with this action."
        },
        "user": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.identity"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "Optional. The user associated with this action."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.teamsApp": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "teamsApp",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "displayName": {
              "type": [
                "string",
                "null"
              ],
              "description": "The name of the catalog app provided by the app developer in the Microsoft Teams zip app package."
            },
            "distributionMethod": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.teamsAppDistributionMethod"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ],
              "description": "The method of distribution for the app. Read-only."
            },
            "externalId": {
              "type": [
                "string",
                "null"
              ],
              "description": "The ID of the catalog provided by the app developer in the Microsoft Teams zip app package."
            },
            "appDefinitions": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.teamsAppDefinition"
              },
              "description": "The details for each version of the app.",
              "x-ms-navigationProperty": true
            },
            "@odata.type": {
              "type": "string"
            }
          }
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.teamsApp"
    },
    "microsoft.graph.teamsAppAuthorization": {
      "title": "teamsAppAuthorization",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "clientAppId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The registration ID of the Microsoft Entra app ID associated with the teamsApp."
        },
        "requiredPermissionSet": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.teamsAppPermissionSet"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "Set of permissions required by the teamsApp."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.teamsAppDefinition": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "teamsAppDefinition",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "authorization": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.teamsAppAuthorization"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ],
              "description": "Authorization requirements specified in the Teams app manifest."
            },
            "createdBy": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.identitySet"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ]
            },
            "description": {
              "type": [
                "string",
                "null"
              ],
              "description": "Verbose description of the application."
            },
            "displayName": {
              "type": [
                "string",
                "null"
              ],
              "description": "The name of the app provided by the app developer."
            },
            "lastModifiedDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": [
                "string",
                "null"
              ],
              "format": "date-time"
            },
            "publishingState": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.teamsAppPublishingState"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ],
              "description": "The published status of a specific version of a Teams app. The possible values are:submitted—The specific version of the Teams app was submitted and is under review.published—The request to publish the specific version of the Teams app was approved by the admin and the app is published.rejected—The admin rejected the request to publish the specific version of the Teams app."
            },
            "shortDescription": {
              "type": [
                "string",
                "null"
              ],
              "description": "Short description of the application."
            },
            "teamsAppId": {
              "type": [
                "string",
                "null"
              ],
              "description": "The ID from the Teams app manifest."
            },
            "version": {
              "type": [
                "string",
                "null"
              ],
              "description": "The version number of the application."
            },
            "bot": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.teamworkBot"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ],
              "description": "The details of the bot specified in the Teams app manifest.",
              "x-ms-navigationProperty": true
            },
            "@odata.type": {
              "type": "string"
            }
          }
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.teamsAppDefinition"
    },
    "microsoft.graph.teamsAppDistributionMethod": {
      "title": "teamsAppDistributionMethod",
      "enum": [
        "store",
        "organization",
        "sideloaded",
        "unknownFutureValue"
      ],
      "type": "string"
    },
    "microsoft.graph.teamsAppPermissionSet": {
      "title": "teamsAppPermissionSet",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "resourceSpecificPermissions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.teamsAppResourceSpecificPermission"
          },
          "description": "A collection of resource-specific permissions."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.teamsAppPublishingState": {
      "title": "teamsAppPublishingState",
      "enum": [
        "submitted",
        "rejected",
        "published",
        "unknownFutureValue"
      ],
      "type": "string"
    },
    "microsoft.graph.teamsAppResourceSpecificPermission": {
      "title": "teamsAppResourceSpecificPermission",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "permissionType": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.teamsAppResourceSpecificPermissionType"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The type of resource-specific permission."
        },
        "permissionValue": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the resource-specific permission."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.teamsAppResourceSpecificPermissionType": {
      "title": "teamsAppResourceSpecificPermissionType",
      "enum": [
        "delegated",
        "application",
        "unknownFutureValue"
      ],
      "type": "string"
    },
    "microsoft.graph.teamworkBot": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "teamworkBot",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "@odata.type": {
              "type": "string"
            }
          }
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.teamworkBot"
    }
  }
}