Executar upsert de grupo

Namespace: microsoft.graph

Crie um novo objeto de grupo , caso não exista, ou atualize as propriedades de um objeto de grupo existente. Você pode criar ou atualizar os seguintes tipos de grupo:

  • Grupo do Microsoft 365 (grupo unificado)
  • Grupo de segurança

Por padrão, essa operação retorna apenas um subconjunto das propriedades de cada grupo. Para obter uma lista de propriedades retornadas por padrão, consulte a seção Propriedades do recurso de grupo . Para obter propriedades não retornadas por padrão, execute uma operação GET e especifique as propriedades em uma opção de consulta $select do OData.

Observação: para criar uma equipe, primeiro crie um grupo e, em seguida, adicione uma equipe a ele. Para obter mais informações, consulte Criar equipe.

Essa API está disponível nas seguintes implantações de nuvem nacional.

Serviço global Governo dos EUA L4 US Government L5 (DOD) China operada pela 21Vianet

Permissões

Escolha a(s) permissão(s) marcada(s) como menos privilegiada(s) para essa API. Use uma permissão ou permissões com privilégios mais altos somente se o aplicativo exigir. Para obter detalhes sobre permissões delegadas e de aplicativo, consulte Tipos de permissão. Para saber mais sobre essas permissões, consulte a referência de permissões.

Tipo de permissão Permissões menos privilegiadas Permissões com privilégios mais elevados
Delegado (conta corporativa ou de estudante) Group.ReadWrite.All Directory.ReadWrite.All
Delegado (conta pessoal da Microsoft) Sem suporte. Sem suporte.
Aplicativo Group.ReadWrite.All Directory.ReadWrite.All

Para que um aplicativo com a permissão Group.Create crie um grupo com proprietários ou membros, ele deve ter os privilégios para ler o tipo de objeto que deseja atribuir como proprietário ou membro do grupo. Portanto:

  • O aplicativo pode atribuir a si mesmo como proprietário ou membro do grupo.
  • Para criar o grupo com usuários como proprietários ou membros, o aplicativo deve ter pelo menos a permissão User.Read.All .
  • Para criar o grupo com outras entidades de serviço como proprietários ou membros, o aplicativo deve ter pelo menos a permissão Application.Read.All .
  • Para criar o grupo com usuários ou entidades de serviço como proprietários ou membros, o aplicativo deve ter pelo menos a permissão Directory.Read.All .

Solicitação HTTP

PATCH /groups(uniqueName='uniqueName')

Cabeçalhos de solicitação

Nome Descrição
Autorização {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização.
Content-Type application/json. Obrigatório.
Preferir create-if-missing. Necessário para o comportamento de upsert, caso contrário, a solicitação será tratada como uma operação de atualização.

Corpo da solicitação

No corpo da solicitação, forneça uma representação JSON do objeto de grupo.

A tabela a seguir lista as propriedades que são necessárias quando você cria o grupo. Especifique outras propriedades graváveis conforme necessário para seu grupo na criação ou atualização.

Propriedade Tipo Descrição
displayName Cadeia de caracteres O nome para exibição no catálogo de endereços do grupo. O comprimento máximo é de 256 caracteres. Obrigatório.
mailEnabled Boolean Definir como true para grupos habilitados para email. Obrigatório.
mailNickname String O alias de email do grupo, exclusivo para grupos do Microsoft 365 na organização. O comprimento máximo é de 64 caracteres. Esta propriedade pode conter apenas caracteres no conjunto de caracteres ASCII 0 - 127 , exceto os seguintes caracteres: @ () \ [] " ; : <> , SPACE. Obrigatório.
securityEnabled Boolean Definido como true para grupos habilitados para segurança, incluindo Microsoft 365 grupos. Obrigatório. Observação: Os grupos criados usando o centro de administração do Microsoft Entra ou o portal do Azure sempre têm securityEnabled definido inicialmente como true.

Importante

  • A criação de um grupo usando a permissão do aplicativo Group.Create sem especificar proprietários cria o grupo anonimamente e o grupo não é modificável. Adicione proprietários ao grupo ao criá-lo para especificar os proprietários que podem modificar o grupo.
  • A criação de um grupo do Microsoft 365 de forma programática com um contexto somente de aplicativo e sem especificar proprietários cria o grupo anonimamente. Se assim o fizer, o site associado do SharePoint Online só será criado automaticamente, após a execução de outras ações manuais.
  • Um usuário não administrador não pode adicionar a si mesmo à coleção de proprietários do grupo. Para obter mais informações, consulte o problema conhecido relacionado.
  • As seguintes propriedades não podem ser definidas na solicitação POST inicial e devem ser definidas em uma solicitação PATCH subsequente: accessType, allowExternalSenders, autoSubscribeNewMembers, hideFromAddressLists, hideFromOutlookClients, isFavorite, isSubscribedByMail, unseenConversationsCount, unseenCount, unseenMessagesCount.

Como o recurso de grupo dá suporte a extensões, você pode adicionar propriedades personalizadas com seus próprios dados para o grupo ao criá-lo.

Opções de groupTypes

Use a propriedade groupTypes para controlar o tipo de grupo e sua associação, conforme mostrad.

Tipo de grupo Associação atribuída Associação dinâmica
Microsoft 365 (também conhecido como grupo unificado) ["Unified"] ["Unified","DynamicMembership"]
Dinâmica [] (null) ["DynamicMembership"]

Resposta

Se um objeto com o uniqueName não existir, esse método retornará um código de 201 Created resposta e um novo objeto de grupo no corpo da resposta.

Se um objeto com uniqueName não existir e o Prefer: create-if-missing cabeçalho não for especificado, esse método retornará um código de 404 Not Found erro.

Se um objeto com o nome único já existir, esse método atualizará o objeto de grupo e retornará um código de 204 No Content resposta.

Exemplos

Exemplo 1: Criar um grupo do Microsoft 365 se ele não existir

O exemplo a seguir cria um grupo do Microsoft 365 porque não existe um grupo com o valor uniqueName especificado. Como os proprietários não são especificados, o usuário que está chamando é adicionado automaticamente como o proprietário do grupo.

Solicitação

PATCH https://graph.microsoft.com/v1.0/groups(uniqueName='uniqueName')
Content-type: application/json
Prefer: create-if-missing

{
  "description": "Self help community for golf",
  "displayName": "Golf Assist",
  "groupTypes": [
    "Unified"
  ],
  "mailEnabled": true,
  "mailNickname": "golfassist",
  "securityEnabled": false
}

Resposta

O exemplo a seguir mostra a resposta. O valor da propriedade preferredDataLocation foi herdado da localização de dados preferencial do criador do grupo.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups/$entity",
    "id": "45b7d2e7-b882-4a80-ba97-10b7a63b8fa4",
    "deletedDateTime": null,
    "classification": null,
    "createdDateTime": "2018-12-22T02:21:05Z",
    "description": "Self help community for golf",
    "displayName": "Golf Assist",
    "expirationDateTime": null,
    "groupTypes": [
        "Unified"
    ],
    "isAssignableToRole": null,
    "mail": "golfassist@contoso.com",
    "mailEnabled": true,
    "mailNickname": "golfassist",
    "membershipRule": null,
    "membershipRuleProcessingState": null,
    "onPremisesLastSyncDateTime": null,
    "onPremisesSecurityIdentifier": null,
    "onPremisesSyncEnabled": null,
    "preferredDataLocation": "CAN",
    "preferredLanguage": null,
    "proxyAddresses": [
        "SMTP:golfassist@contoso.onmicrosoft.com"
    ],
    "renewedDateTime": "2018-12-22T02:21:05Z",
    "resourceBehaviorOptions": [],
    "resourceProvisioningOptions": [],
    "securityEnabled": false,
    "securityIdentifier": "S-1-12-1-1753967289-1089268234-832641959-555555555",
    "theme": null,
    "visibility": "Public",
    "uniqueName": "uniqueName",
    "onPremisesProvisioningErrors": []
}

Exemplo 2: Criar um grupo de segurança com um proprietário e membros se ele não existir

O exemplo a seguir cria um grupo de segurança com um proprietário e membros especificados porque não existe um grupo com o valor uniqueName especificado. No máximo 20 relações, como proprietários e membros, podem ser adicionadas como parte da criação de grupo. Posteriormente, você pode adicionar vários outros membros usando a API de adicionar membro ou o envio em lote JSON.

Um usuário não administrador não pode adicionar a si mesmo à coleção de proprietários do grupo. Para obter mais informações, consulte o problema conhecido relacionado.

Solicitação

O exemplo a seguir mostra uma solicitação.

PATCH https://graph.microsoft.com/v1.0/groups(uniqueName='uniqueName')
Content-Type: application/json

{
  "description": "Group with designated owner and members",
  "displayName": "Operations group",
  "groupTypes": [
  ],
  "mailEnabled": false,
  "mailNickname": "operations2019",
  "securityEnabled": true,
  "owners@odata.bind": [
    "https://graph.microsoft.com/v1.0/users/26be1845-4119-4801-a799-aea79d09f1a2"
  ],
  "members@odata.bind": [
    "https://graph.microsoft.com/v1.0/users/ff7cb387-6688-423c-8188-3da9532a73cc",
    "https://graph.microsoft.com/v1.0/users/69456242-0067-49d3-ba96-9de6f2728e14"
  ]
}

Resposta

O exemplo a seguir mostra uma resposta bem-sucedida. Ele inclui apenas propriedades padrão. Posteriormente, você pode acessar as propriedades de navegação de grupo proprietários ou membros para verificar o proprietário ou membros. O valor da propriedade preferredDataLocation foi herdado da localização de dados preferencial do criador do grupo.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups/$entity",
    "@odata.id": "https://graph.microsoft.com/v2/84841066-274d-4ec0-a5c1-276be684bdd3/directoryObjects/1226170d-83d5-49b8-99ab-d1ab3d91333e/Microsoft.DirectoryServices.Group",
    "id": "1226170d-83d5-49b8-99ab-d1ab3d91333e",
    "deletedDateTime": null,
    "classification": null,
    "createdDateTime": "2021-09-21T07:14:44Z",
    "createdByAppId": "de8bc8b5-d9f9-48b1-a8ad-b748da725064",
    "organizationId": "84841066-274d-4ec0-a5c1-276be684bdd3",
    "description": "Group with designated owner and members",
    "displayName": "Operations group",
    "expirationDateTime": null,
    "groupTypes": [],
    "infoCatalogs": [],
    "isAssignableToRole": null,
    "mail": null,
    "mailEnabled": false,
    "mailNickname": "operations2019",
    "membershipRule": null,
    "membershipRuleProcessingState": null,
    "onPremisesDomainName": null,
    "onPremisesLastSyncDateTime": null,
    "onPremisesNetBiosName": null,
    "onPremisesSamAccountName": null,
    "onPremisesSecurityIdentifier": null,
    "onPremisesSyncEnabled": null,
    "preferredDataLocation": null,
    "preferredLanguage": null,
    "proxyAddresses": [],
    "renewedDateTime": "2021-09-21T07:14:44Z",
    "resourceBehaviorOptions": [],
    "resourceProvisioningOptions": [],
    "securityEnabled": true,
    "securityIdentifier": "S-1-12-1-304486157-1236829141-2882644889-1043566909",
    "theme": null,
    "uniqueName": "uniqueName",
    "visibility": null,
    "writebackConfiguration": {
        "isEnabled": null,
        "onPremisesGroupType": null
    },
    "onPremisesProvisioningErrors": []
}

Exemplo 3: Atualizar um grupo existente

Neste exemplo, o grupo especificado já existe, portanto, a operação é tratada como uma atualização.

Um usuário não administrador não pode adicionar a si mesmo à coleção de proprietários do grupo. Para obter mais informações, consulte o problema conhecido relacionado.

Solicitação

O exemplo a seguir mostra uma solicitação.

POST https://graph.microsoft.com/v1.0/groups
Content-Type: application/json

{
    "description": "Group assignable to a role",
    "displayName": "Role assignable group",
    "groupTypes": [
        "Unified"
    ],
    "isAssignableToRole": true,
    "mailEnabled": true,
    "securityEnabled": true,
    "mailNickname": "contosohelpdeskadministrators",
    "owners@odata.bind": [
        "https://graph.microsoft.com/v1.0/users/99e44b05-c10b-4e95-a523-e2732bbaba1e"
    ],
    "members@odata.bind": [
        "https://graph.microsoft.com/v1.0/users/6ea91a8d-e32e-41a1-b7bd-d2d185eed0e0",
        "https://graph.microsoft.com/v1.0/users/4562bcc8-c436-4f95-b7c0-4f8ce89dca5e"
    ]
}

Resposta

O exemplo a seguir mostra a resposta. O valor da propriedade preferredDataLocation foi herdado da localização de dados preferencial do criador do grupo.

HTTP/1.1 204 No Content