Sample code for 30+ languages & platforms
Tcl

Create Group

See more Microsoft Group Examples

Create a new group as specified in the request body. You can create one of three types of groups:
  • Office 365 Group (unified group)
  • Dynamic group
  • Security group

This operation returns by default only a subset of the properties for each group. These default properties are noted in the Properties section.

See https://docs.microsoft.com/en-us/graph/api/group-post-groups?view=graph-rest-1.0 for more information.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

set http [new_CkHttp]

# Use your previously obtained access token as shown here:
#    Get Microsoft Graph OAuth2 Access Token with Group.ReadWrite.All scope.

set jsonToken [new_CkJsonObject]

set success [CkJsonObject_LoadFile $jsonToken "qa_data/tokens/msGraphGroup.json"]
if {$success == 0} then {
    puts [CkJsonObject_lastErrorText $jsonToken]
    delete_CkHttp $http
    delete_CkJsonObject $jsonToken
    exit
}

CkHttp_put_AuthToken $http [CkJsonObject_stringOf $jsonToken "access_token"]

# Create a JSON body for the HTTP POST
# Use this online tool to generate the code from sample JSON: 
# Generate Code to Create JSON

# {
#   "description": "Self help community for library",
#   "displayName": "Library Assist",
#   "groupTypes": [
#     "Unified"
#   ],
#   "mailEnabled": true,
#   "mailNickname": "library",
#   "securityEnabled": false
# }

set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "description" "Self help community for library"
CkJsonObject_UpdateString $json "displayName" "Library Assist"
CkJsonObject_UpdateString $json "groupTypes[0]" "Unified"
CkJsonObject_UpdateBool $json "mailEnabled" 1
CkJsonObject_UpdateString $json "mailNickname" "library"
CkJsonObject_UpdateBool $json "securityEnabled" 0

# POST the JSON to https://graph.microsoft.com/v1.0/groups

set resp [new_CkHttpResponse]

set success [CkHttp_HttpJson $http "POST" "https://graph.microsoft.com/v1.0/groups" $json "application/json" $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkJsonObject $jsonToken
    delete_CkJsonObject $json
    delete_CkHttpResponse $resp
    exit
}

CkJsonObject_Load $json [CkHttpResponse_bodyStr $resp]
CkJsonObject_put_EmitCompact $json 0

if {[CkHttpResponse_get_StatusCode $resp] != 201} then {
    puts [CkJsonObject_emit $json]
    puts "Failed, response status code = [CkHttpResponse_get_StatusCode $resp]"
    delete_CkHttp $http
    delete_CkJsonObject $jsonToken
    delete_CkJsonObject $json
    delete_CkHttpResponse $resp
    exit
}

puts [CkJsonObject_emit $json]

# A sample response:
# (See code for parsing this response below..)

# {
#     "id": "b320ee12-b1cd-4cca-b648-a437be61c5cd",
# 	  "deletedDateTime": null,
# 	  "classification": null,
# 	  "createdDateTime": "2018-12-22T00:51:37Z",
# 	  "creationOptions": [],
# 	  "description": "Self help community for library",
# 	  "displayName": "Library Assist",
# 	  "groupTypes": [
# 	      "Unified"
# 	  ],
# 	  "mail": "library7423@contoso.com",
# 	  "mailEnabled": true,
# 	  "mailNickname": "library",
# 	  "onPremisesLastSyncDateTime": null,
# 	  "onPremisesSecurityIdentifier": null,
# 	  "onPremisesSyncEnabled": null,
# 	  "preferredDataLocation": "CAN",
# 	  "proxyAddresses": [
# 	      "SMTP:library7423@contoso.com"
# 	  ],
# 	  "renewedDateTime": "2018-12-22T00:51:37Z",
# 	  "resourceBehaviorOptions": [],
# 	  "resourceProvisioningOptions": [],
# 	  "securityEnabled": false,
# 	  "visibility": "Public",
# 	  "onPremisesProvisioningErrors": []
# }

# Use this online tool to generate parsing code from sample JSON: 
# Generate Parsing Code from JSON

set id [CkJsonObject_stringOf $json "id"]
set deletedDateTime [CkJsonObject_stringOf $json "deletedDateTime"]
set classification [CkJsonObject_stringOf $json "classification"]
set createdDateTime [CkJsonObject_stringOf $json "createdDateTime"]
set description [CkJsonObject_stringOf $json "description"]
set displayName [CkJsonObject_stringOf $json "displayName"]
set mail [CkJsonObject_stringOf $json "mail"]
set mailEnabled [CkJsonObject_BoolOf $json "mailEnabled"]
set mailNickname [CkJsonObject_stringOf $json "mailNickname"]
set onPremisesLastSyncDateTime [CkJsonObject_stringOf $json "onPremisesLastSyncDateTime"]
set onPremisesSecurityIdentifier [CkJsonObject_stringOf $json "onPremisesSecurityIdentifier"]
set onPremisesSyncEnabled [CkJsonObject_stringOf $json "onPremisesSyncEnabled"]
set preferredDataLocation [CkJsonObject_stringOf $json "preferredDataLocation"]
set renewedDateTime [CkJsonObject_stringOf $json "renewedDateTime"]
set securityEnabled [CkJsonObject_BoolOf $json "securityEnabled"]
set visibility [CkJsonObject_stringOf $json "visibility"]
set i 0
set count_i [CkJsonObject_SizeOfArray $json "creationOptions"]
while {$i < $count_i} {
    CkJsonObject_put_I $json $i
    set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $json "groupTypes"]
while {$i < $count_i} {
    CkJsonObject_put_I $json $i
    set strVal [CkJsonObject_stringOf $json "groupTypes[i]"]
    set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $json "proxyAddresses"]
while {$i < $count_i} {
    CkJsonObject_put_I $json $i
    set strVal [CkJsonObject_stringOf $json "proxyAddresses[i]"]
    set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $json "resourceBehaviorOptions"]
while {$i < $count_i} {
    CkJsonObject_put_I $json $i
    # ...
    set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $json "resourceProvisioningOptions"]
while {$i < $count_i} {
    CkJsonObject_put_I $json $i
    # ...
    set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $json "onPremisesProvisioningErrors"]
while {$i < $count_i} {
    CkJsonObject_put_I $json $i
    # ...
    set i [expr $i + 1]
}

puts "Success."

delete_CkHttp $http
delete_CkJsonObject $jsonToken
delete_CkJsonObject $json
delete_CkHttpResponse $resp