Grupo upsert

Namespace: microsoft.graph

Create um novo objeto de grupo se ele não existir ou atualizar 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 para 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 adicione uma equipe a ela. Para obter mais informações, consulte Create equipe.

Permissões

Escolha a permissão ou as permissões marcadas como menos privilegiadas para essa API. Use uma permissão ou permissões privilegiadas mais altas 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 privilegiadas mais altas
Delegado (conta corporativa ou de estudante) Group.ReadWrite.All Directory.ReadWrite.All
Delegado (conta pessoal da Microsoft) Sem suporte. Sem suporte.
Application Group.Create Directory.ReadWrite.All, Group.ReadWrite.All

Para um aplicativo com o Grupo. Create permissão para criar 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-se 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.
Content-Type application/json. Obrigatório.
Preferir create-if-missing. Necessário para um comportamento upsert, caso contrário, a solicitação é 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 necessárias ao criar 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. Essa propriedade pode conter apenas caracteres no conjunto de caracteres ASCII de 0 a 127, exceto o seguinte: @ () \ [] " ; : <> , SPACE. Obrigatório.
securityEnabled Boolean Definido como true para grupos habilitados para segurança, incluindo Microsoft 365 grupos. Obrigatório. Nota: Os grupos criados usando o centro de administração do Microsoft Entra ou o portal do Azure sempre têm securityEnabled inicialmente definido como true.

Importante

  • Criar um grupo usando a permissão de aplicativo Group.Create sem especificar proprietários criará o grupo anonimamente e o grupo não será modificável. Adicione proprietários ao grupo ao criá-lo para especificar os proprietários que podem modificar o grupo.
  • Ao criar um grupo do Microsoft 365 programaticamente com um contexto somente de aplicativo e sem especificar os proprietários, o grupo será criado 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.
  • As seguintes propriedades não podem ser definidas na solicitação post inicial e devem ser definidas em uma solicitação PATCH subsequente: allowExternalSenders, autoSubscribeNewMembers, hideFromAddressLists, hideFromOutlookClients, isSubscribedByMail, unseenCount.

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 for bem-sucedido, se o 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 o objeto com o uniqueName já existir, esse método atualizará o objeto de grupo e retornará um código de 204 No Content resposta.

Exemplos

Exemplo 1: Create 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 foram especificados, o usuário que fez a chamada é adicionado automaticamente como 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: Create 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 um grupo com o valor uniqueName especificado não existe. Observe que, no máximo, 20 relações, como proprietários e membros, podem ser adicionadas como parte da criação do grupo. Posteriormente, você pode adicionar vários membros adicionais usando a API de membro de adição ou o lote JSON.

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

Veja a seguir o exemplo de 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,
    "isManagementRestricted": 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.

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