{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/google/json-schema/google-permission-schema.json",
  "title": "Permission",
  "description": "A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/google-permissions-api-openapi.yml#/components/schemas/Permission",
  "properties": {
    "allowFileDiscovery": {
      "description": "Whether the permission allows the file to be discovered through search. This is only applicable for permissions of type `domain` or `anyone`.",
      "type": "boolean"
    },
    "deleted": {
      "description": "Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.",
      "type": "boolean"
    },
    "displayName": {
      "description": "Output only. The \"pretty\" name of the value of the permission. The following is a list of examples for each type of permission: * `user` - User's full name, as defined for their Google account, such as \"Joe Smith.\" * `group` - Name of the Google Group, such as \"The Company Administrators.\" * `domain` - String domain name, such as \"thecompany.com.\" * `anyone` - No `displayName` is present.",
      "type": "string"
    },
    "domain": {
      "description": "The domain to which this permission refers.",
      "type": "string"
    },
    "emailAddress": {
      "description": "The email address of the user or group to which this permission refers.",
      "type": "string"
    },
    "expirationTime": {
      "description": "The time at which this permission will expire (RFC 3339 date-time). Expiration times have the following restrictions: - They can only be set on user and group permissions - The time must be in the future - The time cannot be more than a year in the future",
      "format": "date-time",
      "type": "string"
    },
    "id": {
      "description": "Output only. The ID of this permission. This is a unique identifier for the grantee, and is published in User resources as `permissionId`. IDs should be treated as opaque values.",
      "type": "string"
    },
    "kind": {
      "default": "drive#permission",
      "description": "Output only. Identifies what kind of resource this is. Value: the fixed string `\"drive#permission\"`.",
      "type": "string"
    },
    "pendingOwner": {
      "description": "Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.",
      "type": "boolean"
    },
    "permissionDetails": {
      "description": "Output only. Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.",
      "items": {
        "properties": {
          "inherited": {
            "description": "Output only. Whether this permission is inherited. This field is always populated. This is an output-only field.",
            "type": "boolean"
          },
          "inheritedFrom": {
            "description": "Output only. The ID of the item from which this permission is inherited. This is an output-only field.",
            "type": "string"
          },
          "permissionType": {
            "description": "Output only. The permission type for this user. While new values may be added in future, the following are currently possible: * `file` * `member`",
            "type": "string"
          },
          "role": {
            "description": "Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`",
            "type": "string"
          }
        },
        "type": "object"
      },
      "readOnly": true,
      "type": "array"
    },
    "photoLink": {
      "description": "Output only. A link to the user's profile photo, if available.",
      "type": "string"
    },
    "role": {
      "description": "The role granted by this permission. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`",
      "type": "string"
    },
    "teamDrivePermissionDetails": {
      "deprecated": true,
      "description": "Output only. Deprecated: Output only. Use `permissionDetails` instead.",
      "items": {
        "properties": {
          "inherited": {
            "deprecated": true,
            "description": "Deprecated: Output only. Use `permissionDetails/inherited` instead.",
            "type": "boolean"
          },
          "inheritedFrom": {
            "deprecated": true,
            "description": "Deprecated: Output only. Use `permissionDetails/inheritedFrom` instead.",
            "type": "string"
          },
          "role": {
            "deprecated": true,
            "description": "Deprecated: Output only. Use `permissionDetails/role` instead.",
            "type": "string"
          },
          "teamDrivePermissionType": {
            "deprecated": true,
            "description": "Deprecated: Output only. Use `permissionDetails/permissionType` instead.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "readOnly": true,
      "type": "array"
    },
    "type": {
      "description": "The type of the grantee. Valid values are: * `user` * `group` * `domain` * `anyone` When creating a permission, if `type` is `user` or `group`, you must provide an `emailAddress` for the user or group. When `type` is `domain`, you must provide a `domain`. There isn't extra information required for an `anyone` type.",
      "type": "string"
    },
    "view": {
      "description": "Indicates the view for this permission. Only populated for permissions that belong to a view. 'published' is the only supported value.",
      "type": "string"
    }
  },
  "type": "object"
}