创建 timeCard
命名空间:microsoft.graph
重要
Microsoft Graph版本下的 /beta API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。
在 计划 创建 timeCard 实例。
权限
要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限。
| 权限类型 |
权限(从最低特权到最高特权) |
| 委派(工作或学校帐户) |
Schedule.ReadWrite.All |
| 委派(个人 Microsoft 帐户) |
不支持。 |
| 应用程序 |
Schedule.ReadWrite.All* |
*重要提示: 使用应用程序权限时,必须在请求 MS-APP-ACTS-AS 中包括 标头。
HTTP 请求
POST /teams/{teamId}/schedule/timecards
| 标头 |
值 |
| Authorization |
Bearer {token}。必需。 |
| Content-type |
application/json. Required. |
| MS-APP-ACTS-AS |
应用代表其操作的用户的 ID。 使用应用程序权限范围时是必需的。 |
请求正文
在此方法的请求正文中提供新的 timeCard 对象。
响应
如果成功,此方法在响应 201 Created 正文中返回 响应代码和 timeCard 对象。
示例
请求
下面展示了示例请求。
POST https://graph.microsoft.com/beta/teams/871dbd5c-3a6a-4392-bfe1-042452793a50/schedule/timecards
Content-type: application/json
{
"onBehalfOfUserId":"a3601044-a1b5-438e-b742-f78d01d68a67",
"clockInEvent":{
"dateTime":"2019-03-18T00:00:00.000Z",
"atApprovedLocation":true,
"notes": {
"content": "Started late due to traffic in CA 237",
"contentType": "text"
},
},
"notes":{
"content": "8 To 5 Inventory management",
"contentType": "text"
},
"breaks":[
{
"breakId": "string",
"notes":{
"content": "Lunch break",
"contentType": "text"
},
"start":{
"dateTime":"2019-03-18T02:00:00.000Z",
"atApprovedLocation":true,
"notes": {
"content": "Reduced break to make up for lost time",
"contentType": "text"
},
}
}
]
}
const options = {
authProvider,
};
const client = Client.init(options);
const timeCard = {
onBehalfOfUserId: 'a3601044-a1b5-438e-b742-f78d01d68a67',
clockInEvent: {
dateTime: '2019-03-18T00:00:00.000Z',
atApprovedLocation: true,
notes: {
content: 'Started late due to traffic in CA 237',
contentType: 'text'
},
},
notes: {
content: '8 To 5 Inventory management',
contentType: 'text'
},
breaks: [
{
breakId: 'string',
notes: {
content: 'Lunch break',
contentType: 'text'
},
start: {
dateTime: '2019-03-18T02:00:00.000Z',
atApprovedLocation: true,
notes: {
content: 'Reduced break to make up for lost time',
contentType: 'text'
},
}
}
]
};
await client.api('/teams/871dbd5c-3a6a-4392-bfe1-042452793a50/schedule/timecards')
.version('beta')
.post(timeCard);
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/beta/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/teams/871dbd5c-3a6a-4392-bfe1-042452793a50/schedule/timecards"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
MSGraphTimeCard *timeCard = [[MSGraphTimeCard alloc] init];
[timeCard setOnBehalfOfUserId:@"a3601044-a1b5-438e-b742-f78d01d68a67"];
MSGraphTimeCardEvent *clockInEvent = [[MSGraphTimeCardEvent alloc] init];
[clockInEvent setDateTime: "2019-03-18T00:00:00Z"];
[clockInEvent setAtApprovedLocation: true];
MSGraphItemBody *notes = [[MSGraphItemBody alloc] init];
[notes setContent:@"Started late due to traffic in CA 237"];
[notes setContentType: [MSGraphBodyType text]];
[clockInEvent setNotes:notes];
[timeCard setClockInEvent:clockInEvent];
MSGraphItemBody *notes = [[MSGraphItemBody alloc] init];
[notes setContent:@"8 To 5 Inventory management"];
[notes setContentType: [MSGraphBodyType text]];
[timeCard setNotes:notes];
NSMutableArray *breaksList = [[NSMutableArray alloc] init];
MSGraphTimeCardBreak *breaks = [[MSGraphTimeCardBreak alloc] init];
[breaks setBreakId:@"string"];
MSGraphItemBody *notes = [[MSGraphItemBody alloc] init];
[notes setContent:@"Lunch break"];
[notes setContentType: [MSGraphBodyType text]];
[breaks setNotes:notes];
MSGraphTimeCardEvent *start = [[MSGraphTimeCardEvent alloc] init];
[start setDateTime: "2019-03-18T02:00:00Z"];
[start setAtApprovedLocation: true];
MSGraphItemBody *notes = [[MSGraphItemBody alloc] init];
[notes setContent:@"Reduced break to make up for lost time"];
[notes setContentType: [MSGraphBodyType text]];
[start setNotes:notes];
[breaks setStart:start];
[breaksList addObject: breaks];
[timeCard setBreaks:breaksList];
NSError *error;
NSData *timeCardData = [timeCard getSerializedDataWithError:&error];
[urlRequest setHTTPBody:timeCardData];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.NewTimeCard()
clockInEvent := msgraphsdk.NewTimeCardEvent()
requestBody.SetClockInEvent(clockInEvent)
dateTime, err := time.Parse(time.RFC3339, "2019-03-18T00:00:00.000Z")
clockInEvent.SetDateTime(&dateTime)
atApprovedLocation := true
clockInEvent.SetAtApprovedLocation(&atApprovedLocation)
notes := msgraphsdk.NewItemBody()
clockInEvent.SetNotes(notes)
content := "Started late due to traffic in CA 237"
notes.SetContent(&content)
contentType := "text"
notes.SetContentType(&contentType)
notes := msgraphsdk.NewItemBody()
requestBody.SetNotes(notes)
content := "8 To 5 Inventory management"
notes.SetContent(&content)
contentType := "text"
notes.SetContentType(&contentType)
requestBody.SetBreaks( []TimeCardBreak {
msgraphsdk.NewTimeCardBreak(),
breakId := "string"
SetBreakId(&breakId)
notes := msgraphsdk.NewItemBody()
SetNotes(notes)
content := "Lunch break"
notes.SetContent(&content)
contentType := "text"
notes.SetContentType(&contentType)
start := msgraphsdk.NewTimeCardEvent()
SetStart(start)
dateTime, err := time.Parse(time.RFC3339, "2019-03-18T02:00:00.000Z")
start.SetDateTime(&dateTime)
atApprovedLocation := true
start.SetAtApprovedLocation(&atApprovedLocation)
notes := msgraphsdk.NewItemBody()
start.SetNotes(notes)
content := "Reduced break to make up for lost time"
notes.SetContent(&content)
contentType := "text"
notes.SetContentType(&contentType)
}
requestBody.SetAdditionalData(map[string]interface{}{
"onBehalfOfUserId": "a3601044-a1b5-438e-b742-f78d01d68a67",
}
teamId := "team-id"
result, err := graphClient.TeamsById(&teamId).Schedule().TimeCards().Post(requestBody)
Import-Module Microsoft.Graph.Teams
$params = @{
OnBehalfOfUserId = "a3601044-a1b5-438e-b742-f78d01d68a67"
ClockInEvent = @{
DateTime = [System.DateTime]::Parse("2019-03-18T00:00:00.000Z")
AtApprovedLocation = $true
Notes = @{
Content = "Started late due to traffic in CA 237"
ContentType = "text"
}
}
Notes = @{
Content = "8 To 5 Inventory management"
ContentType = "text"
}
Breaks = @(
@{
BreakId = "string"
Notes = @{
Content = "Lunch break"
ContentType = "text"
}
Start = @{
DateTime = [System.DateTime]::Parse("2019-03-18T02:00:00.000Z")
AtApprovedLocation = $true
Notes = @{
Content = "Reduced break to make up for lost time"
ContentType = "text"
}
}
}
)
}
New-MgTeamScheduleTimeCard -TeamId $teamId -BodyParameter $params
响应
下面展示了示例响应。
注意: 为了提高可读性,可能缩短了此处显示的响应对象。
HTTP/1.1 201 Created
Content-type: application/json
{
"id":"3895809b-a618-4c0d-86a0-d42b25b7d74f",
"userId":"a3601044-a1b5-438e-b742-f78d01d68a67",
"createdDateTime":"2019-03-18T00:00:00.000Z",
"createdBy":{
"user":{
"id":"a3601044-a1b5-438e-b742-f78d01d68a67",
"displayName":"Dwight Schrute"
}
},
"lastModifiedDateTime":"2019-03-18T00:00:00.000Z",
"lastModifiedBy":{
"user":{
"id":"a3601044-a1b5-438e-b742-f78d01d68a67",
"displayName":"Dwight Schrute"
}
},
"state":"onBreak",
"confirmationStatus":"notConfirmed",
"originalEntry":{
"clockInEvent":{
"dateTime":"2019-03-18T00:00:00.000Z",
"atApprovedLocation":true,
"notes": {
"content": "Started late due to traffic in CA 237",
"contentType": "text"
},
},
"clockOutEvent":null,
"breaks":[
{
"breakId":"string",
"notes":{
"content": "Lunch break",
"contentType": "text"
},
"start":{
"dateTime":"2019-03-18T02:00:00.000Z",
"atApprovedLocation":true,
"notes": {
"content": "Reduced break to make up for lost time",
"contentType": "text"
},
},
"end":null
}
]
},
"clockInEvent":{
"dateTime":"2019-03-18T00:00:00.000Z",
"atApprovedLocation":true,
"notes": {
"content": "Started late due to traffic in CA 237",
"contentType": "text"
},
},
"clockOutEvent":null,
"notes":{
"content": "8 To 5 Inventory management",
"contentType": "text"
},
"breaks":[
{
"breakId":"string",
"notes":{
"content": "Lunch break",
"contentType": "text"
},
"start":{
"dateTime":"2019-03-18T02:00:00.000Z",
"atApprovedLocation":true,
"notes": {
"content": "Reduced break to make up for lost time",
"contentType": "text"
},
},
"end":null
}
]
}