{
  "basePath": "",
  "mtlsRootUrl": "https://cloudidentity.mtls.googleapis.com/",
  "schemas": {
    "CreateInboundOidcSsoProfileOperationMetadata": {
      "type": "object",
      "description": "LRO response metadata for InboundOidcSsoProfilesService.CreateInboundOidcSsoProfile.",
      "properties": {
        "state": {
          "description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448).",
          "type": "string"
        }
      },
      "id": "CreateInboundOidcSsoProfileOperationMetadata"
    },
    "CreateInboundSsoAssignmentOperationMetadata": {
      "description": "LRO response metadata for InboundSsoAssignmentsService.CreateInboundSsoAssignment.",
      "type": "object",
      "properties": {},
      "id": "CreateInboundSsoAssignmentOperationMetadata"
    },
    "GoogleAppsCloudidentityDevicesV1ListDeviceUsersResponse": {
      "description": "Response message that is returned from the ListDeviceUsers method.",
      "id": "GoogleAppsCloudidentityDevicesV1ListDeviceUsersResponse",
      "properties": {
        "nextPageToken": {
          "description": "Token to retrieve the next page of results. Empty if there are no more results.",
          "type": "string"
        },
        "deviceUsers": {
          "items": {
            "$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser"
          },
          "type": "array",
          "description": "Devices meeting the list restrictions."
        }
      },
      "type": "object"
    },
    "UpdateInboundSamlSsoProfileOperationMetadata": {
      "type": "object",
      "description": "LRO response metadata for InboundSamlSsoProfilesService.UpdateInboundSamlSsoProfile.",
      "id": "UpdateInboundSamlSsoProfileOperationMetadata",
      "properties": {
        "state": {
          "type": "string",
          "description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448)."
        }
      }
    },
    "RsaPublicKeyInfo": {
      "type": "object",
      "id": "RsaPublicKeyInfo",
      "properties": {
        "keySize": {
          "description": "Key size in bits (size of the modulus).",
          "format": "int32",
          "type": "integer"
        }
      },
      "description": "Information of a RSA public key."
    },
    "SearchDirectGroupsResponse": {
      "type": "object",
      "description": "The response message for MembershipsService.SearchDirectGroups.",
      "properties": {
        "memberships": {
          "type": "array",
          "items": {
            "$ref": "MembershipRelation"
          },
          "description": "List of direct groups satisfying the query."
        },
        "nextPageToken": {
          "type": "string",
          "description": "Token to retrieve the next page of results, or empty if there are no more results available for listing."
        }
      },
      "id": "SearchDirectGroupsResponse"
    },
    "ExpiryDetail": {
      "id": "ExpiryDetail",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "The time at which the `MembershipRole` will expire.",
          "format": "google-datetime"
        }
      },
      "description": "The `MembershipRole` expiry details.",
      "type": "object"
    },
    "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceMetadata": {
      "type": "object",
      "properties": {},
      "description": "Metadata for CancelWipeDevice LRO.",
      "id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceMetadata"
    },
    "ExternalId": {
      "description": "Represents an external identifier that links a Group in the Cloud Identity Groups API with a corresponding entity in an external directory or identity provider.",
      "type": "object",
      "properties": {
        "id": {
          "description": "Required. The unique identifier assigned by the external identity provider. The API does not enforce unique IDs across entities, but clients **must** ensure IDs are unique within their namespace.",
          "type": "string"
        },
        "namespace": {
          "type": "string",
          "description": "Required. The namespace in which the entity exists. The only supported namespace is `system/external`."
        }
      },
      "id": "ExternalId"
    },
    "IsInvitableUserResponse": {
      "type": "object",
      "id": "IsInvitableUserResponse",
      "description": "Response for IsInvitableUser RPC.",
      "properties": {
        "isInvitableUser": {
          "description": "Returns true if the email address is invitable.",
          "type": "boolean"
        }
      }
    },
    "DsaPublicKeyInfo": {
      "id": "DsaPublicKeyInfo",
      "properties": {
        "keySize": {
          "description": "Key size in bits (size of parameter P).",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object",
      "description": "Information of a DSA public key."
    },
    "SamlSsoInfo": {
      "type": "object",
      "properties": {
        "inboundSamlSsoProfile": {
          "description": "Required. Name of the `InboundSamlSsoProfile` to use. Must be of the form `inboundSamlSsoProfiles/{inbound_saml_sso_profile}`. ",
          "type": "string"
        }
      },
      "description": "Details that are applicable when `sso_mode` == `SAML_SSO`.",
      "id": "SamlSsoInfo"
    },
    "UpdateInboundOidcSsoProfileOperationMetadata": {
      "type": "object",
      "id": "UpdateInboundOidcSsoProfileOperationMetadata",
      "properties": {
        "state": {
          "type": "string",
          "description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448)."
        }
      },
      "description": "LRO response metadata for InboundOidcSsoProfilesService.UpdateInboundOidcSsoProfile."
    },
    "MemberRestriction": {
      "id": "MemberRestriction",
      "properties": {
        "evaluation": {
          "$ref": "RestrictionEvaluation",
          "description": "The evaluated state of this restriction on a group."
        },
        "query": {
          "description": "Member Restriction as defined by CEL expression. Supported restrictions are: `member.customer_id` and `member.type`. Valid values for `member.type` are `1`, `2` and `3`. They correspond to USER, SERVICE_ACCOUNT, and GROUP respectively. The value for `member.customer_id` only supports `groupCustomerId()` currently which means the customer id of the group will be used for restriction. Supported operators are `&&`, `||` and `==`, corresponding to AND, OR, and EQUAL. Examples: Allow only service accounts of given customer to be members. `member.type == 2 && member.customer_id == groupCustomerId()` Allow only users or groups to be members. `member.type == 1 || member.type == 3`",
          "type": "string"
        }
      },
      "description": "The definition of MemberRestriction",
      "type": "object"
    },
    "TransitiveMembershipRole": {
      "id": "TransitiveMembershipRole",
      "type": "object",
      "properties": {
        "role": {
          "description": "TransitiveMembershipRole in string format. Currently supported TransitiveMembershipRoles: `\"MEMBER\"`, `\"OWNER\"`, and `\"MANAGER\"`.",
          "type": "string"
        }
      },
      "description": "Message representing the role of a TransitiveMembership."
    },
    "ListAllowlistedDomainsResponse": {
      "id": "ListAllowlistedDomainsResponse",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "Contains the next page token if the result is not exhaustive. If there are no more results, this token is empty.",
          "type": "string"
        },
        "allowlistedDomains": {
          "description": "Contains the list of domains in the allowlist. There is no defined ordering of domains within a result.",
          "items": {
            "$ref": "AllowlistedDomain"
          },
          "type": "array"
        }
      },
      "description": "Response message for AllowlistedDomainsService.ListAllowlistedDomains."
    },
    "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserResponse": {
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserResponse",
      "description": "Response message for cancelling an unfinished user account wipe.",
      "properties": {
        "deviceUser": {
          "description": "Resultant DeviceUser object for the action.",
          "$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser"
        }
      }
    },
    "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserMetadata": {
      "type": "object",
      "description": "Metadata for ApproveDeviceUser LRO.",
      "properties": {},
      "id": "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserMetadata"
    },
    "SignInBehavior": {
      "description": "Controls sign-in behavior.",
      "id": "SignInBehavior",
      "type": "object",
      "properties": {
        "redirectCondition": {
          "type": "string",
          "enum": [
            "REDIRECT_CONDITION_UNSPECIFIED",
            "NEVER"
          ],
          "description": "When to redirect sign-ins to the IdP.",
          "enumDescriptions": [
            "Default and means \"always\"",
            "Sign-in flows where the user is prompted for their identity will not redirect to the IdP (so the user will most likely be prompted by Google for a password), but special flows like IdP-initiated SAML and sign-in following automatic redirection to the IdP by domain-specific service URLs will accept the IdP's assertion of the user's identity."
          ]
        }
      }
    },
    "GoogleAppsCloudidentityDevicesV1Device": {
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1Device",
      "properties": {
        "createTime": {
          "format": "google-datetime",
          "readOnly": true,
          "type": "string",
          "description": "Output only. When the Company-Owned device was imported. This field is empty for BYOD devices."
        },
        "manufacturer": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Device manufacturer. Example: Motorola."
        },
        "releaseVersion": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. OS release version. Example: 6.0."
        },
        "name": {
          "type": "string",
          "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}`, where device is the unique id assigned to the Device. Important: Device API scopes require that you use domain-wide delegation to access the API. For more information, see [Set up the Devices API](https://cloud.google.com/identity/docs/how-to/setup-devices).",
          "readOnly": true
        },
        "basebandVersion": {
          "description": "Output only. Baseband version of the device.",
          "readOnly": true,
          "type": "string"
        },
        "lastSyncTime": {
          "type": "string",
          "description": "Most recent time when device synced with this service.",
          "format": "google-datetime"
        },
        "otherAccounts": {
          "type": "array",
          "readOnly": true,
          "description": "Output only. Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account's domain has only one account. Examples: \"com.example\", \"xyz.com\".",
          "items": {
            "type": "string"
          }
        },
        "bootloaderVersion": {
          "type": "string",
          "description": "Output only. Device bootloader version. Example: 0.6.7.",
          "readOnly": true
        },
        "deviceId": {
          "type": "string",
          "description": "Unique identifier for the device."
        },
        "endpointVerificationSpecificAttributes": {
          "$ref": "GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes",
          "description": "Output only. Attributes specific to [Endpoint Verification](https://cloud.google.com/endpoint-verification/docs/overview) devices.",
          "readOnly": true
        },
        "androidSpecificAttributes": {
          "readOnly": true,
          "$ref": "GoogleAppsCloudidentityDevicesV1AndroidAttributes",
          "description": "Output only. Attributes specific to Android devices."
        },
        "imei": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. IMEI number of device if GSM device; empty otherwise."
        },
        "hostname": {
          "description": "Host name of the device.",
          "type": "string"
        },
        "model": {
          "type": "string",
          "description": "Output only. Model name of device. Example: Pixel 3.",
          "readOnly": true
        },
        "ownerType": {
          "type": "string",
          "enum": [
            "DEVICE_OWNERSHIP_UNSPECIFIED",
            "COMPANY",
            "BYOD"
          ],
          "description": "Output only. Whether the device is owned by the company or an individual",
          "readOnly": true,
          "enumDescriptions": [
            "Default value. The value is unused.",
            "Company owns the device.",
            "Bring Your Own Device (i.e. individual owns the device)"
          ]
        },
        "encryptionState": {
          "readOnly": true,
          "description": "Output only. Device encryption state.",
          "type": "string",
          "enum": [
            "ENCRYPTION_STATE_UNSPECIFIED",
            "UNSUPPORTED_BY_DEVICE",
            "ENCRYPTED",
            "NOT_ENCRYPTED"
          ],
          "enumDescriptions": [
            "Encryption Status is not set.",
            "Device doesn't support encryption.",
            "Device is encrypted.",
            "Device is not encrypted."
          ]
        },
        "unifiedDeviceId": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Unified device id of the device."
        },
        "osVersion": {
          "description": "Output only. OS version of the device. Example: Android 8.1.0.",
          "type": "string",
          "readOnly": true
        },
        "networkOperator": {
          "description": "Output only. Mobile or network operator of device, if available.",
          "readOnly": true,
          "type": "string"
        },
        "managementState": {
          "type": "string",
          "enum": [
            "MANAGEMENT_STATE_UNSPECIFIED",
            "APPROVED",
            "BLOCKED",
            "PENDING",
            "UNPROVISIONED",
            "WIPING",
            "WIPED"
          ],
          "enumDescriptions": [
            "Default value. This value is unused.",
            "Device is approved.",
            "Device is blocked.",
            "Device is pending approval.",
            "The device is not provisioned. Device will start from this state until some action is taken (i.e. a user starts using the device).",
            "Data and settings on the device are being removed.",
            "All data and settings on the device are removed."
          ],
          "readOnly": true,
          "description": "Output only. Management state of the device"
        },
        "kernelVersion": {
          "readOnly": true,
          "description": "Output only. Kernel version of the device.",
          "type": "string"
        },
        "securityPatchTime": {
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. OS security patch update time on device.",
          "readOnly": true
        },
        "serialNumber": {
          "description": "Serial Number of device. Example: HT82V1A01076.",
          "type": "string"
        },
        "compromisedState": {
          "readOnly": true,
          "description": "Output only. Represents whether the Device is compromised.",
          "type": "string",
          "enum": [
            "COMPROMISED_STATE_UNSPECIFIED",
            "COMPROMISED",
            "UNCOMPROMISED"
          ],
          "enumDescriptions": [
            "Default value.",
            "The device is compromised (currently, this means Android device is rooted).",
            "The device is safe (currently, this means Android device is unrooted)."
          ]
        },
        "enabledUsbDebugging": {
          "description": "Output only. Whether USB debugging is enabled on device.",
          "type": "boolean",
          "readOnly": true
        },
        "assetTag": {
          "description": "Asset tag of the device.",
          "type": "string"
        },
        "enabledDeveloperOptions": {
          "type": "boolean",
          "readOnly": true,
          "description": "Output only. Whether developer options is enabled on device."
        },
        "brand": {
          "type": "string",
          "description": "Output only. Device brand. Example: Samsung.",
          "readOnly": true
        },
        "meid": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. MEID number of device if CDMA device; empty otherwise."
        },
        "wifiMacAddresses": {
          "items": {
            "type": "string"
          },
          "description": "WiFi MAC addresses of device.",
          "type": "array"
        },
        "deviceType": {
          "readOnly": true,
          "type": "string",
          "enum": [
            "DEVICE_TYPE_UNSPECIFIED",
            "ANDROID",
            "IOS",
            "GOOGLE_SYNC",
            "WINDOWS",
            "MAC_OS",
            "LINUX",
            "CHROME_OS",
            "GOOGLEBOOK"
          ],
          "enumDescriptions": [
            "Unknown device type",
            "Device is an Android device",
            "Device is an iOS device",
            "Device is a Google Sync device.",
            "Device is a Windows device.",
            "Device is a MacOS device.",
            "Device is a Linux device.",
            "Device is a ChromeOS device.",
            "Device is a Googlebook device."
          ],
          "description": "Output only. Type of device."
        },
        "buildNumber": {
          "type": "string",
          "description": "Output only. Build number of the device.",
          "readOnly": true
        }
      },
      "description": " A Device within the Cloud Identity Devices API. Represents a Device known to Google Cloud, independent of the device ownership, type, and whether it is assigned or in use by a user."
    },
    "DynamicGroupStatus": {
      "type": "object",
      "description": "The current status of a dynamic group along with timestamp.",
      "id": "DynamicGroupStatus",
      "properties": {
        "status": {
          "description": "Status of the dynamic group.",
          "type": "string",
          "enum": [
            "STATUS_UNSPECIFIED",
            "UP_TO_DATE",
            "UPDATING_MEMBERSHIPS",
            "INVALID_QUERY"
          ],
          "enumDescriptions": [
            "Default.",
            "The dynamic group is up-to-date.",
            "The dynamic group has just been created and memberships are being updated.",
            "Group is in an unrecoverable state and its memberships can't be updated."
          ]
        },
        "statusTime": {
          "format": "google-datetime",
          "type": "string",
          "description": "The latest time at which the dynamic group is guaranteed to be in the given status. If status is `UP_TO_DATE`, the latest time at which the dynamic group was confirmed to be up-to-date. If status is `UPDATING_MEMBERSHIPS`, the time at which dynamic group was created."
        }
      }
    },
    "GoogleAppsCloudidentityDevicesV1AndroidAttributes": {
      "id": "GoogleAppsCloudidentityDevicesV1AndroidAttributes",
      "properties": {
        "enabledUnknownSources": {
          "description": "Whether applications from unknown sources can be installed on device.",
          "type": "boolean"
        },
        "ctsProfileMatch": {
          "type": "boolean",
          "description": "Whether the device passes Android CTS compliance."
        },
        "verifiedBoot": {
          "type": "boolean",
          "description": "Whether Android verified boot status is GREEN."
        },
        "hasPotentiallyHarmfulApps": {
          "type": "boolean",
          "description": "Whether any potentially harmful apps were detected on the device."
        },
        "ownershipPrivilege": {
          "type": "string",
          "enum": [
            "OWNERSHIP_PRIVILEGE_UNSPECIFIED",
            "DEVICE_ADMINISTRATOR",
            "PROFILE_OWNER",
            "DEVICE_OWNER"
          ],
          "description": "Ownership privileges on device.",
          "enumDescriptions": [
            "Ownership privilege is not set.",
            "Active device administrator privileges on the device.",
            "Profile Owner privileges. The account is in a managed corporate profile.",
            "Device Owner privileges on the device."
          ]
        },
        "ownerProfileAccount": {
          "description": "Whether this account is on an owner/primary profile. For phones, only true for owner profiles. Android 4+ devices can have secondary or restricted user profiles.",
          "type": "boolean"
        },
        "verifyAppsEnabled": {
          "description": "Whether Google Play Protect Verify Apps is enabled.",
          "type": "boolean"
        },
        "supportsWorkProfile": {
          "description": "Whether device supports Android work profiles. If false, this service will not block access to corp data even if an administrator turns on the \"Enforce Work Profile\" policy.",
          "type": "boolean"
        }
      },
      "type": "object",
      "description": "Resource representing the Android specific attributes of a Device."
    },
    "OidcRpConfig": {
      "type": "object",
      "description": "OIDC RP (relying party) configuration.",
      "id": "OidcRpConfig",
      "properties": {
        "redirectUris": {
          "type": "array",
          "readOnly": true,
          "description": "Output only. The URL(s) that this client may use in authentication requests.",
          "items": {
            "type": "string"
          }
        },
        "clientId": {
          "description": "OAuth2 client ID for OIDC.",
          "type": "string"
        },
        "clientSecret": {
          "description": "Input only. OAuth2 client secret for OIDC.",
          "type": "string"
        }
      }
    },
    "ListInboundSsoAssignmentsResponse": {
      "id": "ListInboundSsoAssignmentsResponse",
      "type": "object",
      "properties": {
        "inboundSsoAssignments": {
          "items": {
            "$ref": "InboundSsoAssignment"
          },
          "type": "array",
          "description": "The assignments."
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "description": "Response of the InboundSsoAssignmentsService.ListInboundSsoAssignments method."
    },
    "MembershipRelation": {
      "description": "Message containing membership relation.",
      "properties": {
        "displayName": {
          "description": "The display name of the `Group`.",
          "type": "string"
        },
        "labels": {
          "description": "One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "description": {
          "type": "string",
          "description": "An extended description to help users determine the purpose of a `Group`."
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "MembershipRole"
          },
          "description": "The `MembershipRole`s that apply to the `Membership`."
        },
        "group": {
          "type": "string",
          "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group_id}`."
        },
        "groupKey": {
          "description": "The `EntityKey` of the `Group`.",
          "$ref": "EntityKey"
        },
        "membership": {
          "type": "string",
          "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership`. Shall be of the form `groups/{group_id}/memberships/{membership_id}`."
        }
      },
      "id": "MembershipRelation",
      "type": "object"
    },
    "GoogleAppsCloudidentityDevicesV1UpdateDeviceMetadata": {
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1UpdateDeviceMetadata",
      "properties": {},
      "description": "Metadata for UpdateDevice LRO."
    },
    "GoogleAppsCloudidentityDevicesV1WipeDeviceUserResponse": {
      "description": "Response message for wiping the user's account from the device.",
      "properties": {
        "deviceUser": {
          "$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser",
          "description": "Resultant DeviceUser object for the action."
        }
      },
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1WipeDeviceUserResponse"
    },
    "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceResponse": {
      "description": "Response message for cancelling an unfinished device wipe.",
      "id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceResponse",
      "type": "object",
      "properties": {
        "device": {
          "description": "Resultant Device object for the action. Note that asset tags will not be returned in the device object.",
          "$ref": "GoogleAppsCloudidentityDevicesV1Device"
        }
      }
    },
    "DynamicGroupMetadata": {
      "type": "object",
      "properties": {
        "status": {
          "description": "Output only. Status of the dynamic group.",
          "$ref": "DynamicGroupStatus",
          "readOnly": true
        },
        "queries": {
          "type": "array",
          "items": {
            "$ref": "DynamicGroupQuery"
          },
          "description": "Memberships will be the union of all queries. Only one entry with USER resource is currently supported. Customers can create up to 500 dynamic groups."
        }
      },
      "description": "Dynamic group metadata like queries and status.",
      "id": "DynamicGroupMetadata"
    },
    "SearchGroupsResponse": {
      "description": "The response message for GroupsService.SearchGroups.",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "A continuation token to retrieve the next page of results, or empty if there are no more results available.",
          "type": "string"
        },
        "groups": {
          "description": "The `Group` resources that match the search query.",
          "type": "array",
          "items": {
            "$ref": "Group"
          }
        }
      },
      "id": "SearchGroupsResponse"
    },
    "SecuritySettings": {
      "type": "object",
      "id": "SecuritySettings",
      "properties": {
        "memberRestriction": {
          "$ref": "MemberRestriction",
          "description": "The Member Restriction value"
        },
        "name": {
          "type": "string",
          "description": "Output only. The resource name of the security settings. Shall be of the form `groups/{group_id}/securitySettings`.",
          "readOnly": true
        }
      },
      "description": "The definition of security settings."
    },
    "DeleteMembershipMetadata": {
      "type": "object",
      "properties": {},
      "description": "Metadata for DeleteMembership LRO.",
      "id": "DeleteMembershipMetadata"
    },
    "CreateMembershipMetadata": {
      "description": "Metadata for CreateMembership LRO.",
      "type": "object",
      "id": "CreateMembershipMetadata",
      "properties": {}
    },
    "AllowlistedDomain": {
      "id": "AllowlistedDomain",
      "properties": {
        "domain": {
          "description": "Required. Immutable. Name of the domain that is in the allowlist. e.g. \"google.com\"",
          "type": "string"
        },
        "name": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Identifier. Resource name of the domain in the allowlist e.g. \"allowlistedDomains/0184mhaj1smlusv\""
        }
      },
      "type": "object",
      "description": "This resource object defines a domain that has been designated as allowlisted."
    },
    "SamlIdpConfig": {
      "id": "SamlIdpConfig",
      "properties": {
        "entityId": {
          "description": "Required. The SAML **Entity ID** of the identity provider.",
          "type": "string"
        },
        "logoutRedirectUri": {
          "type": "string",
          "description": "The **Logout Redirect URL** (sign-out page URL) of the identity provider. When a user clicks the sign-out link on a Google page, they will be redirected to this URL. This is a pure redirect with no attached SAML `LogoutRequest` i.e. SAML single logout is not supported. Must use `HTTPS`."
        },
        "changePasswordUri": {
          "type": "string",
          "description": "The **Change Password URL** of the identity provider. Users will be sent to this URL when changing their passwords at `myaccount.google.com`. This takes precedence over the change password URL configured at customer-level. Must use `HTTPS`."
        },
        "singleSignOnServiceUri": {
          "description": "Required. The `SingleSignOnService` endpoint location (sign-in page URL) of the identity provider. This is the URL where the `AuthnRequest` will be sent. Must use `HTTPS`. Assumed to accept the `HTTP-Redirect` binding.",
          "type": "string"
        }
      },
      "description": "SAML IDP (identity provider) configuration.",
      "type": "object"
    },
    "CreateGroupMetadata": {
      "properties": {},
      "description": "Metadata for CreateGroup LRO.",
      "type": "object",
      "id": "CreateGroupMetadata"
    },
    "MembershipAdjacencyList": {
      "type": "object",
      "description": "Membership graph's path information as an adjacency list.",
      "properties": {
        "group": {
          "description": "Resource name of the group that the members belong to.",
          "type": "string"
        },
        "edges": {
          "description": "Each edge contains information about the member that belongs to this group. Note: Fields returned here will help identify the specific Membership resource (e.g `name`, `preferred_member_key` and `role`), but may not be a comprehensive list of all fields.",
          "items": {
            "$ref": "Membership"
          },
          "type": "array"
        }
      },
      "id": "MembershipAdjacencyList"
    },
    "ListIdpCredentialsResponse": {
      "properties": {
        "idpCredentials": {
          "items": {
            "$ref": "IdpCredential"
          },
          "type": "array",
          "description": "The IdpCredentials from the specified InboundSamlSsoProfile."
        },
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Response of the InboundSamlSsoProfilesService.ListIdpCredentials method.",
      "id": "ListIdpCredentialsResponse"
    },
    "GoogleAppsCloudidentityDevicesV1CertificateTemplate": {
      "type": "object",
      "properties": {
        "minorVersion": {
          "type": "integer",
          "format": "int32",
          "description": "The minor version of the template. Example: 12."
        },
        "id": {
          "description": "The template id of the template. Example: \"1.3.6.1.4.1.311.21.8.15608621.11768144.5720724.16068415.6889630.81.2472537.7784047\".",
          "type": "string"
        },
        "majorVersion": {
          "description": "The Major version of the template. Example: 100.",
          "type": "integer",
          "format": "int32"
        }
      },
      "description": "CertificateTemplate (v3 Extension in X.509).",
      "id": "GoogleAppsCloudidentityDevicesV1CertificateTemplate"
    },
    "Membership": {
      "id": "Membership",
      "type": "object",
      "description": "A membership within the Cloud Identity Groups API. A `Membership` defines a relationship between a `Group` and an entity belonging to that `Group`, referred to as a \"member\".",
      "properties": {
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time when the `Membership` was last updated.",
          "format": "google-datetime"
        },
        "preferredMemberKey": {
          "$ref": "EntityKey",
          "description": "Required. Immutable. The `EntityKey` of the member."
        },
        "deliverySetting": {
          "enumDescriptions": [
            "Default. Should not be used.",
            "Represents each mail should be delivered",
            "Represents 1 email for every 25 messages.",
            "Represents daily summary of messages.",
            "Represents no delivery.",
            "Represents disabled state."
          ],
          "type": "string",
          "enum": [
            "DELIVERY_SETTING_UNSPECIFIED",
            "ALL_MAIL",
            "DIGEST",
            "DAILY",
            "NONE",
            "DISABLED"
          ],
          "description": "Output only. Delivery setting associated with the membership.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "enum": [
            "TYPE_UNSPECIFIED",
            "USER",
            "SERVICE_ACCOUNT",
            "GROUP",
            "SHARED_DRIVE",
            "CBCM_BROWSER",
            "CHROME_OS_DEVICE",
            "PERSONAL_AGENT",
            "COWORKER_AGENT",
            "OTHER"
          ],
          "enumDescriptions": [
            "Default. Should not be used.",
            "Represents user type.",
            "Represents service account type.",
            "Represents group type.",
            "Represents Shared drive.",
            "Represents a CBCM-managed Chrome Browser type.",
            "Represents a ChromeOS-managed ChromeOS device type.",
            "Represents a Personal Agent type.",
            "Represents a Coworker Agent type.",
            "Represents other type."
          ],
          "description": "Output only. The type of the membership.",
          "readOnly": true
        },
        "createTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The time when the `Membership` was created.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Output only. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership`. Shall be of the form `groups/{group}/memberships/{membership}`.",
          "readOnly": true
        },
        "roles": {
          "items": {
            "$ref": "MembershipRole"
          },
          "description": "The `MembershipRole`s that apply to the `Membership`. If unspecified, defaults to a single `MembershipRole` with `name` `MEMBER`. Must not contain duplicate `MembershipRole`s with the same `name`.",
          "type": "array"
        }
      }
    },
    "GoogleAppsCloudidentityDevicesV1BlockDeviceUserRequest": {
      "properties": {
        "customer": {
          "type": "string",
          "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs."
        }
      },
      "type": "object",
      "description": "Request message for blocking account on device.",
      "id": "GoogleAppsCloudidentityDevicesV1BlockDeviceUserRequest"
    },
    "GoogleAppsCloudidentityDevicesV1ClientState": {
      "type": "object",
      "properties": {
        "customId": {
          "description": "This field may be used to store a unique identifier for the API resource within which these CustomAttributes are a field.",
          "type": "string"
        },
        "healthScore": {
          "type": "string",
          "enum": [
            "HEALTH_SCORE_UNSPECIFIED",
            "VERY_POOR",
            "POOR",
            "NEUTRAL",
            "GOOD",
            "VERY_GOOD"
          ],
          "enumDescriptions": [
            "Default value",
            "The object is in very poor health as defined by the caller.",
            "The object is in poor health as defined by the caller.",
            "The object health is neither good nor poor, as defined by the caller.",
            "The object is in good health as defined by the caller.",
            "The object is in very good health as defined by the caller."
          ],
          "description": "The Health score of the resource. The Health score is the callers specification of the condition of the device from a usability point of view. For example, a third-party device management provider may specify a health score based on its compliance with organizational policies."
        },
        "lastUpdateTime": {
          "description": "Output only. The time the client state data was last updated.",
          "readOnly": true,
          "format": "google-datetime",
          "type": "string"
        },
        "name": {
          "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the ClientState in format: `devices/{device}/deviceUsers/{device_user}/clientState/{partner}`, where partner corresponds to the partner storing the data. For partners belonging to the \"BeyondCorp Alliance\", this is the partner ID specified to you by Google. For all other callers, this is a string of the form: `{customer}-suffix`, where `customer` is your customer ID. The *suffix* is any string the caller specifies. This string will be displayed verbatim in the administration console. This suffix is used in setting up Custom Access Levels in Context-Aware Access. Your organization's customer ID can be obtained from the URL: `GET https://www.googleapis.com/admin/directory/v1/customers/my_customer` The `id` field in the response contains the customer ID starting with the letter 'C'. The customer ID to be used in this API is the string after the letter 'C' (not including 'C')",
          "type": "string",
          "readOnly": true
        },
        "assetTags": {
          "type": "array",
          "description": "The caller can specify asset tags for this resource",
          "items": {
            "type": "string"
          }
        },
        "etag": {
          "type": "string",
          "description": "The token that needs to be passed back for concurrency control in updates. Token needs to be passed back in UpdateRequest"
        },
        "keyValuePairs": {
          "description": "The map of key-value attributes stored by callers specific to a device. The total serialized length of this map may not exceed 10KB. No limit is placed on the number of attributes in a map.",
          "type": "object",
          "additionalProperties": {
            "$ref": "GoogleAppsCloudidentityDevicesV1CustomAttributeValue"
          }
        },
        "scoreReason": {
          "type": "string",
          "description": "A descriptive cause of the health score."
        },
        "complianceState": {
          "description": "The compliance state of the resource as specified by the API client.",
          "type": "string",
          "enum": [
            "COMPLIANCE_STATE_UNSPECIFIED",
            "COMPLIANT",
            "NON_COMPLIANT"
          ],
          "enumDescriptions": [
            "The compliance state of the resource is unknown or unspecified.",
            "Device is compliant with third party policies",
            "Device is not compliant with third party policies"
          ]
        },
        "managed": {
          "description": "The management state of the resource as specified by the API client.",
          "enumDescriptions": [
            "The management state of the resource is unknown or unspecified.",
            "The resource is managed.",
            "The resource is not managed."
          ],
          "type": "string",
          "enum": [
            "MANAGED_STATE_UNSPECIFIED",
            "MANAGED",
            "UNMANAGED"
          ]
        },
        "ownerType": {
          "type": "string",
          "enum": [
            "OWNER_TYPE_UNSPECIFIED",
            "OWNER_TYPE_CUSTOMER",
            "OWNER_TYPE_PARTNER"
          ],
          "description": "Output only. The owner of the ClientState",
          "enumDescriptions": [
            "Unknown owner type",
            "Customer is the owner",
            "Partner is the owner"
          ],
          "readOnly": true
        },
        "createTime": {
          "description": "Output only. The time the client state data was created.",
          "readOnly": true,
          "format": "google-datetime",
          "type": "string"
        }
      },
      "description": "Represents the state associated with an API client calling the Devices API. Resource representing ClientState and supports updates from API users",
      "id": "GoogleAppsCloudidentityDevicesV1ClientState"
    },
    "GoogleAppsCloudidentityDevicesV1LookupSelfDeviceUsersResponse": {
      "description": "Response containing resource names of the DeviceUsers associated with the caller's credentials.",
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1LookupSelfDeviceUsersResponse",
      "properties": {
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Resource names](https://cloud.google.com/apis/design/resource_names) of the DeviceUsers in the format: `devices/{device}/deviceUsers/{user_resource}`, where device is the unique ID assigned to a Device and user_resource is the unique user ID"
        },
        "nextPageToken": {
          "type": "string",
          "description": "Token to retrieve the next page of results. Empty if there are no more results."
        },
        "customer": {
          "type": "string",
          "description": "The customer resource name that may be passed back to other Devices API methods such as List, Get, etc."
        }
      }
    },
    "InboundSamlSsoProfile": {
      "id": "InboundSamlSsoProfile",
      "type": "object",
      "properties": {
        "idpConfig": {
          "$ref": "SamlIdpConfig",
          "description": "SAML identity provider configuration."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable name of the SAML SSO profile."
        },
        "customer": {
          "description": "Immutable. The customer. For example: `customers/C0123abc`.",
          "type": "string"
        },
        "name": {
          "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.",
          "readOnly": true,
          "type": "string"
        },
        "spConfig": {
          "$ref": "SamlSpConfig",
          "description": "SAML service provider configuration for this SAML SSO profile. These are the service provider details provided by Google that should be configured on the corresponding identity provider."
        }
      },
      "description": "A [SAML 2.0](https://www.oasis-open.org/standards#samlv2.0) federation between a Google enterprise customer and a SAML identity provider."
    },
    "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserMetadata": {
      "properties": {},
      "description": "Metadata for CancelWipeDeviceUser LRO.",
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserMetadata"
    },
    "ListInboundSamlSsoProfilesResponse": {
      "description": "Response of the InboundSamlSsoProfilesService.ListInboundSamlSsoProfiles method.",
      "id": "ListInboundSamlSsoProfilesResponse",
      "properties": {
        "inboundSamlSsoProfiles": {
          "type": "array",
          "description": "List of InboundSamlSsoProfiles.",
          "items": {
            "$ref": "InboundSamlSsoProfile"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "type": "object"
    },
    "GoogleAppsCloudidentityDevicesV1WipeDeviceUserMetadata": {
      "description": "Metadata for WipeDeviceUser LRO.",
      "properties": {},
      "id": "GoogleAppsCloudidentityDevicesV1WipeDeviceUserMetadata",
      "type": "object"
    },
    "GoogleAppsCloudidentityDevicesV1BlockDeviceUserMetadata": {
      "id": "GoogleAppsCloudidentityDevicesV1BlockDeviceUserMetadata",
      "type": "object",
      "properties": {},
      "description": "Metadata for BlockDeviceUser LRO."
    },
    "GetMembershipGraphResponse": {
      "properties": {
        "adjacencyList": {
          "description": "The membership graph's path information represented as an adjacency list.",
          "items": {
            "$ref": "MembershipAdjacencyList"
          },
          "type": "array"
        },
        "groups": {
          "description": "The resources representing each group in the adjacency list. Each group in this list can be correlated to a 'group' of the MembershipAdjacencyList using the 'name' of the Group resource.",
          "items": {
            "$ref": "Group"
          },
          "type": "array"
        }
      },
      "id": "GetMembershipGraphResponse",
      "description": "The response message for MembershipsService.GetMembershipGraph.",
      "type": "object"
    },
    "GoogleAppsCloudidentityDevicesV1WipeDeviceUserRequest": {
      "id": "GoogleAppsCloudidentityDevicesV1WipeDeviceUserRequest",
      "type": "object",
      "properties": {
        "customer": {
          "type": "string",
          "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs."
        }
      },
      "description": "Request message for starting an account wipe on device."
    },
    "GoogleAppsCloudidentityDevicesV1BlockDeviceUserResponse": {
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1BlockDeviceUserResponse",
      "properties": {
        "deviceUser": {
          "description": "Resultant DeviceUser object for the action.",
          "$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser"
        }
      },
      "description": "Response message for blocking the device from accessing user data."
    },
    "GoogleAppsCloudidentityDevicesV1DeleteDeviceUserMetadata": {
      "id": "GoogleAppsCloudidentityDevicesV1DeleteDeviceUserMetadata",
      "properties": {},
      "type": "object",
      "description": "Metadata for DeleteDeviceUser LRO."
    },
    "GoogleAppsCloudidentityDevicesV1WipeDeviceResponse": {
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1WipeDeviceResponse",
      "properties": {
        "device": {
          "$ref": "GoogleAppsCloudidentityDevicesV1Device",
          "description": "Resultant Device object for the action. Note that asset tags will not be returned in the device object."
        }
      },
      "description": "Response message for wiping all data on the device."
    },
    "AddIdpCredentialRequest": {
      "description": "The request for creating an IdpCredential with its associated payload. An InboundSamlSsoProfile can own up to 2 credentials.",
      "id": "AddIdpCredentialRequest",
      "properties": {
        "pemData": {
          "type": "string",
          "description": "PEM encoded x509 certificate containing the public key for verifying IdP signatures."
        }
      },
      "type": "object"
    },
    "UserInvitation": {
      "type": "object",
      "id": "UserInvitation",
      "properties": {
        "state": {
          "enumDescriptions": [
            "The default value. This value is used if the state is omitted.",
            "The `UserInvitation` has been created and is ready for sending as an email.",
            "The user has been invited by email.",
            "The user has accepted the invitation and is part of the organization.",
            "The user declined the invitation."
          ],
          "type": "string",
          "enum": [
            "STATE_UNSPECIFIED",
            "NOT_YET_SENT",
            "INVITED",
            "ACCEPTED",
            "DECLINED"
          ],
          "description": "State of the `UserInvitation`."
        },
        "name": {
          "description": "Shall be of the form `customers/{customer}/userinvitations/{user_email_address}`.",
          "type": "string"
        },
        "mailsSentCount": {
          "format": "int64",
          "description": "Number of invitation emails sent to the user.",
          "type": "string"
        },
        "updateTime": {
          "description": "Time when the `UserInvitation` was last updated.",
          "type": "string",
          "format": "google-datetime"
        }
      },
      "description": "The `UserInvitation` resource represents an email that can be sent to an unmanaged user account inviting them to join the customer's Google Workspace or Cloud Identity account. An unmanaged account shares an email address domain with the Google Workspace or Cloud Identity account but is not managed by it yet. If the user accepts the `UserInvitation`, the user account will become managed."
    },
    "GetMembershipGraphMetadata": {
      "id": "GetMembershipGraphMetadata",
      "properties": {},
      "type": "object",
      "description": "Metadata of GetMembershipGraphResponse LRO. This is currently empty to permit future extensibility."
    },
    "CreateInboundSamlSsoProfileOperationMetadata": {
      "properties": {
        "state": {
          "description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448).",
          "type": "string"
        }
      },
      "description": "LRO response metadata for InboundSamlSsoProfilesService.CreateInboundSamlSsoProfile.",
      "id": "CreateInboundSamlSsoProfileOperationMetadata",
      "type": "object"
    },
    "ListMembershipsResponse": {
      "description": "The response message for MembershipsService.ListMemberships.",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "A continuation token to retrieve the next page of results, or empty if there are no more results available.",
          "type": "string"
        },
        "memberships": {
          "type": "array",
          "items": {
            "$ref": "Membership"
          },
          "description": "The `Membership`s under the specified `parent`."
        }
      },
      "id": "ListMembershipsResponse"
    },
    "GoogleAppsCloudidentityDevicesV1DeleteDeviceMetadata": {
      "id": "GoogleAppsCloudidentityDevicesV1DeleteDeviceMetadata",
      "description": "Metadata for DeleteDevice LRO.",
      "type": "object",
      "properties": {}
    },
    "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceRequest": {
      "description": "Request message for cancelling an unfinished device wipe.",
      "properties": {
        "customer": {
          "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceRequest"
    },
    "UpdateInboundSsoAssignmentOperationMetadata": {
      "type": "object",
      "id": "UpdateInboundSsoAssignmentOperationMetadata",
      "properties": {},
      "description": "LRO response metadata for InboundSsoAssignmentsService.UpdateInboundSsoAssignment."
    },
    "UpdateGroupMetadata": {
      "id": "UpdateGroupMetadata",
      "properties": {},
      "description": "Metadata for UpdateGroup LRO.",
      "type": "object"
    },
    "UpdateMembershipRolesParams": {
      "type": "object",
      "id": "UpdateMembershipRolesParams",
      "description": "The details of an update to a `MembershipRole`.",
      "properties": {
        "fieldMask": {
          "format": "google-fieldmask",
          "description": "The fully-qualified names of fields to update. May only contain the field `expiry_detail.expire_time`.",
          "type": "string"
        },
        "membershipRole": {
          "description": "The `MembershipRole`s to be updated. Only `MEMBER` `MembershipRole` can currently be updated.",
          "$ref": "MembershipRole"
        }
      }
    },
    "DeleteInboundSsoAssignmentOperationMetadata": {
      "description": "LRO response metadata for InboundSsoAssignmentsService.DeleteInboundSsoAssignment.",
      "type": "object",
      "properties": {},
      "id": "DeleteInboundSsoAssignmentOperationMetadata"
    },
    "Operation": {
      "id": "Operation",
      "properties": {
        "done": {
          "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
          "type": "boolean"
        },
        "response": {
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          },
          "description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
          "type": "object"
        },
        "metadata": {
          "type": "object",
          "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        },
        "error": {
          "$ref": "Status",
          "description": "The error result of the operation in case of failure or cancellation."
        },
        "name": {
          "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
          "type": "string"
        }
      },
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "type": "object"
    },
    "RestrictionEvaluations": {
      "description": "Evaluations of restrictions applied to parent group on this membership.",
      "properties": {
        "memberRestrictionEvaluation": {
          "$ref": "MembershipRoleRestrictionEvaluation",
          "description": "Evaluation of the member restriction applied to this membership. Empty if the user lacks permission to view the restriction evaluation."
        }
      },
      "id": "RestrictionEvaluations",
      "type": "object"
    },
    "GroupRelation": {
      "type": "object",
      "properties": {
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "Labels for Group resource."
        },
        "groupKey": {
          "description": "Entity key has an id and a namespace. In case of discussion forums, the id will be an email address without a namespace.",
          "$ref": "EntityKey"
        },
        "roles": {
          "items": {
            "$ref": "TransitiveMembershipRole"
          },
          "type": "array",
          "description": "Membership roles of the member for the group."
        },
        "relationType": {
          "type": "string",
          "enum": [
            "RELATION_TYPE_UNSPECIFIED",
            "DIRECT",
            "INDIRECT",
            "DIRECT_AND_INDIRECT"
          ],
          "description": "The relation between the member and the transitive group.",
          "enumDescriptions": [
            "The relation type is undefined or undetermined.",
            "The two entities have only a direct membership with each other.",
            "The two entities have only an indirect membership with each other.",
            "The two entities have both a direct and an indirect membership with each other."
          ]
        },
        "group": {
          "description": "Resource name for this group.",
          "type": "string"
        },
        "displayName": {
          "description": "Display name for this group.",
          "type": "string"
        }
      },
      "id": "GroupRelation",
      "description": "Message representing a transitive group of a user or a group."
    },
    "GoogleAppsCloudidentityDevicesV1BrowserInfo": {
      "properties": {
        "browserVersion": {
          "description": "Version of the request initiating browser. E.g. `91.0.4442.4`.",
          "type": "string"
        },
        "isSecurityEventAnalysisEnabled": {
          "description": "Current state of [security event analysis](https://chromeenterprise.google/policies/#OnSecurityEventEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
          "type": "boolean"
        },
        "isRealtimeUrlCheckEnabled": {
          "description": "Current state of [real-time URL check](https://chromeenterprise.google/policies/#EnterpriseRealTimeUrlCheckMode). Set to true if provider list from Chrome is non-empty.",
          "type": "boolean"
        },
        "browserManagementState": {
          "readOnly": true,
          "enumDescriptions": [
            "Management state is not specified.",
            "Browser/Profile is not managed by any customer.",
            "Browser/Profile is managed, but by some other customer.",
            "Profile is managed by customer.",
            "Browser is managed by customer."
          ],
          "type": "string",
          "enum": [
            "UNSPECIFIED",
            "UNMANAGED",
            "MANAGED_BY_OTHER_DOMAIN",
            "PROFILE_MANAGED",
            "BROWSER_MANAGED"
          ],
          "description": "Output only. Browser's management state."
        },
        "passwordProtectionWarningTrigger": {
          "enumDescriptions": [
            "Password protection is not specified.",
            "Password reuse is never detected.",
            "Warning is shown when the user reuses their protected password on a non-allowed site.",
            "Warning is shown when the user reuses their protected password on a phishing site."
          ],
          "type": "string",
          "enum": [
            "PASSWORD_PROTECTION_TRIGGER_UNSPECIFIED",
            "PROTECTION_OFF",
            "PASSWORD_REUSE",
            "PHISHING_REUSE"
          ],
          "description": "Current state of [password protection trigger](https://chromeenterprise.google/policies/#PasswordProtectionWarningTrigger)."
        },
        "isChromeCleanupEnabled": {
          "deprecated": true,
          "type": "boolean",
          "description": "Deprecated: This field is not used for Chrome version 118 and later. Current state of [Chrome Cleanup](https://chromeenterprise.google/policies/#ChromeCleanupEnabled)."
        },
        "isChromeRemoteDesktopAppBlocked": {
          "description": "Current state of [Chrome Remote Desktop app](https://chromeenterprise.google/policies/#URLBlocklist).",
          "type": "boolean"
        },
        "isFileUploadAnalysisEnabled": {
          "description": "Current state of [file upload analysis](https://chromeenterprise.google/policies/#OnFileAttachedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
          "type": "boolean"
        },
        "isBulkDataEntryAnalysisEnabled": {
          "type": "boolean",
          "description": "Current state of [bulk data analysis](https://chromeenterprise.google/policies/#OnBulkDataEntryEnterpriseConnector). Set to true if provider list from Chrome is non-empty."
        },
        "isFileDownloadAnalysisEnabled": {
          "description": "Current state of [file download analysis](https://chromeenterprise.google/policies/#OnFileDownloadedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
          "type": "boolean"
        },
        "isSiteIsolationEnabled": {
          "type": "boolean",
          "description": "Current state of [site isolation](https://chromeenterprise.google/policies/?policy=IsolateOrigins)."
        },
        "safeBrowsingProtectionLevel": {
          "description": "Current state of [Safe Browsing protection level](https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel).",
          "enumDescriptions": [
            "Browser protection level is not specified.",
            "No protection against dangerous websites, downloads, and extensions.",
            "Standard protection against websites, downloads, and extensions that are known to be dangerous.",
            "Faster, proactive protection against dangerous websites, downloads, and extensions."
          ],
          "type": "string",
          "enum": [
            "SAFE_BROWSING_LEVEL_UNSPECIFIED",
            "DISABLED",
            "STANDARD",
            "ENHANCED"
          ]
        },
        "isThirdPartyBlockingEnabled": {
          "type": "boolean",
          "description": "Current state of [third-party blocking](https://chromeenterprise.google/policies/#ThirdPartyBlockingEnabled)."
        },
        "isBuiltInDnsClientEnabled": {
          "description": "Current state of [built-in DNS client](https://chromeenterprise.google/policies/#BuiltInDnsClientEnabled).",
          "type": "boolean"
        }
      },
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1BrowserInfo",
      "description": "Browser-specific fields reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1)."
    },
    "Group": {
      "properties": {
        "groupKey": {
          "description": "Required. The `EntityKey` of the `Group`.",
          "$ref": "EntityKey"
        },
        "dynamicGroupMetadata": {
          "description": "Optional. Dynamic group metadata like queries and status.",
          "$ref": "DynamicGroupMetadata"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "Required. One or more label entries that apply to the Group. Labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value. Google Groups can be [locked](https://support.google.com/a?p=locked-groups). To lock a group, add a label with a key of `cloudidentity.googleapis.com/groups.locked` and an empty value. Doing so locks the group. To unlock the group, remove this label."
        },
        "description": {
          "description": "An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters.",
          "type": "string"
        },
        "createTime": {
          "type": "string",
          "format": "google-datetime",
          "readOnly": true,
          "description": "Output only. The time when the `Group` was created."
        },
        "additionalGroupKeys": {
          "readOnly": true,
          "type": "array",
          "description": "Output only. Additional group keys associated with the Group.",
          "items": {
            "$ref": "EntityKey"
          }
        },
        "name": {
          "description": "Output only. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group}`.",
          "type": "string",
          "readOnly": true
        },
        "parent": {
          "type": "string",
          "description": "Required. Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)"
        },
        "updateTime": {
          "description": "Output only. The time when the `Group` was last updated.",
          "type": "string",
          "format": "google-datetime",
          "readOnly": true
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the `Group`."
        },
        "externalIds": {
          "description": "Optional. External identifiers associated with the `Group`. Allows external identity providers and directory sync tools link their native unique identifiers with this group. The only supported namespace is `system/external`.",
          "type": "array",
          "items": {
            "$ref": "ExternalId"
          }
        }
      },
      "type": "object",
      "id": "Group",
      "description": "A group within the Cloud Identity Groups API. A `Group` is a collection of entities, where each entity is either a user, another group, or a service account."
    },
    "DeleteInboundSamlSsoProfileOperationMetadata": {
      "properties": {},
      "description": "LRO response metadata for InboundSamlSsoProfilesService.DeleteInboundSamlSsoProfile.",
      "id": "DeleteInboundSamlSsoProfileOperationMetadata",
      "type": "object"
    },
    "GoogleAppsCloudidentityDevicesV1DeviceUser": {
      "id": "GoogleAppsCloudidentityDevicesV1DeviceUser",
      "description": "Represents a user's use of a Device in the Cloud Identity Devices API. A DeviceUser is a resource representing a user's use of a Device",
      "type": "object",
      "properties": {
        "managementState": {
          "description": "Output only. Management state of the user on the device.",
          "type": "string",
          "enum": [
            "MANAGEMENT_STATE_UNSPECIFIED",
            "WIPING",
            "WIPED",
            "APPROVED",
            "BLOCKED",
            "PENDING_APPROVAL",
            "UNENROLLED"
          ],
          "readOnly": true,
          "enumDescriptions": [
            "Default value. This value is unused.",
            "This user's data and profile is being removed from the device.",
            "This user's data and profile is removed from the device.",
            "User is approved to access data on the device.",
            "User is blocked from accessing data on the device.",
            "User is awaiting approval.",
            "User is unenrolled from Advanced Windows Management, but the Windows account is still intact."
          ]
        },
        "userEmail": {
          "type": "string",
          "description": "Email address of the user registered on the device."
        },
        "compromisedState": {
          "type": "string",
          "enum": [
            "COMPROMISED_STATE_UNSPECIFIED",
            "COMPROMISED",
            "NOT_COMPROMISED"
          ],
          "enumDescriptions": [
            "Compromised state of Device User account is unknown or unspecified.",
            "Device User Account is compromised.",
            "Device User Account is not compromised."
          ],
          "description": "Compromised State of the DeviceUser object"
        },
        "passwordState": {
          "type": "string",
          "enum": [
            "PASSWORD_STATE_UNSPECIFIED",
            "PASSWORD_SET",
            "PASSWORD_NOT_SET"
          ],
          "enumDescriptions": [
            "Password state not set.",
            "Password set in object.",
            "Password not set in object."
          ],
          "description": "Password state of the DeviceUser object"
        },
        "userAgent": {
          "readOnly": true,
          "description": "Output only. User agent on the device for this specific user",
          "type": "string"
        },
        "createTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "When the user first signed in to the device"
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the DeviceUser in format: `devices/{device}/deviceUsers/{device_user}`, where `device_user` uniquely identifies a user's use of a device."
        },
        "firstSyncTime": {
          "description": "Output only. Most recent time when user registered with this service.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "languageCode": {
          "type": "string",
          "description": "Output only. Default locale used on device, in IETF BCP-47 format.",
          "readOnly": true
        },
        "lastSyncTime": {
          "readOnly": true,
          "description": "Output only. Last time when user synced with policies.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "ModifyMembershipRolesResponse": {
      "type": "object",
      "properties": {
        "membership": {
          "description": "The `Membership` resource after modifying its `MembershipRole`s.",
          "$ref": "Membership"
        }
      },
      "id": "ModifyMembershipRolesResponse",
      "description": "The response message for MembershipsService.ModifyMembershipRoles."
    },
    "ModifyMembershipRolesRequest": {
      "type": "object",
      "properties": {
        "updateRolesParams": {
          "description": "The `MembershipRole`s to be updated. Updating roles in the same request as adding or removing roles is not supported. Must not be set if either `add_roles` or `remove_roles` is set.",
          "items": {
            "$ref": "UpdateMembershipRolesParams"
          },
          "type": "array"
        },
        "removeRoles": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "The `name`s of the `MembershipRole`s to be removed. Adding or removing roles in the same request as updating roles is not supported. It is not possible to remove the `MEMBER` `MembershipRole`. If you wish to delete a `Membership`, call MembershipsService.DeleteMembership instead. Must not contain `MEMBER`. Must not be set if `update_roles_params` is set."
        },
        "addRoles": {
          "items": {
            "$ref": "MembershipRole"
          },
          "type": "array",
          "description": "The `MembershipRole`s to be added. Adding or removing roles in the same request as updating roles is not supported. Must not be set if `update_roles_params` is set."
        }
      },
      "id": "ModifyMembershipRolesRequest",
      "description": "The request message for MembershipsService.ModifyMembershipRoles."
    },
    "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserResponse": {
      "properties": {
        "deviceUser": {
          "description": "Resultant DeviceUser object for the action.",
          "$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser"
        }
      },
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserResponse",
      "description": "Response message for approving the device to access user data."
    },
    "ListUserInvitationsResponse": {
      "type": "object",
      "id": "ListUserInvitationsResponse",
      "description": "Response message for UserInvitation listing request.",
      "properties": {
        "userInvitations": {
          "description": "The list of UserInvitation resources.",
          "type": "array",
          "items": {
            "$ref": "UserInvitation"
          }
        },
        "nextPageToken": {
          "description": "The token for the next page. If not empty, indicates that there may be more `UserInvitation` resources that match the listing request; this value can be used in a subsequent ListUserInvitationsRequest to get continued results with the current list call.",
          "type": "string"
        }
      }
    },
    "OidcIdpConfig": {
      "description": "OIDC IDP (identity provider) configuration.",
      "id": "OidcIdpConfig",
      "type": "object",
      "properties": {
        "issuerUri": {
          "type": "string",
          "description": "Required. The Issuer identifier for the IdP. Must be a URL. The discovery URL will be derived from this as described in Section 4 of [the OIDC specification](https://openid.net/specs/openid-connect-discovery-1_0.html)."
        },
        "changePasswordUri": {
          "description": "The **Change Password URL** of the identity provider. Users will be sent to this URL when changing their passwords at `myaccount.google.com`. This takes precedence over the change password URL configured at customer-level. Must use `HTTPS`.",
          "type": "string"
        }
      }
    },
    "CheckTransitiveMembershipResponse": {
      "description": "The response message for MembershipsService.CheckTransitiveMembership.",
      "id": "CheckTransitiveMembershipResponse",
      "properties": {
        "hasMembership": {
          "description": "Response does not include the possible roles of a member since the behavior of this rpc is not all-or-nothing unlike the other rpcs. So, it may not be possible to list all the roles definitively, due to possible lack of authorization in some of the paths.",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "PolicyQuery": {
      "properties": {
        "query": {
          "type": "string",
          "description": "Immutable. The CEL query that defines which entities the Policy applies to (ex. a User entity). For details about CEL see https://opensource.google.com/projects/cel. The OrgUnits the Policy applies to are represented by a clause like so: entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('{orgUnitId}')) The Group the Policy applies to are represented by a clause like so: entity.groups.exists(group, group.group_id == groupId('{groupId}')) The Licenses the Policy applies to are represented by a clause like so: entity.licenses.exists(license, license in ['/product/{productId}/sku/{skuId}']) **Note:** The licenses clause is not supported in mutate endpoints. The above clauses can be present in any combination, and used in conjunction with the &&, || and ! operators. The org_unit and group fields below are helper fields that contain the corresponding value(s) as the query to make the query easier to use."
        },
        "orgUnit": {
          "description": "Required. Immutable. Non-empty default. The OrgUnit the query applies to. This field is only set if there is a single value for org_unit that satisfies all clauses of the query.",
          "type": "string"
        },
        "sortOrder": {
          "format": "double",
          "description": "Output only. The decimal sort order of this PolicyQuery. The value is relative to all other policies with the same setting type for the customer. (There are no duplicates within this set).",
          "type": "number",
          "readOnly": true
        },
        "group": {
          "type": "string",
          "description": "Immutable. The group that the query applies to. This field is only set if there is a single value for group that satisfies all clauses of the query. If no group applies, this will be the empty string."
        }
      },
      "type": "object",
      "description": "PolicyQuery",
      "id": "PolicyQuery"
    },
    "RestrictionEvaluation": {
      "properties": {
        "state": {
          "description": "Output only. The current state of the restriction",
          "enumDescriptions": [
            "Default. Should not be used.",
            "The restriction state is currently being evaluated.",
            "All transitive memberships are adhering to restriction.",
            "Some transitive memberships violate the restriction. No new violating memberships can be added.",
            "Some transitive memberships violate the restriction. New violating direct memberships will be denied while indirect memberships may be added."
          ],
          "type": "string",
          "enum": [
            "STATE_UNSPECIFIED",
            "EVALUATING",
            "COMPLIANT",
            "FORWARD_COMPLIANT",
            "NON_COMPLIANT"
          ],
          "readOnly": true
        }
      },
      "description": "The evaluated state of this restriction.",
      "type": "object",
      "id": "RestrictionEvaluation"
    },
    "EntityKey": {
      "id": "EntityKey",
      "description": "A unique identifier for an entity in the Cloud Identity Groups API. An entity can represent either a group with an optional `namespace` or a user without a `namespace`. The combination of `id` and `namespace` must be unique; however, the same `id` can be used with different `namespace`s.",
      "properties": {
        "namespace": {
          "description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source}`.",
          "type": "string"
        },
        "id": {
          "description": "The ID of the entity. For Google-managed entities, the `id` should be the email address of an existing group or user. Email addresses need to adhere to [name guidelines for users and groups](https://support.google.com/a/answer/9193374). For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleAppsCloudidentityDevicesV1WipeDeviceMetadata": {
      "type": "object",
      "description": "Metadata for WipeDevice LRO.",
      "properties": {},
      "id": "GoogleAppsCloudidentityDevicesV1WipeDeviceMetadata"
    },
    "DeleteIdpCredentialOperationMetadata": {
      "description": "LRO response metadata for InboundSamlSsoProfilesService.DeleteIdpCredential.",
      "properties": {},
      "type": "object",
      "id": "DeleteIdpCredentialOperationMetadata"
    },
    "LookupGroupNameResponse": {
      "id": "LookupGroupNameResponse",
      "description": "The response message for GroupsService.LookupGroupName.",
      "properties": {
        "name": {
          "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the looked-up `Group`.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "Setting": {
      "description": "Setting",
      "id": "Setting",
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Required. Immutable. The type of the Setting."
        },
        "value": {
          "description": "Required. The value of the Setting.",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object."
          },
          "type": "object"
        }
      }
    },
    "MembershipRole": {
      "description": "A membership role within the Cloud Identity Groups API. A `MembershipRole` defines the privileges granted to a `Membership`.",
      "properties": {
        "name": {
          "description": "The name of the `MembershipRole`. Must be one of `OWNER`, `MANAGER`, `MEMBER`.",
          "type": "string"
        },
        "restrictionEvaluations": {
          "$ref": "RestrictionEvaluations",
          "description": "Evaluations of restrictions applied to parent group on this membership."
        },
        "expiryDetail": {
          "description": "The expiry details of the `MembershipRole`. Expiry details are only supported for `MEMBER` `MembershipRoles`. May be set if `name` is `MEMBER`. Must not be set if `name` is any other value.",
          "$ref": "ExpiryDetail"
        }
      },
      "id": "MembershipRole",
      "type": "object"
    },
    "InboundOidcSsoProfile": {
      "description": "An [OIDC](https://openid.net/developers/how-connect-works/) federation between a Google enterprise customer and an OIDC identity provider.",
      "id": "InboundOidcSsoProfile",
      "type": "object",
      "properties": {
        "rpConfig": {
          "description": "OIDC relying party (RP) configuration for this OIDC SSO profile. These are the RP details provided by Google that should be configured on the corresponding identity provider.",
          "$ref": "OidcRpConfig"
        },
        "idpConfig": {
          "description": "OIDC identity provider configuration.",
          "$ref": "OidcIdpConfig"
        },
        "name": {
          "readOnly": true,
          "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the OIDC SSO profile.",
          "type": "string"
        },
        "customer": {
          "description": "Immutable. The customer. For example: `customers/C0123abc`.",
          "type": "string"
        },
        "displayName": {
          "description": "Human-readable name of the OIDC SSO profile.",
          "type": "string"
        }
      }
    },
    "ListInboundOidcSsoProfilesResponse": {
      "properties": {
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "inboundOidcSsoProfiles": {
          "type": "array",
          "items": {
            "$ref": "InboundOidcSsoProfile"
          },
          "description": "List of InboundOidcSsoProfiles."
        }
      },
      "description": "Response of the InboundOidcSsoProfilesService.ListInboundOidcSsoProfiles method.",
      "id": "ListInboundOidcSsoProfilesResponse",
      "type": "object"
    },
    "SamlSpConfig": {
      "description": "SAML SP (service provider) configuration.",
      "id": "SamlSpConfig",
      "properties": {
        "assertionConsumerServiceUri": {
          "type": "string",
          "description": "Output only. The SAML **Assertion Consumer Service (ACS) URL** to be used for the IDP-initiated login. Assumed to accept response messages via the `HTTP-POST` binding.",
          "readOnly": true
        },
        "entityId": {
          "description": "Output only. The SAML **Entity ID** for this service provider.",
          "type": "string",
          "readOnly": true
        }
      },
      "type": "object"
    },
    "MembershipRoleRestrictionEvaluation": {
      "type": "object",
      "properties": {
        "state": {
          "readOnly": true,
          "description": "Output only. The current state of the restriction",
          "enumDescriptions": [
            "Default. Should not be used.",
            "The member adheres to the parent group's restriction.",
            "The group-group membership might be currently violating some parent group's restriction but in future, it will never allow any new member in the child group which can violate parent group's restriction.",
            "The member violates the parent group's restriction.",
            "The state of the membership is under evaluation."
          ],
          "type": "string",
          "enum": [
            "STATE_UNSPECIFIED",
            "COMPLIANT",
            "FORWARD_COMPLIANT",
            "NON_COMPLIANT",
            "EVALUATING"
          ]
        }
      },
      "id": "MembershipRoleRestrictionEvaluation",
      "description": "The evaluated state of this restriction."
    },
    "MemberRelation": {
      "type": "object",
      "description": "Message representing a transitive membership of a group.",
      "id": "MemberRelation",
      "properties": {
        "relationType": {
          "description": "The relation between the group and the transitive member.",
          "type": "string",
          "enumDescriptions": [
            "The relation type is undefined or undetermined.",
            "The two entities have only a direct membership with each other.",
            "The two entities have only an indirect membership with each other.",
            "The two entities have both a direct and an indirect membership with each other."
          ],
          "enum": [
            "RELATION_TYPE_UNSPECIFIED",
            "DIRECT",
            "INDIRECT",
            "DIRECT_AND_INDIRECT"
          ]
        },
        "member": {
          "type": "string",
          "description": "Resource name for this member."
        },
        "preferredMemberKey": {
          "items": {
            "$ref": "EntityKey"
          },
          "description": "Entity key has an id and a namespace. In case of discussion forums, the id will be an email address without a namespace.",
          "type": "array"
        },
        "roles": {
          "items": {
            "$ref": "TransitiveMembershipRole"
          },
          "description": "The membership role details (i.e name of role and expiry time).",
          "type": "array"
        }
      }
    },
    "GoogleAppsCloudidentityDevicesV1ListClientStatesResponse": {
      "type": "object",
      "description": "Response message that is returned in ListClientStates.",
      "id": "GoogleAppsCloudidentityDevicesV1ListClientStatesResponse",
      "properties": {
        "nextPageToken": {
          "description": "Token to retrieve the next page of results. Empty if there are no more results.",
          "type": "string"
        },
        "clientStates": {
          "items": {
            "$ref": "GoogleAppsCloudidentityDevicesV1ClientState"
          },
          "description": "Client states meeting the list restrictions.",
          "type": "array"
        }
      }
    },
    "GoogleAppsCloudidentityDevicesV1CreateDeviceMetadata": {
      "properties": {},
      "description": "Metadata for CreateDevice LRO.",
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1CreateDeviceMetadata"
    },
    "GoogleAppsCloudidentityDevicesV1SignoutDeviceUserMetadata": {
      "properties": {},
      "id": "GoogleAppsCloudidentityDevicesV1SignoutDeviceUserMetadata",
      "description": "Metadata for SignoutDeviceUser LRO.",
      "type": "object"
    },
    "AddIdpCredentialOperationMetadata": {
      "properties": {
        "state": {
          "description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448).",
          "type": "string"
        }
      },
      "type": "object",
      "id": "AddIdpCredentialOperationMetadata",
      "description": "LRO response metadata for InboundSamlSsoProfilesService.AddIdpCredential."
    },
    "DeleteInboundOidcSsoProfileOperationMetadata": {
      "description": "LRO response metadata for InboundOidcSsoProfilesService.DeleteInboundOidcSsoProfile.",
      "id": "DeleteInboundOidcSsoProfileOperationMetadata",
      "properties": {},
      "type": "object"
    },
    "GoogleAppsCloudidentityDevicesV1WipeDeviceRequest": {
      "id": "GoogleAppsCloudidentityDevicesV1WipeDeviceRequest",
      "type": "object",
      "description": "Request message for wiping all data on the device.",
      "properties": {
        "customer": {
          "type": "string",
          "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs."
        },
        "removeResetLock": {
          "description": "Optional. Specifies if a user is able to factory reset a device after a Device Wipe. On iOS, this is called \"Activation Lock\", while on Android, this is known as \"Factory Reset Protection\". If true, this protection will be removed from the device, so that a user can successfully factory reset. If false, the setting is untouched on the device.",
          "type": "boolean"
        }
      }
    },
    "GoogleAppsCloudidentityDevicesV1UpdateClientStateMetadata": {
      "type": "object",
      "description": "Metadata for UpdateClientState LRO.",
      "id": "GoogleAppsCloudidentityDevicesV1UpdateClientStateMetadata",
      "properties": {}
    },
    "ListGroupsResponse": {
      "id": "ListGroupsResponse",
      "properties": {
        "groups": {
          "type": "array",
          "items": {
            "$ref": "Group"
          },
          "description": "Groups returned in response to list request. The results are not sorted."
        },
        "nextPageToken": {
          "description": "Token to retrieve the next page of results, or empty if there are no more results available for listing.",
          "type": "string"
        }
      },
      "description": "Response message for ListGroups operation.",
      "type": "object"
    },
    "GoogleAppsCloudidentityDevicesV1CustomAttributeValue": {
      "description": "Additional custom attribute values may be one of these types",
      "type": "object",
      "properties": {
        "numberValue": {
          "format": "double",
          "type": "number",
          "description": "Represents a double value."
        },
        "stringValue": {
          "type": "string",
          "description": "Represents a string value."
        },
        "boolValue": {
          "description": "Represents a boolean value.",
          "type": "boolean"
        }
      },
      "id": "GoogleAppsCloudidentityDevicesV1CustomAttributeValue"
    },
    "ListPoliciesResponse": {
      "properties": {
        "policies": {
          "items": {
            "$ref": "Policy"
          },
          "description": "The results",
          "type": "array"
        },
        "nextPageToken": {
          "description": "The pagination token to retrieve the next page of results. If this field is empty, there are no subsequent pages.",
          "type": "string"
        }
      },
      "id": "ListPoliciesResponse",
      "type": "object",
      "description": "The response message for PoliciesService.ListPolicies."
    },
    "DynamicGroupQuery": {
      "description": "Defines a query on a resource.",
      "properties": {
        "resourceType": {
          "type": "string",
          "enum": [
            "RESOURCE_TYPE_UNSPECIFIED",
            "USER"
          ],
          "enumDescriptions": [
            "Default value (not valid)",
            "For queries on User"
          ],
          "description": "Resource type for the Dynamic Group Query"
        },
        "query": {
          "description": "Query that determines the memberships of the dynamic group. Examples: All users with at least one `organizations.department` of engineering. `user.organizations.exists(org, org.department=='engineering')` All users with at least one location that has `area` of `foo` and `building_id` of `bar`. `user.locations.exists(loc, loc.area=='foo' && loc.building_id=='bar')` All users with any variation of the name John Doe (case-insensitive queries add `equalsIgnoreCase()` to the value being queried). `user.name.value.equalsIgnoreCase('jOhn DoE')`",
          "type": "string"
        }
      },
      "type": "object",
      "id": "DynamicGroupQuery"
    },
    "SendUserInvitationRequest": {
      "id": "SendUserInvitationRequest",
      "description": "A request to send email for inviting target user corresponding to the UserInvitation.",
      "type": "object",
      "properties": {}
    },
    "Policy": {
      "type": "object",
      "properties": {
        "customer": {
          "description": "Immutable. Customer that the Policy belongs to. The value is in the format 'customers/{customerId}'. The `customerId` must begin with \"C\" To find your customer ID in Admin Console see https://support.google.com/a/answer/10070793.",
          "type": "string"
        },
        "name": {
          "description": "Output only. Identifier. The [resource name](https://cloud.google.com/apis/design/resource_names) of the Policy. Format: policies/{policy}.",
          "readOnly": true,
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "POLICY_TYPE_UNSPECIFIED",
            "SYSTEM",
            "ADMIN"
          ],
          "description": "Output only. The type of the policy.",
          "readOnly": true,
          "enumDescriptions": [
            "Unspecified policy type.",
            "Policy type denoting the system-configured policies.",
            "Policy type denoting the admin-configurable policies."
          ]
        },
        "policyQuery": {
          "description": "Required. The PolicyQuery the Setting applies to.",
          "$ref": "PolicyQuery"
        },
        "setting": {
          "$ref": "Setting",
          "description": "Required. The Setting configured by this Policy."
        }
      },
      "id": "Policy",
      "description": "A Policy resource binds an instance of a single Setting with the scope of a PolicyQuery. The Setting instance will be applied to all entities that satisfy the query."
    },
    "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserRequest": {
      "id": "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserRequest",
      "description": "Request message for approving the device to access user data.",
      "properties": {
        "customer": {
          "type": "string",
          "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs."
        }
      },
      "type": "object"
    },
    "CancelUserInvitationRequest": {
      "properties": {},
      "description": "Request to cancel sent invitation for target email in UserInvitation.",
      "type": "object",
      "id": "CancelUserInvitationRequest"
    },
    "GoogleAppsCloudidentityDevicesV1CertificateAttributes": {
      "properties": {
        "issuer": {
          "description": "The name of the issuer of this certificate.",
          "type": "string"
        },
        "validityStartTime": {
          "format": "google-datetime",
          "description": "Certificate not valid before this timestamp.",
          "type": "string"
        },
        "subject": {
          "description": "The subject name of this certificate.",
          "type": "string"
        },
        "validationState": {
          "readOnly": true,
          "type": "string",
          "enum": [
            "CERTIFICATE_VALIDATION_STATE_UNSPECIFIED",
            "VALIDATION_SUCCESSFUL",
            "VALIDATION_FAILED"
          ],
          "description": "Output only. Validation state of this certificate.",
          "enumDescriptions": [
            "Default value.",
            "Certificate validation was successful.",
            "Certificate validation failed."
          ]
        },
        "fingerprint": {
          "type": "string",
          "description": "The encoded certificate fingerprint."
        },
        "thumbprint": {
          "type": "string",
          "description": "The certificate thumbprint."
        },
        "serialNumber": {
          "type": "string",
          "description": "Serial number of the certificate, Example: \"123456789\"."
        },
        "certificateTemplate": {
          "description": "The X.509 extension for CertificateTemplate.",
          "$ref": "GoogleAppsCloudidentityDevicesV1CertificateTemplate"
        },
        "validityExpirationTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "Certificate not valid at or after this timestamp."
        }
      },
      "description": "Stores information about a certificate.",
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1CertificateAttributes"
    },
    "GoogleAppsCloudidentityDevicesV1ListDevicesResponse": {
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "Token to retrieve the next page of results. Empty if there are no more results."
        },
        "devices": {
          "items": {
            "$ref": "GoogleAppsCloudidentityDevicesV1Device"
          },
          "description": "Devices meeting the list restrictions.",
          "type": "array"
        }
      },
      "type": "object",
      "description": "Response message that is returned from the ListDevices method.",
      "id": "GoogleAppsCloudidentityDevicesV1ListDevicesResponse"
    },
    "OidcSsoInfo": {
      "properties": {
        "inboundOidcSsoProfile": {
          "description": "Required. Name of the `InboundOidcSsoProfile` to use. Must be of the form `inboundOidcSsoProfiles/{inbound_oidc_sso_profile}`. ",
          "type": "string"
        }
      },
      "id": "OidcSsoInfo",
      "type": "object",
      "description": "Details that are applicable when `sso_mode` is set to `OIDC_SSO`."
    },
    "Status": {
      "id": "Status",
      "properties": {
        "details": {
          "items": {
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            },
            "type": "object"
          },
          "type": "array",
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "code": {
          "format": "int32",
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors)."
    },
    "LookupMembershipNameResponse": {
      "id": "LookupMembershipNameResponse",
      "properties": {
        "name": {
          "type": "string",
          "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the looked-up `Membership`. Must be of the form `groups/{group}/memberships/{membership}`."
        }
      },
      "type": "object",
      "description": "The response message for MembershipsService.LookupMembershipName."
    },
    "GoogleAppsCloudidentityDevicesV1ListEndpointAppsMetadata": {
      "description": "Metadata for ListEndpointApps LRO.",
      "type": "object",
      "properties": {},
      "id": "GoogleAppsCloudidentityDevicesV1ListEndpointAppsMetadata"
    },
    "GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes": {
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes",
      "properties": {
        "browserAttributes": {
          "description": "Details of browser profiles reported by Endpoint Verification.",
          "type": "array",
          "items": {
            "$ref": "GoogleAppsCloudidentityDevicesV1BrowserAttributes"
          }
        },
        "certificateAttributes": {
          "items": {
            "$ref": "GoogleAppsCloudidentityDevicesV1CertificateAttributes"
          },
          "description": "Details of certificates.",
          "type": "array"
        },
        "additionalSignals": {
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object."
          },
          "description": "[Additional signals](https://cloud.google.com/endpoint-verification/docs/device-information) reported by Endpoint Verification. It includes the following attributes: * Non-configurable attributes: hotfixes, av_installed, av_enabled, windows_domain_name, is_os_native_firewall_enabled, and is_secure_boot_enabled. * [Configurable attributes](https://cloud.google.com/endpoint-verification/docs/collect-config-attributes): file, folder, and binary attributes; registry entries; and properties in a plist."
        }
      },
      "description": "Resource representing the [Endpoint Verification-specific attributes](https://cloud.google.com/endpoint-verification/docs/device-information) of a device."
    },
    "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserRequest": {
      "type": "object",
      "id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserRequest",
      "description": "Request message for cancelling an unfinished user account wipe.",
      "properties": {
        "customer": {
          "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
          "type": "string"
        }
      }
    },
    "GoogleAppsCloudidentityDevicesV1BrowserAttributes": {
      "description": "Contains information about browser profiles reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).",
      "type": "object",
      "properties": {
        "lastProfileSyncTime": {
          "description": "Timestamp in milliseconds since the Unix epoch when the profile/gcm id was last synced.",
          "type": "string",
          "format": "google-datetime"
        },
        "chromeBrowserInfo": {
          "description": "Represents the current state of the [Chrome browser attributes](https://cloud.google.com/access-context-manager/docs/browser-attributes) sent by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).",
          "$ref": "GoogleAppsCloudidentityDevicesV1BrowserInfo"
        },
        "chromeProfileId": {
          "type": "string",
          "description": "Chrome profile ID that is exposed by the Chrome API. It is unique for each device."
        }
      },
      "id": "GoogleAppsCloudidentityDevicesV1BrowserAttributes"
    },
    "UpdateMembershipMetadata": {
      "id": "UpdateMembershipMetadata",
      "description": "Metadata for UpdateMembership LRO.",
      "type": "object",
      "properties": {}
    },
    "InboundSsoAssignment": {
      "id": "InboundSsoAssignment",
      "properties": {
        "ssoMode": {
          "type": "string",
          "enum": [
            "SSO_MODE_UNSPECIFIED",
            "SSO_OFF",
            "SAML_SSO",
            "OIDC_SSO",
            "DOMAIN_WIDE_SAML_IF_ENABLED"
          ],
          "description": "Inbound SSO behavior.",
          "enumDescriptions": [
            "Not allowed.",
            "Disable SSO for the targeted users.",
            "Use an external SAML Identity Provider for SSO for the targeted users.",
            "Use an external OIDC Identity Provider for SSO for the targeted users.",
            "Use the domain-wide SAML Identity Provider for the targeted users if one is configured; otherwise, this is equivalent to `SSO_OFF`. Note that this will also be equivalent to `SSO_OFF` if/when support for domain-wide SAML is removed. Google may disallow this mode at that point and existing assignments with this mode may be automatically changed to `SSO_OFF`."
          ]
        },
        "signInBehavior": {
          "description": "Assertions about users assigned to an IdP will always be accepted from that IdP. This controls whether/when Google should redirect a user to the IdP. Unset (defaults) is the recommended configuration.",
          "$ref": "SignInBehavior"
        },
        "samlSsoInfo": {
          "$ref": "SamlSsoInfo",
          "description": "SAML SSO details. Must be set if and only if `sso_mode` is set to `SAML_SSO`."
        },
        "targetOrgUnit": {
          "description": "Immutable. Must be of the form `orgUnits/{org_unit}`.",
          "type": "string"
        },
        "customer": {
          "type": "string",
          "description": "Immutable. The customer. For example: `customers/C0123abc`."
        },
        "targetGroup": {
          "type": "string",
          "description": "Immutable. Must be of the form `groups/{group}`."
        },
        "name": {
          "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.",
          "type": "string",
          "readOnly": true
        },
        "oidcSsoInfo": {
          "description": "OpenID Connect SSO details. Must be set if and only if `sso_mode` is set to `OIDC_SSO`.",
          "$ref": "OidcSsoInfo"
        },
        "rank": {
          "description": "Must be zero (which is the default value so it can be omitted) for assignments with `target_org_unit` set and must be greater-than-or-equal-to one for assignments with `target_group` set.",
          "type": "integer",
          "format": "int32"
        }
      },
      "description": "Targets with \"set\" SSO assignments and their respective assignments.",
      "type": "object"
    },
    "SearchTransitiveGroupsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "Token to retrieve the next page of results, or empty if there are no more results available for listing.",
          "type": "string"
        },
        "memberships": {
          "items": {
            "$ref": "GroupRelation"
          },
          "type": "array",
          "description": "List of transitive groups satisfying the query."
        }
      },
      "description": "The response message for MembershipsService.SearchTransitiveGroups.",
      "id": "SearchTransitiveGroupsResponse"
    },
    "DeleteGroupMetadata": {
      "type": "object",
      "id": "DeleteGroupMetadata",
      "properties": {},
      "description": "Metadata for DeleteGroup LRO."
    },
    "SearchTransitiveMembershipsResponse": {
      "id": "SearchTransitiveMembershipsResponse",
      "properties": {
        "memberships": {
          "type": "array",
          "items": {
            "$ref": "MemberRelation"
          },
          "description": "List of transitive members satisfying the query."
        },
        "nextPageToken": {
          "description": "Token to retrieve the next page of results, or empty if there are no more results.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "The response message for MembershipsService.SearchTransitiveMemberships."
    },
    "IdpCredential": {
      "properties": {
        "rsaKeyInfo": {
          "description": "Output only. Information of a RSA public key.",
          "readOnly": true,
          "$ref": "RsaPublicKeyInfo"
        },
        "dsaKeyInfo": {
          "description": "Output only. Information of a DSA public key.",
          "readOnly": true,
          "$ref": "DsaPublicKeyInfo"
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the credential."
        },
        "updateTime": {
          "readOnly": true,
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. Time when the `IdpCredential` was last updated."
        }
      },
      "description": "Credential for verifying signatures produced by the Identity Provider.",
      "type": "object",
      "id": "IdpCredential"
    }
  },
  "canonicalName": "Cloud Identity",
  "documentationLink": "https://cloud.google.com/identity/",
  "rootUrl": "https://cloudidentity.googleapis.com/",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-identity.policies.readonly": {
          "description": "See policies in your Cloud Identity Organization."
        },
        "https://www.googleapis.com/auth/cloud-identity.policies": {
          "description": "See and edit policies in your Cloud Identity Organization."
        },
        "https://www.googleapis.com/auth/cloud-identity.devices.lookup": {
          "description": "See your device details"
        },
        "https://www.googleapis.com/auth/cloud-identity.groups.readonly": {
          "description": "See any Cloud Identity Groups that you can access, including group members and their emails"
        },
        "https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly": {
          "description": "See all of the Inbound SSO profiles and their assignments to any Org Units or Google Groups in your Cloud Identity Organization."
        },
        "https://www.googleapis.com/auth/cloud-identity.allowlisteddomains.readonly": {
          "description": "See allowlisted domains in your Cloud Identity Organization"
        },
        "https://www.googleapis.com/auth/cloud-identity.groups": {
          "description": "See, change, create, and delete any of the Cloud Identity Groups that you can access, including the members of each group"
        },
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        },
        "https://www.googleapis.com/auth/cloud-identity.allowlisteddomains": {
          "description": "See and edit allowlisted domains in your Cloud Identity Organization"
        },
        "https://www.googleapis.com/auth/cloud-identity.inboundsso": {
          "description": "See and edit all of the Inbound SSO profiles and their assignments to any Org Units or Google Groups in your Cloud Identity Organization."
        },
        "https://www.googleapis.com/auth/cloud-identity.devices": {
          "description": "Private Service: https://www.googleapis.com/auth/cloud-identity.devices"
        },
        "https://www.googleapis.com/auth/cloud-identity.devices.readonly": {
          "description": "Private Service: https://www.googleapis.com/auth/cloud-identity.devices.readonly"
        }
      }
    }
  },
  "name": "cloudidentity",
  "kind": "discovery#restDescription",
  "ownerName": "Google",
  "revision": "20261020",
  "servicePath": "",
  "protocol": "rest",
  "icons": {
    "x32": "http://www.google.com/images/icons/product/search-32.gif",
    "x16": "http://www.google.com/images/icons/product/search-16.gif"
  },
  "resources": {
    "inboundOidcSsoProfiles": {
      "methods": {
        "create": {
          "id": "cloudidentity.inboundOidcSsoProfiles.create",
          "flatPath": "v1/inboundOidcSsoProfiles",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Creates an InboundOidcSsoProfile for a customer. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
          "path": "v1/inboundOidcSsoProfiles",
          "response": {
            "$ref": "Operation"
          },
          "httpMethod": "POST",
          "parameters": {},
          "parameterOrder": [],
          "request": {
            "$ref": "InboundOidcSsoProfile"
          }
        },
        "patch": {
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "Operation"
          },
          "description": "Updates an InboundOidcSsoProfile. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "parameters": {
            "name": {
              "pattern": "^inboundOidcSsoProfiles/[^/]+$",
              "required": true,
              "type": "string",
              "location": "path",
              "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the OIDC SSO profile."
            },
            "updateMask": {
              "format": "google-fieldmask",
              "description": "Required. The list of fields to be updated.",
              "location": "query",
              "type": "string"
            }
          },
          "httpMethod": "PATCH",
          "request": {
            "$ref": "InboundOidcSsoProfile"
          },
          "path": "v1/{+name}",
          "id": "cloudidentity.inboundOidcSsoProfiles.patch",
          "flatPath": "v1/inboundOidcSsoProfiles/{inboundOidcSsoProfilesId}"
        },
        "get": {
          "id": "cloudidentity.inboundOidcSsoProfiles.get",
          "path": "v1/{+name}",
          "flatPath": "v1/inboundOidcSsoProfiles/{inboundOidcSsoProfilesId}",
          "parameters": {
            "name": {
              "required": true,
              "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundOidcSsoProfile to get. Format: `inboundOidcSsoProfiles/{sso_profile_id}`",
              "location": "path",
              "pattern": "^inboundOidcSsoProfiles/[^/]+$",
              "type": "string"
            }
          },
          "response": {
            "$ref": "InboundOidcSsoProfile"
          },
          "httpMethod": "GET",
          "parameterOrder": [
            "name"
          ],
          "description": "Gets an InboundOidcSsoProfile.",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ]
        },
        "list": {
          "httpMethod": "GET",
          "parameters": {
            "pageSize": {
              "type": "integer",
              "format": "int32",
              "description": "The maximum number of InboundOidcSsoProfiles to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100. Requests with page_size greater than that will be silently interpreted as having this maximum value.",
              "location": "query"
            },
            "filter": {
              "type": "string",
              "location": "query",
              "description": "A [Common Expression Language](https://github.com/google/cel-spec) expression to filter the results. The only supported filter is filtering by customer. For example: `customer==\"customers/C0123abc\"`. Omitting the filter or specifying a filter of `customer==\"customers/my_customer\"` will return the profiles for the customer that the caller (authenticated user) belongs to. Specifying a filter of `customer==\"\"` will return the global shared OIDC profiles."
            },
            "pageToken": {
              "location": "query",
              "type": "string",
              "description": "A page token, received from a previous `ListInboundOidcSsoProfiles` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundOidcSsoProfiles` must match the call that provided the page token."
            }
          },
          "flatPath": "v1/inboundOidcSsoProfiles",
          "parameterOrder": [],
          "response": {
            "$ref": "ListInboundOidcSsoProfilesResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Lists InboundOidcSsoProfile objects for a Google enterprise customer.",
          "id": "cloudidentity.inboundOidcSsoProfiles.list",
          "path": "v1/inboundOidcSsoProfiles"
        },
        "delete": {
          "parameterOrder": [
            "name"
          ],
          "parameters": {
            "name": {
              "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundOidcSsoProfile to delete. Format: `inboundOidcSsoProfiles/{sso_profile_id}`",
              "type": "string",
              "location": "path",
              "pattern": "^inboundOidcSsoProfiles/[^/]+$",
              "required": true
            }
          },
          "path": "v1/{+name}",
          "httpMethod": "DELETE",
          "response": {
            "$ref": "Operation"
          },
          "description": "Deletes an InboundOidcSsoProfile.",
          "id": "cloudidentity.inboundOidcSsoProfiles.delete",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "flatPath": "v1/inboundOidcSsoProfiles/{inboundOidcSsoProfilesId}"
        }
      }
    },
    "inboundSsoAssignments": {
      "methods": {
        "get": {
          "id": "cloudidentity.inboundSsoAssignments.get",
          "parameterOrder": [
            "name"
          ],
          "path": "v1/{+name}",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Gets an InboundSsoAssignment.",
          "response": {
            "$ref": "InboundSsoAssignment"
          },
          "flatPath": "v1/inboundSsoAssignments/{inboundSsoAssignmentsId}",
          "parameters": {
            "name": {
              "pattern": "^inboundSsoAssignments/[^/]+$",
              "required": true,
              "type": "string",
              "location": "path",
              "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSsoAssignment to fetch. Format: `inboundSsoAssignments/{assignment}`"
            }
          },
          "httpMethod": "GET"
        },
        "patch": {
          "flatPath": "v1/inboundSsoAssignments/{inboundSsoAssignmentsId}",
          "path": "v1/{+name}",
          "request": {
            "$ref": "InboundSsoAssignment"
          },
          "id": "cloudidentity.inboundSsoAssignments.patch",
          "description": "Updates an InboundSsoAssignment. The body of this request is the `inbound_sso_assignment` field and the `update_mask` is relative to that. For example: a PATCH to `/v1/inboundSsoAssignments/0abcdefg1234567&update_mask=rank` with a body of `{ \"rank\": 1 }` moves that (presumably group-targeted) SSO assignment to the highest priority and shifts any other group-targeted assignments down in priority.",
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "Operation"
          },
          "httpMethod": "PATCH",
          "parameters": {
            "name": {
              "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.",
              "location": "path",
              "pattern": "^inboundSsoAssignments/[^/]+$",
              "type": "string",
              "required": true
            },
            "updateMask": {
              "type": "string",
              "description": "Required. The list of fields to be updated.",
              "format": "google-fieldmask",
              "location": "query"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-platform"
          ]
        },
        "create": {
          "request": {
            "$ref": "InboundSsoAssignment"
          },
          "parameterOrder": [],
          "description": "Creates an InboundSsoAssignment for users and devices in a `Customer` under a given `Group` or `OrgUnit`.",
          "parameters": {},
          "response": {
            "$ref": "Operation"
          },
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "flatPath": "v1/inboundSsoAssignments",
          "id": "cloudidentity.inboundSsoAssignments.create",
          "path": "v1/inboundSsoAssignments"
        },
        "delete": {
          "response": {
            "$ref": "Operation"
          },
          "path": "v1/{+name}",
          "description": "Deletes an InboundSsoAssignment. To disable SSO, Create (or Update) an assignment that has `sso_mode` == `SSO_OFF`.",
          "id": "cloudidentity.inboundSsoAssignments.delete",
          "parameters": {
            "name": {
              "pattern": "^inboundSsoAssignments/[^/]+$",
              "required": true,
              "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSsoAssignment to delete. Format: `inboundSsoAssignments/{assignment}`",
              "location": "path",
              "type": "string"
            }
          },
          "flatPath": "v1/inboundSsoAssignments/{inboundSsoAssignmentsId}",
          "httpMethod": "DELETE",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "parameterOrder": [
            "name"
          ]
        },
        "list": {
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "response": {
            "$ref": "ListInboundSsoAssignmentsResponse"
          },
          "parameterOrder": [],
          "parameters": {
            "filter": {
              "location": "query",
              "description": "A CEL expression to filter the results. The only supported filter is filtering by customer. For example: `customer==customers/C0123abc`. Omitting the filter or specifying a filter of `customer==customers/my_customer` will return the assignments for the customer that the caller (authenticated user) belongs to.",
              "type": "string"
            },
            "pageToken": {
              "description": "A page token, received from a previous `ListInboundSsoAssignments` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundSsoAssignments` must match the call that provided the page token.",
              "location": "query",
              "type": "string"
            },
            "pageSize": {
              "format": "int32",
              "description": "The maximum number of assignments to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100, though requests with page_size greater than that will be silently interpreted as having this maximum value. This may increase in the futue.",
              "type": "integer",
              "location": "query"
            }
          },
          "path": "v1/inboundSsoAssignments",
          "httpMethod": "GET",
          "description": "Lists the InboundSsoAssignments for a `Customer`.",
          "id": "cloudidentity.inboundSsoAssignments.list",
          "flatPath": "v1/inboundSsoAssignments"
        }
      }
    },
    "devices": {
      "resources": {
        "deviceUsers": {
          "methods": {
            "cancelWipe": {
              "flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}:cancelWipe",
              "id": "cloudidentity.devices.deviceUsers.cancelWipe",
              "path": "v1/{+name}:cancelWipe",
              "response": {
                "$ref": "Operation"
              },
              "httpMethod": "POST",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.devices"
              ],
              "parameterOrder": [
                "name"
              ],
              "description": "Cancels an unfinished user account wipe. This operation can be used to cancel device wipe in the gap between the wipe operation returning success and the device being wiped.",
              "request": {
                "$ref": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserRequest"
              },
              "parameters": {
                "name": {
                  "location": "path",
                  "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
                  "type": "string",
                  "required": true,
                  "pattern": "^devices/[^/]+/deviceUsers/[^/]+$"
                }
              }
            },
            "block": {
              "path": "v1/{+name}:block",
              "request": {
                "$ref": "GoogleAppsCloudidentityDevicesV1BlockDeviceUserRequest"
              },
              "parameters": {
                "name": {
                  "required": true,
                  "type": "string",
                  "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
                  "pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
                  "location": "path"
                }
              },
              "httpMethod": "POST",
              "flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}:block",
              "response": {
                "$ref": "Operation"
              },
              "parameterOrder": [
                "name"
              ],
              "id": "cloudidentity.devices.deviceUsers.block",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.devices"
              ],
              "description": "Blocks device from accessing user data"
            },
            "get": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.devices",
                "https://www.googleapis.com/auth/cloud-identity.devices.readonly"
              ],
              "flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}",
              "id": "cloudidentity.devices.deviceUsers.get",
              "description": "Retrieves the specified DeviceUser",
              "parameters": {
                "customer": {
                  "type": "string",
                  "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
                  "location": "query"
                },
                "name": {
                  "required": true,
                  "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
                  "location": "path",
                  "type": "string",
                  "pattern": "^devices/[^/]+/deviceUsers/[^/]+$"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser"
              },
              "path": "v1/{+name}",
              "httpMethod": "GET"
            },
            "approve": {
              "request": {
                "$ref": "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserRequest"
              },
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.devices"
              ],
              "id": "cloudidentity.devices.deviceUsers.approve",
              "response": {
                "$ref": "Operation"
              },
              "description": "Approves device to access user data.",
              "parameters": {
                "name": {
                  "location": "path",
                  "type": "string",
                  "pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
                  "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
                  "required": true
                }
              },
              "flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}:approve",
              "httpMethod": "POST",
              "path": "v1/{+name}:approve"
            },
            "delete": {
              "parameterOrder": [
                "name"
              ],
              "description": "Deletes the specified DeviceUser. This also revokes the user's access to device data.",
              "id": "cloudidentity.devices.deviceUsers.delete",
              "response": {
                "$ref": "Operation"
              },
              "path": "v1/{+name}",
              "httpMethod": "DELETE",
              "parameters": {
                "customer": {
                  "location": "query",
                  "type": "string",
                  "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs."
                },
                "name": {
                  "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
                  "required": true,
                  "type": "string",
                  "pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
                  "location": "path"
                }
              },
              "flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.devices"
              ]
            },
            "wipe": {
              "flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}:wipe",
              "id": "cloudidentity.devices.deviceUsers.wipe",
              "path": "v1/{+name}:wipe",
              "parameterOrder": [
                "name"
              ],
              "description": "Wipes the user's account on a device. Other data on the device that is not associated with the user's work account is not affected. For example, if a Gmail app is installed on a device that is used for personal and work purposes, and the user is logged in to the Gmail app with their personal account as well as their work account, wiping the \"deviceUser\" by their work administrator will not affect their personal account within Gmail or other apps such as Photos.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.devices"
              ],
              "httpMethod": "POST",
              "request": {
                "$ref": "GoogleAppsCloudidentityDevicesV1WipeDeviceUserRequest"
              },
              "parameters": {
                "name": {
                  "pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User."
                }
              },
              "response": {
                "$ref": "Operation"
              }
            },
            "list": {
              "httpMethod": "GET",
              "parameters": {
                "filter": {
                  "location": "query",
                  "description": "Optional. Additional restrictions when fetching list of devices. For a list of search fields, refer to [Mobile device search fields](https://developers.google.com/admin-sdk/directory/v1/search-operators). Multiple search fields are separated by the space character.",
                  "type": "string"
                },
                "pageToken": {
                  "type": "string",
                  "description": "Optional. A page token, received from a previous `ListDeviceUsers` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListBooks` must match the call that provided the page token.",
                  "location": "query"
                },
                "customer": {
                  "location": "query",
                  "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
                  "type": "string"
                },
                "parent": {
                  "description": "Required. To list all DeviceUsers, set this to \"devices/-\". To list all DeviceUsers owned by a device, set this to the resource name of the device. Format: devices/{device}",
                  "required": true,
                  "type": "string",
                  "pattern": "^devices/[^/]+$",
                  "location": "path"
                },
                "pageSize": {
                  "type": "integer",
                  "format": "int32",
                  "location": "query",
                  "description": "Optional. The maximum number of DeviceUsers to return. If unspecified, at most 5 DeviceUsers will be returned. The maximum value is 20; values above 20 will be coerced to 20."
                },
                "orderBy": {
                  "type": "string",
                  "description": "Optional. Order specification for devices in the response.",
                  "location": "query"
                }
              },
              "description": "Lists/Searches DeviceUsers.",
              "response": {
                "$ref": "GoogleAppsCloudidentityDevicesV1ListDeviceUsersResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "path": "v1/{+parent}/deviceUsers",
              "flatPath": "v1/devices/{devicesId}/deviceUsers",
              "id": "cloudidentity.devices.deviceUsers.list",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.devices",
                "https://www.googleapis.com/auth/cloud-identity.devices.readonly"
              ]
            },
            "lookup": {
              "httpMethod": "GET",
              "id": "cloudidentity.devices.deviceUsers.lookup",
              "parameters": {
                "pageToken": {
                  "type": "string",
                  "description": "A page token, received from a previous `LookupDeviceUsers` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `LookupDeviceUsers` must match the call that provided the page token.",
                  "location": "query"
                },
                "iosDeviceId": {
                  "location": "query",
                  "type": "string",
                  "description": "Optional. The partner-specified device identifier assigned to the iOS device that initiated the Lookup API call. This string must match the value of the iosDeviceId key in the app config dictionary provided to Google Workspace apps."
                },
                "pageSize": {
                  "format": "int32",
                  "type": "integer",
                  "description": "The maximum number of DeviceUsers to return. If unspecified, at most 20 DeviceUsers will be returned. The maximum value is 20; values above 20 will be coerced to 20.",
                  "location": "query"
                },
                "partner": {
                  "description": "Optional. The partner ID of the calling iOS app. This string must match the value of the partner key within the app configuration dictionary provided to Google Workspace apps.",
                  "type": "string",
                  "location": "query"
                },
                "userId": {
                  "location": "query",
                  "type": "string",
                  "description": "The user whose DeviceUser's resource name will be fetched. Must be set to 'me' to fetch the DeviceUser's resource name for the calling user."
                },
                "androidId": {
                  "description": "Android Id returned by [Settings.Secure#ANDROID_ID](https://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID).",
                  "type": "string",
                  "location": "query"
                },
                "parent": {
                  "required": true,
                  "description": "Must be set to \"devices/-/deviceUsers\" to search across all DeviceUser belonging to the user.",
                  "pattern": "^devices/[^/]+/deviceUsers$",
                  "type": "string",
                  "location": "path"
                },
                "rawResourceId": {
                  "type": "string",
                  "description": "Raw Resource Id used by Google Endpoint Verification. If the user is enrolled into Google Endpoint Verification, this id will be saved as the 'device_resource_id' field in the following platform dependent files. Mac: ~/.secureConnect/context_aware_config.json Windows: C:\\Users\\%USERPROFILE%\\.secureConnect\\context_aware_config.json Linux: ~/.secureConnect/context_aware_config.json",
                  "location": "query"
                }
              },
              "description": "Looks up resource names of the DeviceUsers associated with the caller's credentials, as well as the properties provided in the request. This method must be called with end-user credentials with the scope: https://www.googleapis.com/auth/cloud-identity.devices.lookup If multiple properties are provided, only DeviceUsers having all of these properties are considered as matches - i.e. the query behaves like an AND. Different platforms require different amounts of information from the caller to ensure that the DeviceUser is uniquely identified. - iOS: If either the `partner` or `ios_device_id` field is provided, then both fields are required. - Android: Specifying the `android_id` field is required. - Desktop: Specifying the `raw_resource_id` field is required.",
              "path": "v1/{+parent}:lookup",
              "response": {
                "$ref": "GoogleAppsCloudidentityDevicesV1LookupSelfDeviceUsersResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "flatPath": "v1/devices/{devicesId}/deviceUsers:lookup",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.devices.lookup"
              ]
            }
          },
          "resources": {
            "clientStates": {
              "methods": {
                "patch": {
                  "request": {
                    "$ref": "GoogleAppsCloudidentityDevicesV1ClientState"
                  },
                  "id": "cloudidentity.devices.deviceUsers.clientStates.patch",
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "updateMask": {
                      "type": "string",
                      "description": "Optional. Comma-separated list of fully qualified names of fields to be updated. If not specified, all updatable fields in ClientState are updated.",
                      "format": "google-fieldmask",
                      "location": "query"
                    },
                    "customer": {
                      "location": "query",
                      "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
                      "type": "string"
                    },
                    "name": {
                      "location": "path",
                      "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the ClientState in format: `devices/{device}/deviceUsers/{device_user}/clientState/{partner}`, where partner corresponds to the partner storing the data. For partners belonging to the \"BeyondCorp Alliance\", this is the partner ID specified to you by Google. For all other callers, this is a string of the form: `{customer}-suffix`, where `customer` is your customer ID. The *suffix* is any string the caller specifies. This string will be displayed verbatim in the administration console. This suffix is used in setting up Custom Access Levels in Context-Aware Access. Your organization's customer ID can be obtained from the URL: `GET https://www.googleapis.com/admin/directory/v1/customers/my_customer` The `id` field in the response contains the customer ID starting with the letter 'C'. The customer ID to be used in this API is the string after the letter 'C' (not including 'C')",
                      "pattern": "^devices/[^/]+/deviceUsers/[^/]+/clientStates/[^/]+$",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-identity.devices"
                  ],
                  "flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}/clientStates/{clientStatesId}",
                  "httpMethod": "PATCH",
                  "description": "Updates the client state for the device user **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}"
                },
                "list": {
                  "path": "v1/{+parent}/clientStates",
                  "description": "Lists the client states for the given search query.",
                  "response": {
                    "$ref": "GoogleAppsCloudidentityDevicesV1ListClientStatesResponse"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-identity.devices",
                    "https://www.googleapis.com/auth/cloud-identity.devices.readonly"
                  ],
                  "parameters": {
                    "orderBy": {
                      "description": "Optional. Order specification for client states in the response.",
                      "location": "query",
                      "type": "string"
                    },
                    "customer": {
                      "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
                      "location": "query",
                      "type": "string"
                    },
                    "parent": {
                      "location": "path",
                      "pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
                      "type": "string",
                      "description": "Required. To list all ClientStates, set this to \"devices/-/deviceUsers/-\". To list all ClientStates owned by a DeviceUser, set this to the resource name of the DeviceUser. Format: devices/{device}/deviceUsers/{deviceUser}",
                      "required": true
                    },
                    "filter": {
                      "description": "Optional. Additional restrictions when fetching list of client states.",
                      "type": "string",
                      "location": "query"
                    },
                    "pageToken": {
                      "location": "query",
                      "description": "Optional. A page token, received from a previous `ListClientStates` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListClientStates` must match the call that provided the page token.",
                      "type": "string"
                    }
                  },
                  "flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}/clientStates",
                  "httpMethod": "GET",
                  "id": "cloudidentity.devices.deviceUsers.clientStates.list"
                },
                "get": {
                  "flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}/clientStates/{clientStatesId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-identity.devices",
                    "https://www.googleapis.com/auth/cloud-identity.devices.readonly"
                  ],
                  "description": "Gets the client state for the device user",
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "cloudidentity.devices.deviceUsers.clientStates.get",
                  "httpMethod": "GET",
                  "response": {
                    "$ref": "GoogleAppsCloudidentityDevicesV1ClientState"
                  },
                  "parameters": {
                    "name": {
                      "location": "path",
                      "pattern": "^devices/[^/]+/deviceUsers/[^/]+/clientStates/[^/]+$",
                      "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the ClientState in format: `devices/{device}/deviceUsers/{device_user}/clientStates/{partner}`, where `device` is the unique ID assigned to the Device, `device_user` is the unique ID assigned to the User and `partner` identifies the partner storing the data. To get the client state for devices belonging to your own organization, the `partnerId` is in the format: `customerId-*anystring*`. Where the `customerId` is your organization's customer ID and `anystring` is any suffix. This suffix is used in setting up Custom Access Levels in Context-Aware Access. You may use `my_customer` instead of the customer ID for devices managed by your own organization. You may specify `-` in place of the `{device}`, so the ClientState resource name can be: `devices/-/deviceUsers/{device_user_resource}/clientStates/{partner}`.",
                      "type": "string",
                      "required": true
                    },
                    "customer": {
                      "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
                      "type": "string",
                      "location": "query"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "methods": {
        "get": {
          "parameters": {
            "customer": {
              "location": "query",
              "type": "string",
              "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Customer in the format: `customers/{customer}`, where customer is the customer to whom the device belongs. If you're using this API for your own organization, use `customers/my_customer`. If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs."
            },
            "name": {
              "pattern": "^devices/[^/]+$",
              "location": "path",
              "type": "string",
              "required": true,
              "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in the format: `devices/{device}`, where device is the unique ID assigned to the Device."
            }
          },
          "httpMethod": "GET",
          "response": {
            "$ref": "GoogleAppsCloudidentityDevicesV1Device"
          },
          "parameterOrder": [
            "name"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.devices",
            "https://www.googleapis.com/auth/cloud-identity.devices.readonly"
          ],
          "path": "v1/{+name}",
          "id": "cloudidentity.devices.get",
          "description": "Retrieves the specified device.",
          "flatPath": "v1/devices/{devicesId}"
        },
        "create": {
          "description": "Creates a device. Only company-owned device may be created. **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium",
          "httpMethod": "POST",
          "parameters": {
            "customer": {
              "type": "string",
              "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
              "location": "query"
            }
          },
          "response": {
            "$ref": "Operation"
          },
          "path": "v1/devices",
          "request": {
            "$ref": "GoogleAppsCloudidentityDevicesV1Device"
          },
          "id": "cloudidentity.devices.create",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.devices"
          ],
          "parameterOrder": [],
          "flatPath": "v1/devices"
        },
        "cancelWipe": {
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.devices"
          ],
          "response": {
            "$ref": "Operation"
          },
          "path": "v1/{+name}:cancelWipe",
          "request": {
            "$ref": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceRequest"
          },
          "parameters": {
            "name": {
              "location": "path",
              "required": true,
              "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}`, where device is the unique ID assigned to the Device.",
              "pattern": "^devices/[^/]+$",
              "type": "string"
            }
          },
          "description": "Cancels an unfinished device wipe. This operation can be used to cancel device wipe in the gap between the wipe operation returning success and the device being wiped. This operation is possible when the device is in a \"pending wipe\" state. The device enters the \"pending wipe\" state when a wipe device command is issued, but has not yet been sent to the device. The cancel wipe will fail if the wipe command has already been issued to the device.",
          "httpMethod": "POST",
          "parameterOrder": [
            "name"
          ],
          "id": "cloudidentity.devices.cancelWipe",
          "flatPath": "v1/devices/{devicesId}:cancelWipe"
        },
        "list": {
          "response": {
            "$ref": "GoogleAppsCloudidentityDevicesV1ListDevicesResponse"
          },
          "description": "Lists/Searches devices.",
          "id": "cloudidentity.devices.list",
          "path": "v1/devices",
          "parameterOrder": [],
          "flatPath": "v1/devices",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.devices",
            "https://www.googleapis.com/auth/cloud-identity.devices.readonly"
          ],
          "parameters": {
            "customer": {
              "location": "query",
              "type": "string",
              "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer in the format: `customers/{customer}`, where customer is the customer to whom the device belongs. If you're using this API for your own organization, use `customers/my_customer`. If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs."
            },
            "orderBy": {
              "description": "Optional. Order specification for devices in the response. Only one of the following field names may be used to specify the order: `create_time`, `last_sync_time`, `model`, `os_version`, `device_type` and `serial_number`. `desc` may be specified optionally at the end to specify results to be sorted in descending order. Default order is ascending.",
              "location": "query",
              "type": "string"
            },
            "pageSize": {
              "description": "Optional. The maximum number of Devices to return. If unspecified, at most 20 Devices will be returned. The maximum value is 100; values above 100 will be coerced to 100.",
              "type": "integer",
              "location": "query",
              "format": "int32"
            },
            "pageToken": {
              "description": "Optional. A page token, received from a previous `ListDevices` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListDevices` must match the call that provided the page token.",
              "location": "query",
              "type": "string"
            },
            "view": {
              "type": "string",
              "enum": [
                "VIEW_UNSPECIFIED",
                "COMPANY_INVENTORY",
                "USER_ASSIGNED_DEVICES"
              ],
              "location": "query",
              "description": "Optional. The view to use for the List request.",
              "enumDescriptions": [
                "Default value. The value is unused.",
                "This view contains all devices imported by the company admin. Each device in the response contains all information specified by the company admin when importing the device (i.e. asset tags). This includes devices that may be unassigned or assigned to users.",
                "This view contains all devices with at least one user registered on the device. Each device in the response contains all device information, except for asset tags."
              ]
            },
            "filter": {
              "location": "query",
              "type": "string",
              "description": "Optional. Additional restrictions when fetching list of devices. For a list of search fields, refer to [Mobile device search fields](https://developers.google.com/admin-sdk/directory/v1/search-operators). Multiple search fields are separated by the space character."
            }
          },
          "httpMethod": "GET"
        },
        "delete": {
          "flatPath": "v1/devices/{devicesId}",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.devices"
          ],
          "path": "v1/{+name}",
          "id": "cloudidentity.devices.delete",
          "parameterOrder": [
            "name"
          ],
          "description": "Deletes the specified device.",
          "response": {
            "$ref": "Operation"
          },
          "httpMethod": "DELETE",
          "parameters": {
            "name": {
              "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}`, where device is the unique ID assigned to the Device.",
              "type": "string",
              "pattern": "^devices/[^/]+$",
              "required": true,
              "location": "path"
            },
            "customer": {
              "type": "string",
              "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
              "location": "query"
            }
          }
        },
        "wipe": {
          "flatPath": "v1/devices/{devicesId}:wipe",
          "path": "v1/{+name}:wipe",
          "id": "cloudidentity.devices.wipe",
          "request": {
            "$ref": "GoogleAppsCloudidentityDevicesV1WipeDeviceRequest"
          },
          "description": "Wipes all data on the specified device.",
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "Operation"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.devices"
          ],
          "httpMethod": "POST",
          "parameters": {
            "name": {
              "required": true,
              "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
              "type": "string",
              "location": "path",
              "pattern": "^devices/[^/]+$"
            }
          }
        }
      }
    },
    "allowlistedDomains": {
      "methods": {
        "get": {
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.allowlisteddomains",
            "https://www.googleapis.com/auth/cloud-identity.allowlisteddomains.readonly"
          ],
          "response": {
            "$ref": "AllowlistedDomain"
          },
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "pattern": "^allowlistedDomains/[^/]+$",
              "description": "Required. Specifies the [resource name](https://google.aip.dev/122) of the domain to retrieve.",
              "required": true,
              "location": "path",
              "type": "string"
            }
          },
          "id": "cloudidentity.allowlistedDomains.get",
          "parameterOrder": [
            "name"
          ],
          "description": "Retrieves a specific domain from the allowlist.",
          "flatPath": "v1/allowlistedDomains/{allowlistedDomainsId}",
          "path": "v1/{+name}"
        },
        "create": {
          "request": {
            "$ref": "AllowlistedDomain"
          },
          "httpMethod": "POST",
          "parameters": {},
          "response": {
            "$ref": "Operation"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.allowlisteddomains"
          ],
          "flatPath": "v1/allowlistedDomains",
          "parameterOrder": [],
          "path": "v1/allowlistedDomains",
          "id": "cloudidentity.allowlistedDomains.create",
          "description": "Adds a domain to the allowlist."
        },
        "list": {
          "httpMethod": "GET",
          "parameterOrder": [],
          "parameters": {
            "filter": {
              "location": "query",
              "type": "string",
              "description": "Optional. Provides an optional filter for list results. Currently, only exact matches on the domain are supported, such as \"domain = 'google.com'\", with no composite conditions."
            },
            "pageSize": {
              "description": "Optional. Specifies the requested page size. If unspecified, the service returns at most 5000 domains. The maximum value is 5000; values above 5000 coerce to 5000. The limits can change over time.",
              "format": "int32",
              "type": "integer",
              "location": "query"
            },
            "pageToken": {
              "type": "string",
              "location": "query",
              "description": "Optional. Identifies a token from a previous page of results, if any."
            }
          },
          "flatPath": "v1/allowlistedDomains",
          "id": "cloudidentity.allowlistedDomains.list",
          "description": "Lists the domains in the allowlist.",
          "response": {
            "$ref": "ListAllowlistedDomainsResponse"
          },
          "path": "v1/allowlistedDomains",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.allowlisteddomains",
            "https://www.googleapis.com/auth/cloud-identity.allowlisteddomains.readonly"
          ]
        },
        "delete": {
          "httpMethod": "DELETE",
          "parameters": {
            "name": {
              "location": "path",
              "type": "string",
              "description": "Required. Specifies the [resource name](https://google.aip.dev/122) of the domain to delete.",
              "pattern": "^allowlistedDomains/[^/]+$",
              "required": true
            }
          },
          "description": "Removes a domain from the allowlist.",
          "flatPath": "v1/allowlistedDomains/{allowlistedDomainsId}",
          "parameterOrder": [
            "name"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.allowlisteddomains"
          ],
          "response": {
            "$ref": "Operation"
          },
          "path": "v1/{+name}",
          "id": "cloudidentity.allowlistedDomains.delete"
        }
      }
    },
    "policies": {
      "methods": {
        "create": {
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.policies"
          ],
          "path": "v1/policies",
          "description": "Create a policy.",
          "parameters": {},
          "id": "cloudidentity.policies.create",
          "flatPath": "v1/policies",
          "request": {
            "$ref": "Policy"
          },
          "response": {
            "$ref": "Operation"
          },
          "parameterOrder": []
        },
        "patch": {
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.policies"
          ],
          "request": {
            "$ref": "Policy"
          },
          "parameterOrder": [
            "name"
          ],
          "flatPath": "v1/policies/{policiesId}",
          "response": {
            "$ref": "Operation"
          },
          "description": "Update a policy.",
          "parameters": {
            "name": {
              "location": "path",
              "type": "string",
              "pattern": "^policies/[^/]+$",
              "description": "Output only. Identifier. The [resource name](https://cloud.google.com/apis/design/resource_names) of the Policy. Format: policies/{policy}.",
              "required": true
            }
          },
          "path": "v1/{+name}",
          "httpMethod": "PATCH",
          "id": "cloudidentity.policies.patch"
        },
        "get": {
          "parameterOrder": [
            "name"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.policies",
            "https://www.googleapis.com/auth/cloud-identity.policies.readonly"
          ],
          "description": "Get a policy.",
          "parameters": {
            "name": {
              "required": true,
              "description": "Required. The name of the policy to retrieve. Format: `policies/{policy}`.",
              "pattern": "^policies/[^/]+$",
              "location": "path",
              "type": "string"
            }
          },
          "httpMethod": "GET",
          "response": {
            "$ref": "Policy"
          },
          "flatPath": "v1/policies/{policiesId}",
          "path": "v1/{+name}",
          "id": "cloudidentity.policies.get"
        },
        "list": {
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.policies",
            "https://www.googleapis.com/auth/cloud-identity.policies.readonly"
          ],
          "response": {
            "$ref": "ListPoliciesResponse"
          },
          "description": "List policies.",
          "parameterOrder": [],
          "id": "cloudidentity.policies.list",
          "path": "v1/policies",
          "parameters": {
            "pageSize": {
              "location": "query",
              "type": "integer",
              "description": "Optional. The maximum number of results to return. The service can return fewer than this number. If omitted or set to `0`, the default is `50` results per page. The maximum allowed value is `100`. `page_size` values greater than `100` default to `100`.",
              "format": "int32"
            },
            "pageToken": {
              "location": "query",
              "description": "Optional. The pagination token received from a prior call to PoliciesService.ListPolicies to retrieve the next page of results. When paginating, all other parameters provided to `ListPoliciesRequest` must match the call that provided the page token.",
              "type": "string"
            },
            "filter": {
              "location": "query",
              "description": "Optional. A CEL expression for filtering the results. Policies can be filtered using the expression in the following ways: - Filter by application: `setting.type.matches('^settings/gmail\\\\..*$')` - Filter by setting type: `setting.type.matches('^.*\\\\.service_status$')` - Filter by customer: `customer == \"customers/{customer}\"` Where `customer` is the `id` from the [Admin SDK `Customer` resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/customers). You may use `customers/my_customer` to specify your own organization. When no `customer` is mentioned it will be default to `customers/my_customer`. You may only filter on policies for a single customer at a time. The above clauses can be combined together in a single filter expression with the `&&` and `||` operators, like in the following example: `customer == \"customers/my_customer\" && ( setting.type.matches('^settings/gmail\\\\..*$') || setting.type.matches('^.*\\\\.service_status$') )`.",
              "type": "string"
            }
          },
          "httpMethod": "GET",
          "flatPath": "v1/policies"
        },
        "delete": {
          "httpMethod": "DELETE",
          "path": "v1/{+name}",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.policies"
          ],
          "parameters": {
            "name": {
              "pattern": "^policies/[^/]+$",
              "required": true,
              "location": "path",
              "description": "Required. The name of the policy to delete. Format: `policies/{policy}`.",
              "type": "string"
            }
          },
          "flatPath": "v1/policies/{policiesId}",
          "id": "cloudidentity.policies.delete",
          "response": {
            "$ref": "Operation"
          },
          "parameterOrder": [
            "name"
          ],
          "description": "Delete a policy."
        }
      }
    },
    "groups": {
      "methods": {
        "create": {
          "parameters": {
            "initialGroupConfig": {
              "enumDescriptions": [
                "Default. Should not be used.",
                "The end user making the request will be added as the initial owner of the `Group`.",
                "An empty group is created without any initial owners. This can only be used by admins of the domain."
              ],
              "description": "Optional. The initial configuration option for the `Group`.",
              "location": "query",
              "type": "string",
              "enum": [
                "INITIAL_GROUP_CONFIG_UNSPECIFIED",
                "WITH_INITIAL_OWNER",
                "EMPTY"
              ]
            }
          },
          "request": {
            "$ref": "Group"
          },
          "httpMethod": "POST",
          "path": "v1/groups",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.groups",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "flatPath": "v1/groups",
          "description": "Creates a Group.",
          "id": "cloudidentity.groups.create",
          "parameterOrder": [],
          "response": {
            "$ref": "Operation"
          }
        },
        "list": {
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.groups",
            "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "flatPath": "v1/groups",
          "path": "v1/groups",
          "description": "Lists the `Group` resources under a customer or namespace.",
          "response": {
            "$ref": "ListGroupsResponse"
          },
          "parameterOrder": [],
          "httpMethod": "GET",
          "id": "cloudidentity.groups.list",
          "parameters": {
            "view": {
              "description": "The level of detail to be returned. If unspecified, defaults to `View.BASIC`.",
              "enumDescriptions": [
                "Default. Should not be used.",
                "Only basic resource information is returned.",
                "All resource information is returned."
              ],
              "location": "query",
              "type": "string",
              "enum": [
                "VIEW_UNSPECIFIED",
                "BASIC",
                "FULL"
              ]
            },
            "pageSize": {
              "type": "integer",
              "description": "The maximum number of results to return. Note that the number of results returned may be less than this value even if there are more available results. To fetch all results, clients must continue calling this method repeatedly until the response no longer contains a `next_page_token`. If unspecified, defaults to 200 for `View.BASIC` and to 50 for `View.FULL`. Must not be greater than 1000 for `View.BASIC` or 500 for `View.FULL`.",
              "location": "query",
              "format": "int32"
            },
            "parent": {
              "location": "query",
              "type": "string",
              "description": "Required. The parent resource under which to list all `Group` resources. Must be of the form `identitysources/{identity_source}` for external- identity-mapped groups or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)"
            },
            "pageToken": {
              "description": "The `next_page_token` value returned from a previous list request, if any.",
              "location": "query",
              "type": "string"
            }
          }
        },
        "patch": {
          "description": "Updates a `Group`.",
          "path": "v1/{+name}",
          "flatPath": "v1/groups/{groupsId}",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.groups",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "request": {
            "$ref": "Group"
          },
          "id": "cloudidentity.groups.patch",
          "response": {
            "$ref": "Operation"
          },
          "parameters": {
            "updateMask": {
              "format": "google-fieldmask",
              "location": "query",
              "description": "Required. The names of fields to update. May only contain the following field names: `display_name`, `description`, `labels`.",
              "type": "string"
            },
            "name": {
              "pattern": "^groups/[^/]+$",
              "location": "path",
              "type": "string",
              "required": true,
              "description": "Output only. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group}`."
            }
          },
          "httpMethod": "PATCH",
          "parameterOrder": [
            "name"
          ]
        },
        "lookup": {
          "id": "cloudidentity.groups.lookup",
          "response": {
            "$ref": "LookupGroupNameResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.groups",
            "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Looks up the [resource name](https://cloud.google.com/apis/design/resource_names) of a `Group` by its `EntityKey`.",
          "parameters": {
            "groupKey.id": {
              "description": "The ID of the entity. For Google-managed entities, the `id` should be the email address of an existing group or user. Email addresses need to adhere to [name guidelines for users and groups](https://support.google.com/a/answer/9193374). For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`.",
              "type": "string",
              "location": "query"
            },
            "groupKey.namespace": {
              "location": "query",
              "description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source}`.",
              "type": "string"
            }
          },
          "flatPath": "v1/groups:lookup",
          "path": "v1/groups:lookup",
          "parameterOrder": [],
          "httpMethod": "GET"
        },
        "getSecuritySettings": {
          "path": "v1/{+name}",
          "flatPath": "v1/groups/{groupsId}/securitySettings",
          "parameters": {
            "name": {
              "description": "Required. The security settings to retrieve. Format: `groups/{group_id}/securitySettings`",
              "required": true,
              "pattern": "^groups/[^/]+/securitySettings$",
              "location": "path",
              "type": "string"
            },
            "readMask": {
              "type": "string",
              "format": "google-fieldmask",
              "location": "query",
              "description": "Field-level read mask of which fields to return. \"*\" returns all fields. If not specified, all fields will be returned. May only contain the following field: `member_restriction`."
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.groups",
            "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "httpMethod": "GET",
          "parameterOrder": [
            "name"
          ],
          "id": "cloudidentity.groups.getSecuritySettings",
          "description": "Get Security Settings",
          "response": {
            "$ref": "SecuritySettings"
          }
        },
        "get": {
          "id": "cloudidentity.groups.get",
          "parameters": {
            "name": {
              "location": "path",
              "pattern": "^groups/[^/]+$",
              "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group` to retrieve. Must be of the form `groups/{group}`.",
              "type": "string",
              "required": true
            }
          },
          "httpMethod": "GET",
          "flatPath": "v1/groups/{groupsId}",
          "description": "Retrieves a `Group`.",
          "parameterOrder": [
            "name"
          ],
          "path": "v1/{+name}",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.groups",
            "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "response": {
            "$ref": "Group"
          }
        },
        "delete": {
          "response": {
            "$ref": "Operation"
          },
          "description": "Deletes a `Group`.",
          "parameters": {
            "name": {
              "type": "string",
              "location": "path",
              "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group` to retrieve. Must be of the form `groups/{group}`.",
              "pattern": "^groups/[^/]+$",
              "required": true
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.groups",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "httpMethod": "DELETE",
          "parameterOrder": [
            "name"
          ],
          "flatPath": "v1/groups/{groupsId}",
          "path": "v1/{+name}",
          "id": "cloudidentity.groups.delete"
        },
        "search": {
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.groups",
            "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "parameterOrder": [],
          "response": {
            "$ref": "SearchGroupsResponse"
          },
          "id": "cloudidentity.groups.search",
          "parameters": {
            "pageToken": {
              "description": "The `next_page_token` value returned from a previous search request, if any.",
              "location": "query",
              "type": "string"
            },
            "query": {
              "description": "Required. The search query. * Must be specified in [Common Expression Language](https://opensource.google/projects/cel). See [CEL Introduction](https://github.com/google/cel-spec/blob/master/doc/intro.md) for CEL syntax usage and examples. * Must contain equality operators on the parent, e.g. `parent == 'customers/{customer_id}'`. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793) * Can contain optional inclusion operators on `labels` such as `'cloudidentity.googleapis.com/groups.discussion_forum' in labels`). * Can contain an optional equality operator on `domain_name`. e.g. `domain_name == 'examplepetstore.com'` * Can contain optional `startsWith/contains/equality` operators on `group_key`, e.g. `group_key.startsWith('dev')`, `group_key.contains('dev'), group_key == 'dev@examplepetstore.com'` * Can contain optional `startsWith/contains/equality` operators on `display_name`, such as `display_name.startsWith('dev')` , `display_name.contains('dev')`, `display_name == 'dev'` Examples: * Search for all discussion forums under a customer: `parent == 'customers/C046psxkn' && 'cloudidentity.googleapis.com/groups.discussion_forum' in labels` * Search for groups with key starting with 'sales': `parent == 'customers/C046psxkn' && group_key.startsWith('sales')` * Search for groups with display name containing 'test': `parent == 'customers/C046psxkn' && display_name.contains('test')`",
              "type": "string",
              "location": "query"
            },
            "pageSize": {
              "description": "The maximum number of results to return. Note that the number of results returned may be less than this value even if there are more available results. To fetch all results, clients must continue calling this method repeatedly until the response no longer contains a `next_page_token`. If unspecified, defaults to 200 for `GroupView.BASIC` and 50 for `GroupView.FULL`. Must not be greater than 1000 for `GroupView.BASIC` or 500 for `GroupView.FULL`.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            },
            "view": {
              "location": "query",
              "type": "string",
              "enum": [
                "VIEW_UNSPECIFIED",
                "BASIC",
                "FULL"
              ],
              "enumDescriptions": [
                "Default. Should not be used.",
                "Only basic resource information is returned.",
                "All resource information is returned."
              ],
              "description": "The level of detail to be returned. If unspecified, defaults to `View.BASIC`."
            }
          },
          "httpMethod": "GET",
          "description": "Searches for `Group` resources matching a specified query.",
          "flatPath": "v1/groups:search",
          "path": "v1/groups:search"
        },
        "updateSecuritySettings": {
          "id": "cloudidentity.groups.updateSecuritySettings",
          "parameterOrder": [
            "name"
          ],
          "path": "v1/{+name}",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.groups",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Update Security Settings",
          "flatPath": "v1/groups/{groupsId}/securitySettings",
          "request": {
            "$ref": "SecuritySettings"
          },
          "response": {
            "$ref": "Operation"
          },
          "parameters": {
            "name": {
              "location": "path",
              "type": "string",
              "description": "Output only. The resource name of the security settings. Shall be of the form `groups/{group_id}/securitySettings`.",
              "pattern": "^groups/[^/]+/securitySettings$",
              "required": true
            },
            "updateMask": {
              "location": "query",
              "format": "google-fieldmask",
              "description": "Required. The fully-qualified names of fields to update. May only contain the following field: `member_restriction.query`.",
              "type": "string"
            }
          },
          "httpMethod": "PATCH"
        }
      },
      "resources": {
        "memberships": {
          "methods": {
            "searchTransitiveGroups": {
              "parameterOrder": [
                "parent"
              ],
              "id": "cloudidentity.groups.memberships.searchTransitiveGroups",
              "path": "v1/{+parent}/memberships:searchTransitiveGroups",
              "description": "Search transitive groups of a member. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. If the account of the member is not one of these, a 403 (PERMISSION_DENIED) HTTP status code will be returned. A transitive group is any group that has a direct or indirect membership to the member. Actor must have view permissions all transitive groups.",
              "flatPath": "v1/groups/{groupsId}/memberships:searchTransitiveGroups",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "SearchTransitiveGroupsResponse"
              },
              "httpMethod": "GET",
              "parameters": {
                "pageToken": {
                  "description": "The `next_page_token` value returned from a previous list request, if any.",
                  "type": "string",
                  "location": "query"
                },
                "query": {
                  "type": "string",
                  "location": "query",
                  "description": "Required. A CEL expression that MUST include member specification AND label(s). This is a `required` field. Users can search on label attributes of groups. CONTAINS match ('in') is supported on labels. Identity-mapped groups are uniquely identified by both a `member_key_id` and a `member_key_namespace`, which requires an additional query input: `member_key_namespace`. Example query: `member_key_id == 'member_key_id_value' && in labels` Query may optionally contain equality operators on the parent of the group restricting the search within a particular customer, e.g. `parent == 'customers/{customer_id}'`. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). This filtering is only supported for Admins with groups read permissions on the input customer. Example query: `member_key_id == 'member_key_id_value' && in labels && parent == 'customers/C046psxkn'`"
                },
                "parent": {
                  "type": "string",
                  "pattern": "^groups/[^/]+$",
                  "required": true,
                  "location": "path",
                  "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: `groups/{group}`, where `group` is always '-' as this API will search across all groups for a given member."
                },
                "pageSize": {
                  "type": "integer",
                  "format": "int32",
                  "description": "The default page size is 200 (max 1000).",
                  "location": "query"
                }
              }
            },
            "list": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+parent}/memberships",
              "response": {
                "$ref": "ListMembershipsResponse"
              },
              "httpMethod": "GET",
              "parameters": {
                "pageToken": {
                  "description": "The `next_page_token` value returned from a previous search request, if any.",
                  "type": "string",
                  "location": "query"
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "type": "integer",
                  "description": "The maximum number of results to return. Note that the number of results returned may be less than this value even if there are more available results. To fetch all results, clients must continue calling this method repeatedly until the response no longer contains a `next_page_token`. If unspecified, defaults to 200 for `GroupView.BASIC` and to 50 for `GroupView.FULL`. Must not be greater than 1000 for `GroupView.BASIC` or 500 for `GroupView.FULL`."
                },
                "view": {
                  "description": "The level of detail to be returned. If unspecified, defaults to `View.BASIC`.",
                  "location": "query",
                  "type": "string",
                  "enum": [
                    "VIEW_UNSPECIFIED",
                    "BASIC",
                    "FULL"
                  ],
                  "enumDescriptions": [
                    "Default. Should not be used.",
                    "Only basic resource information is returned.",
                    "All resource information is returned."
                  ]
                },
                "parent": {
                  "type": "string",
                  "description": "Required. The parent `Group` resource under which to lookup the `Membership` name. Must be of the form `groups/{group}`.",
                  "pattern": "^groups/[^/]+$",
                  "required": true,
                  "location": "path"
                }
              },
              "description": "Lists the `Membership`s within a `Group`.",
              "flatPath": "v1/groups/{groupsId}/memberships",
              "id": "cloudidentity.groups.memberships.list",
              "parameterOrder": [
                "parent"
              ]
            },
            "getMembershipGraph": {
              "description": "Get a membership graph of just a member or both a member and a group. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. If the account of the member is not one of these, a 403 (PERMISSION_DENIED) HTTP status code will be returned. Given a member, the response will contain all membership paths from the member. Given both a group and a member, the response will contain all membership paths between the group and the member.",
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "Operation"
              },
              "path": "v1/{+parent}/memberships:getMembershipGraph",
              "id": "cloudidentity.groups.memberships.getMembershipGraph",
              "flatPath": "v1/groups/{groupsId}/memberships:getMembershipGraph",
              "httpMethod": "GET",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameters": {
                "query": {
                  "location": "query",
                  "description": "Required. A CEL expression that MUST include member specification AND label(s). Certain groups are uniquely identified by both a 'member_key_id' and a 'member_key_namespace', which requires an additional query input: 'member_key_namespace'. Example query: `member_key_id == 'member_key_id_value' && in labels`",
                  "type": "string"
                },
                "parent": {
                  "description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: `groups/{group}`, where `group` is the unique ID assigned to the Group to which the Membership belongs to. group can be a wildcard collection id \"-\". When a group is specified, the membership graph will be constrained to paths between the member (defined in the query) and the parent. If a wildcard collection is provided, all membership paths connected to the member will be returned.",
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "pattern": "^groups/[^/]+$"
                }
              }
            },
            "create": {
              "id": "cloudidentity.groups.memberships.create",
              "request": {
                "$ref": "Membership"
              },
              "httpMethod": "POST",
              "description": "Creates a `Membership`.",
              "path": "v1/{+parent}/memberships",
              "parameters": {
                "parent": {
                  "type": "string",
                  "required": true,
                  "description": "Required. The parent `Group` resource under which to create the `Membership`. Must be of the form `groups/{group}`.",
                  "location": "path",
                  "pattern": "^groups/[^/]+$"
                }
              },
              "response": {
                "$ref": "Operation"
              },
              "flatPath": "v1/groups/{groupsId}/memberships",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "parent"
              ]
            },
            "delete": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Operation"
              },
              "path": "v1/{+name}",
              "httpMethod": "DELETE",
              "id": "cloudidentity.groups.memberships.delete",
              "description": "Deletes a `Membership`.",
              "parameters": {
                "name": {
                  "type": "string",
                  "location": "path",
                  "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership` to delete. Must be of the form `groups/{group}/memberships/{membership}`",
                  "required": true,
                  "pattern": "^groups/[^/]+/memberships/[^/]+$"
                }
              },
              "flatPath": "v1/groups/{groupsId}/memberships/{membershipsId}"
            },
            "checkTransitiveMembership": {
              "path": "v1/{+parent}/memberships:checkTransitiveMembership",
              "description": "Check a potential member for membership in a group. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. If the account of the member is not one of these, a 403 (PERMISSION_DENIED) HTTP status code will be returned. A member has membership to a group as long as there is a single viewable transitive membership between the group and the member. The actor must have view permissions to at least one transitive membership between the member and group.",
              "flatPath": "v1/groups/{groupsId}/memberships:checkTransitiveMembership",
              "parameterOrder": [
                "parent"
              ],
              "id": "cloudidentity.groups.memberships.checkTransitiveMembership",
              "response": {
                "$ref": "CheckTransitiveMembershipResponse"
              },
              "parameters": {
                "query": {
                  "location": "query",
                  "type": "string",
                  "description": "Required. A CEL expression that MUST include member specification. This is a `required` field. Certain groups are uniquely identified by both a 'member_key_id' and a 'member_key_namespace', which requires an additional query input: 'member_key_namespace'. Example query: `member_key_id == 'member_key_id_value'`"
                },
                "parent": {
                  "required": true,
                  "pattern": "^groups/[^/]+$",
                  "location": "path",
                  "type": "string",
                  "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to check the transitive membership in. Format: `groups/{group}`, where `group` is the unique id assigned to the Group to which the Membership belongs to."
                }
              },
              "httpMethod": "GET",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "get": {
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Membership"
              },
              "id": "cloudidentity.groups.memberships.get",
              "description": "Retrieves a `Membership`.",
              "parameters": {
                "name": {
                  "required": true,
                  "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership` to retrieve. Must be of the form `groups/{group}/memberships/{membership}`.",
                  "type": "string",
                  "pattern": "^groups/[^/]+/memberships/[^/]+$",
                  "location": "path"
                }
              },
              "path": "v1/{+name}",
              "httpMethod": "GET",
              "flatPath": "v1/groups/{groupsId}/memberships/{membershipsId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "lookup": {
              "flatPath": "v1/groups/{groupsId}/memberships:lookup",
              "parameters": {
                "memberKey.id": {
                  "description": "The ID of the entity. For Google-managed entities, the `id` should be the email address of an existing group or user. Email addresses need to adhere to [name guidelines for users and groups](https://support.google.com/a/answer/9193374). For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`.",
                  "type": "string",
                  "location": "query"
                },
                "parent": {
                  "description": "Required. The parent `Group` resource under which to lookup the `Membership` name. Must be of the form `groups/{group}`.",
                  "pattern": "^groups/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "memberKey.namespace": {
                  "location": "query",
                  "description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source}`.",
                  "type": "string"
                }
              },
              "path": "v1/{+parent}/memberships:lookup",
              "description": "Looks up the [resource name](https://cloud.google.com/apis/design/resource_names) of a `Membership` by its `EntityKey`.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "GET",
              "id": "cloudidentity.groups.memberships.lookup",
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "LookupMembershipNameResponse"
              }
            },
            "searchDirectGroups": {
              "path": "v1/{+parent}/memberships:searchDirectGroups",
              "flatPath": "v1/groups/{groupsId}/memberships:searchDirectGroups",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "location": "path",
                  "pattern": "^groups/[^/]+$",
                  "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: groups/{group_id}, where group_id is always '-' as this API will search across all groups for a given member.",
                  "required": true,
                  "type": "string"
                },
                "query": {
                  "type": "string",
                  "description": "Required. A CEL expression that MUST include member specification AND label(s). Users can search on label attributes of groups. CONTAINS match ('in') is supported on labels. Identity-mapped groups are uniquely identified by both a `member_key_id` and a `member_key_namespace`, which requires an additional query input: `member_key_namespace`. Example query: `member_key_id == 'member_key_id_value' && 'label_value' in labels`",
                  "location": "query"
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "description": "The default page size is 200 (max 1000).",
                  "type": "integer"
                },
                "orderBy": {
                  "description": "The ordering of membership relation for the display name or email in the response. The syntax for this field can be found at https://cloud.google.com/apis/design/design_patterns#sorting_order. Example: Sort by the ascending display name: order_by=\"group_name\" or order_by=\"group_name asc\". Sort by the descending display name: order_by=\"group_name desc\". Sort by the ascending group key: order_by=\"group_key\" or order_by=\"group_key asc\". Sort by the descending group key: order_by=\"group_key desc\".",
                  "location": "query",
                  "type": "string"
                },
                "pageToken": {
                  "type": "string",
                  "description": "The `next_page_token` value returned from a previous list request, if any",
                  "location": "query"
                }
              },
              "id": "cloudidentity.groups.memberships.searchDirectGroups",
              "description": "Searches direct groups of a member. Groups for which the actor does not have the permission to view memberships are silently filtered out.",
              "response": {
                "$ref": "SearchDirectGroupsResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "searchTransitiveMemberships": {
              "parameters": {
                "pageSize": {
                  "type": "integer",
                  "location": "query",
                  "format": "int32",
                  "description": "The default page size is 200 (max 1000)."
                },
                "pageToken": {
                  "type": "string",
                  "description": "The `next_page_token` value returned from a previous list request, if any.",
                  "location": "query"
                },
                "parent": {
                  "required": true,
                  "type": "string",
                  "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: `groups/{group}`, where `group` is the unique ID assigned to the Group.",
                  "pattern": "^groups/[^/]+$",
                  "location": "path"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "httpMethod": "GET",
              "response": {
                "$ref": "SearchTransitiveMembershipsResponse"
              },
              "path": "v1/{+parent}/memberships:searchTransitiveMemberships",
              "flatPath": "v1/groups/{groupsId}/memberships:searchTransitiveMemberships",
              "id": "cloudidentity.groups.memberships.searchTransitiveMemberships",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-identity.groups.readonly",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Search transitive memberships of a group. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. If the account of the group is not one of these, a 403 (PERMISSION_DENIED) HTTP status code will be returned. A transitive membership is any direct or indirect membership of a group. Actor must have view permissions to all transitive memberships."
            },
            "modifyMembershipRoles": {
              "description": "Modifies the `MembershipRole`s of a `Membership`.",
              "id": "cloudidentity.groups.memberships.modifyMembershipRoles",
              "flatPath": "v1/groups/{groupsId}/memberships/{membershipsId}:modifyMembershipRoles",
              "path": "v1/{+name}:modifyMembershipRoles",
              "response": {
                "$ref": "ModifyMembershipRolesResponse"
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "ModifyMembershipRolesRequest"
              },
              "httpMethod": "POST",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.groups",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "pattern": "^groups/[^/]+/memberships/[^/]+$",
                  "type": "string",
                  "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership` whose roles are to be modified. Must be of the form `groups/{group}/memberships/{membership}`."
                }
              }
            }
          }
        }
      }
    },
    "customers": {
      "resources": {
        "userinvitations": {
          "methods": {
            "send": {
              "httpMethod": "POST",
              "id": "cloudidentity.customers.userinvitations.send",
              "request": {
                "$ref": "SendUserInvitationRequest"
              },
              "parameters": {
                "name": {
                  "pattern": "^customers/[^/]+/userinvitations/[^/]+$",
                  "required": true,
                  "type": "string",
                  "description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
                  "location": "path"
                }
              },
              "description": "Sends a UserInvitation to email. If the `UserInvitation` does not exist for this request and it is a valid request, the request creates a `UserInvitation`. **Note:** The `get` and `list` methods have a 48-hour delay where newly-created consumer accounts will not appear in the results. You can still send a `UserInvitation` to those accounts if you know the unmanaged email address and IsInvitableUser==True.",
              "flatPath": "v1/customers/{customersId}/userinvitations/{userinvitationsId}:send",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Operation"
              },
              "path": "v1/{+name}:send"
            },
            "list": {
              "description": "Retrieves a list of UserInvitation resources. **Note:** New consumer accounts with the customer's verified domain created within the previous 48 hours will not appear in the result. This delay also applies to newly-verified domains.",
              "parameterOrder": [
                "parent"
              ],
              "flatPath": "v1/customers/{customersId}/userinvitations",
              "id": "cloudidentity.customers.userinvitations.list",
              "path": "v1/{+parent}/userinvitations",
              "httpMethod": "GET",
              "parameters": {
                "orderBy": {
                  "location": "query",
                  "description": "Optional. The sort order of the list results. You can sort the results in descending order based on either email or last update timestamp but not both, using `order_by=\"email desc\"`. Currently, sorting is supported for `update_time asc`, `update_time desc`, `email asc`, and `email desc`. If not specified, results will be returned based on `email asc` order.",
                  "type": "string"
                },
                "filter": {
                  "location": "query",
                  "description": "Optional. A query string for filtering `UserInvitation` results by their current state, in the format: `\"state=='invited'\"`.",
                  "type": "string"
                },
                "pageToken": {
                  "description": "Optional. A page token, received from a previous `ListUserInvitations` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListBooks` must match the call that provided the page token.",
                  "type": "string",
                  "location": "query"
                },
                "pageSize": {
                  "format": "int32",
                  "description": "Optional. The maximum number of UserInvitation resources to return. If unspecified, at most 100 resources will be returned. The maximum value is 200; values above 200 will be set to 200.",
                  "location": "query",
                  "type": "integer"
                },
                "parent": {
                  "required": true,
                  "type": "string",
                  "pattern": "^customers/[^/]+$",
                  "location": "path",
                  "description": "Required. The customer ID of the Google Workspace or Cloud Identity account the UserInvitation resources are associated with."
                }
              },
              "response": {
                "$ref": "ListUserInvitationsResponse"
              }
            },
            "get": {
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "type": "string",
                  "pattern": "^customers/[^/]+/userinvitations/[^/]+$",
                  "required": true,
                  "description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
                  "location": "path"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "UserInvitation"
              },
              "id": "cloudidentity.customers.userinvitations.get",
              "path": "v1/{+name}",
              "flatPath": "v1/customers/{customersId}/userinvitations/{userinvitationsId}",
              "description": "Retrieves a UserInvitation resource. **Note:** New consumer accounts with the customer's verified domain created within the previous 48 hours will not appear in the result. This delay also applies to newly-verified domains."
            },
            "cancel": {
              "request": {
                "$ref": "CancelUserInvitationRequest"
              },
              "response": {
                "$ref": "Operation"
              },
              "parameterOrder": [
                "name"
              ],
              "parameters": {
                "name": {
                  "type": "string",
                  "pattern": "^customers/[^/]+/userinvitations/[^/]+$",
                  "required": true,
                  "location": "path",
                  "description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`"
                }
              },
              "id": "cloudidentity.customers.userinvitations.cancel",
              "httpMethod": "POST",
              "flatPath": "v1/customers/{customersId}/userinvitations/{userinvitationsId}:cancel",
              "path": "v1/{+name}:cancel",
              "description": "Cancels a UserInvitation that was already sent."
            },
            "isInvitableUser": {
              "path": "v1/{+name}:isInvitableUser",
              "id": "cloudidentity.customers.userinvitations.isInvitableUser",
              "response": {
                "$ref": "IsInvitableUserResponse"
              },
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "GET",
              "description": "Verifies whether a user account is eligible to receive a UserInvitation (is an unmanaged account). Eligibility is based on the following criteria: * the email address is a consumer account and it's the primary email address of the account, and * the domain of the email address matches an existing verified Google Workspace or Cloud Identity domain If both conditions are met, the user is eligible. **Note:** This method is not supported for Workspace Essentials customers.",
              "flatPath": "v1/customers/{customersId}/userinvitations/{userinvitationsId}:isInvitableUser",
              "parameters": {
                "name": {
                  "type": "string",
                  "pattern": "^customers/[^/]+/userinvitations/[^/]+$",
                  "description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
                  "required": true,
                  "location": "path"
                }
              }
            }
          }
        }
      }
    },
    "inboundSamlSsoProfiles": {
      "resources": {
        "idpCredentials": {
          "methods": {
            "list": {
              "response": {
                "$ref": "ListIdpCredentialsResponse"
              },
              "description": "Returns a list of IdpCredentials in an InboundSamlSsoProfile.",
              "parameterOrder": [
                "parent"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.inboundsso",
                "https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.list",
              "path": "v1/{+parent}/idpCredentials",
              "flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials",
              "parameters": {
                "parent": {
                  "location": "path",
                  "type": "string",
                  "required": true,
                  "pattern": "^inboundSamlSsoProfiles/[^/]+$",
                  "description": "Required. The parent, which owns this collection of `IdpCredential`s. Format: `inboundSamlSsoProfiles/{sso_profile_id}`"
                },
                "pageSize": {
                  "location": "query",
                  "format": "int32",
                  "description": "The maximum number of `IdpCredential`s to return. The service may return fewer than this value.",
                  "type": "integer"
                },
                "pageToken": {
                  "type": "string",
                  "description": "A page token, received from a previous `ListIdpCredentials` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListIdpCredentials` must match the call that provided the page token.",
                  "location": "query"
                }
              },
              "httpMethod": "GET"
            },
            "get": {
              "flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials/{idpCredentialsId}",
              "parameters": {
                "name": {
                  "location": "path",
                  "type": "string",
                  "pattern": "^inboundSamlSsoProfiles/[^/]+/idpCredentials/[^/]+$",
                  "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the IdpCredential to retrieve. Format: `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credential_id}`",
                  "required": true
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.inboundsso",
                "https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "GET",
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "IdpCredential"
              },
              "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.get",
              "description": "Gets an IdpCredential."
            },
            "delete": {
              "response": {
                "$ref": "Operation"
              },
              "parameterOrder": [
                "name"
              ],
              "description": "Deletes an IdpCredential.",
              "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.delete",
              "parameters": {
                "name": {
                  "required": true,
                  "type": "string",
                  "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the IdpCredential to delete. Format: `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credential_id}`",
                  "location": "path",
                  "pattern": "^inboundSamlSsoProfiles/[^/]+/idpCredentials/[^/]+$"
                }
              },
              "httpMethod": "DELETE",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.inboundsso",
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials/{idpCredentialsId}"
            },
            "add": {
              "parameterOrder": [
                "parent"
              ],
              "request": {
                "$ref": "AddIdpCredentialRequest"
              },
              "parameters": {
                "parent": {
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "pattern": "^inboundSamlSsoProfiles/[^/]+$",
                  "description": "Required. The InboundSamlSsoProfile that owns the IdpCredential. Format: `inboundSamlSsoProfiles/{sso_profile_id}`"
                }
              },
              "description": "Adds an IdpCredential. Up to 2 credentials are allowed. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
              "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.add",
              "response": {
                "$ref": "Operation"
              },
              "httpMethod": "POST",
              "path": "v1/{+parent}/idpCredentials:add",
              "flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials:add",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-identity.inboundsso",
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            }
          }
        }
      },
      "methods": {
        "create": {
          "httpMethod": "POST",
          "request": {
            "$ref": "InboundSamlSsoProfile"
          },
          "parameterOrder": [],
          "parameters": {},
          "path": "v1/inboundSamlSsoProfiles",
          "id": "cloudidentity.inboundSamlSsoProfiles.create",
          "flatPath": "v1/inboundSamlSsoProfiles",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Creates an InboundSamlSsoProfile for a customer. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
          "response": {
            "$ref": "Operation"
          }
        },
        "delete": {
          "description": "Deletes an InboundSamlSsoProfile.",
          "httpMethod": "DELETE",
          "parameters": {
            "name": {
              "pattern": "^inboundSamlSsoProfiles/[^/]+$",
              "required": true,
              "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSamlSsoProfile to delete. Format: `inboundSamlSsoProfiles/{sso_profile_id}`",
              "type": "string",
              "location": "path"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}",
          "path": "v1/{+name}",
          "response": {
            "$ref": "Operation"
          },
          "parameterOrder": [
            "name"
          ],
          "id": "cloudidentity.inboundSamlSsoProfiles.delete"
        },
        "patch": {
          "parameterOrder": [
            "name"
          ],
          "path": "v1/{+name}",
          "response": {
            "$ref": "Operation"
          },
          "id": "cloudidentity.inboundSamlSsoProfiles.patch",
          "description": "Updates an InboundSamlSsoProfile. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
          "request": {
            "$ref": "InboundSamlSsoProfile"
          },
          "parameters": {
            "updateMask": {
              "description": "Required. The list of fields to be updated.",
              "location": "query",
              "format": "google-fieldmask",
              "type": "string"
            },
            "name": {
              "required": true,
              "type": "string",
              "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.",
              "pattern": "^inboundSamlSsoProfiles/[^/]+$",
              "location": "path"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "httpMethod": "PATCH",
          "flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}"
        },
        "list": {
          "parameters": {
            "filter": {
              "description": "A [Common Expression Language](https://github.com/google/cel-spec) expression to filter the results. The only supported filter is filtering by customer. For example: `customer==\"customers/C0123abc\"`. Omitting the filter or specifying a filter of `customer==\"customers/my_customer\"` will return the profiles for the customer that the caller (authenticated user) belongs to.",
              "type": "string",
              "location": "query"
            },
            "pageToken": {
              "description": "A page token, received from a previous `ListInboundSamlSsoProfiles` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundSamlSsoProfiles` must match the call that provided the page token.",
              "location": "query",
              "type": "string"
            },
            "pageSize": {
              "location": "query",
              "format": "int32",
              "type": "integer",
              "description": "The maximum number of InboundSamlSsoProfiles to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100. Requests with page_size greater than that will be silently interpreted as having this maximum value."
            }
          },
          "httpMethod": "GET",
          "path": "v1/inboundSamlSsoProfiles",
          "response": {
            "$ref": "ListInboundSamlSsoProfilesResponse"
          },
          "id": "cloudidentity.inboundSamlSsoProfiles.list",
          "description": "Lists InboundSamlSsoProfiles for a customer.",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "parameterOrder": [],
          "flatPath": "v1/inboundSamlSsoProfiles"
        },
        "get": {
          "scopes": [
            "https://www.googleapis.com/auth/cloud-identity.inboundsso",
            "https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Gets an InboundSamlSsoProfile.",
          "flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}",
          "id": "cloudidentity.inboundSamlSsoProfiles.get",
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "InboundSamlSsoProfile"
          },
          "httpMethod": "GET",
          "path": "v1/{+name}",
          "parameters": {
            "name": {
              "type": "string",
              "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSamlSsoProfile to get. Format: `inboundSamlSsoProfiles/{sso_profile_id}`",
              "required": true,
              "location": "path",
              "pattern": "^inboundSamlSsoProfiles/[^/]+$"
            }
          }
        }
      }
    }
  },
  "parameters": {
    "key": {
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "type": "string",
      "location": "query"
    },
    "quotaUser": {
      "location": "query",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "type": "string"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "location": "query",
      "default": "true"
    },
    "$.xgafv": {
      "description": "V1 error format.",
      "type": "string",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query"
    },
    "access_token": {
      "location": "query",
      "type": "string",
      "description": "OAuth access token."
    },
    "oauth_token": {
      "location": "query",
      "description": "OAuth 2.0 token for the current user.",
      "type": "string"
    },
    "callback": {
      "description": "JSONP",
      "type": "string",
      "location": "query"
    },
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "alt": {
      "location": "query",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "type": "string",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "default": "json",
      "description": "Data format for response."
    },
    "uploadType": {
      "type": "string",
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")."
    },
    "upload_protocol": {
      "location": "query",
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")."
    }
  },
  "version_module": true,
  "batchPath": "batch",
  "baseUrl": "https://cloudidentity.googleapis.com/",
  "id": "cloudidentity:v1",
  "fullyEncodeReservedExpansion": true,
  "version": "v1",
  "description": "API for provisioning and managing identity resources.",
  "ownerDomain": "google.com",
  "discoveryVersion": "v1",
  "title": "Cloud Identity API"
}
