使用 Domino 数据服务 REST 创建房间预订 API
Create room reservations using Domino data services REST API
我一直在尝试使用 Domino 数据服务 REST 创建房间预订API,但我似乎错过了一个技巧。
向文档端点发送 POST 请求我能够提交并创建一个显示在房间和资源视图中的预订文档,但底层房间在注释客户端中仍显示为可用。
这是请求正文的示例:
{
"@authors": [
"CN=Andrew Jones/O=MyCorp",
""
],
"@form": "Reservation",
"From": "CN=Andrew Jones/O=MyCorp",
"Chair": "CN=Andrew Jones/O=MyCorp",
"AltChair": "CN=Andrew Jones/O=MyCorp",
"Principal": "CN=Andrew Jones/O=MyCorp",
"SequenceNum": 1,
"OrgState": "5",
"ResourceType": "1",
"ResourceName": "Room/Office",
"ROOM": "Room/Office@MyCorp",
"Capacity": 1,
"AppointmentType": "3",
"StartTimeZone": "Z=0$DO=1$DL=3 -1 1 10 -1 1$ZX=47$ZN=GMT",
"EndTimeZone": "Z=0$DO=1$DL=3 -1 1 10 -1 1$ZX=47$ZN=GMT",
"TOPIC": "Test",
"SendTo": "CN=Room/O=Office",
"SelectedRR": "CN=Room/O=Office",
"$BusyName":"CN=Room/O=Office",
"Encrypt": "0",
"Categories": "",
"RouteServers": "CN=dominonode/O=MyCorp",
"DeliveredDate": { "data":"2017-03-09T12:38:34Z","type":"datetime"},
"StartDate": {"data":"2017-03-09T20:00:00Z","type":"datetime"},
"StartTime": {"data":"2017-03-09T20:00:00Z","type":"datetime"},
"StartDateTime": {"data":"2017-03-09T20:00:00Z","type":"datetime"},
"EndDate": {"data":"2017-03-09T21:00:00Z","type":"datetime"},
"EndTime": {"data":"2017-09-03T21:00:00Z","type":"datetime"},
"EndDateTime": {"data":"2017-03-09T21:00:00Z","type":"datetime"},
"CalendarDateTime": {"data":"2017-03-09T20:00:00Z","type":"datetime"},
"UpdateSeq": 1,
"Author": "CN=Andrew Jones/O=MyCorp",
"ResourceOwner": "",
"ReservedFor": "CN=Andrew Jones/O=MyCorp",
"ReservedBy": "CN=Andrew Jones/O=MyCorp",
"RQStatus": "A",
"Purpose": "API Test",
"NoticeType": "A",
"Step": 3,
"Site": "Office",
"ReserveDate": {"data":"2017-03-09T20:00:00Z","type":"datetime"}
}
This question suggests I should instead be trying to create a Calendar event but everything I send seems to get rejected with bad request, including the sample
我还查看了 another question,这表明我需要创建一个约会,然后是一个房间的通知文件,但是虽然我可以创建这些文件,但它似乎并没有创建一个预订.
有没有人试过这个并让它工作,或者我只是加入了大象的墓地?
我建议注册一个特殊的"user"作为预订代理。然后您可以使用日历 API 预订任何房间。我认为这种方法比数据 API.
更有效
详情:
注册一个新的"user"作为预订代理。让我们调用用户"Room Agent/MyCorp"。用户的邮件文件为"mail/ragent.nsf".
确保日历 API 在具有 "mail/ragent.nsf" 副本的邮件服务器上启用。
当有人使用您的平板电脑应用程序预订房间时,该应用程序会发送请求在客房代理的日历上创建活动(POST /mail/ragent.nsf/api/calendar/events).新活动应将房间包含在与会者列表中。
日历API向房间(实际上是资源数据库)发送邀请。只要房间还没有被预订,资源数据库就会接受邀请并且房间在那个时间段内变得繁忙。
这使您不必处理数据 API 和资源数据库的复杂性。您的平板电脑应用程序只需要知道邮件服务器主机名、邮件文件名和房间代理的凭据。我也喜欢能够 "audit" 来自您的平板电脑应用程序的所有预订的想法。您将能够在房间代理的邮件文件中找到所有事件和通知(接受或拒绝)。
一个缺点是预订不会是即时的,但资源数据库应该能够在几秒钟内接受邀请。
顺便说一句,这里有一些示例 JSON 输入用于您的 POST 请求:
{
"events":[
{
"summary":"Calendar API test",
"location":"test",
"description":"test",
"start":{"date":"2018-01-01","time":"13:00:00","utc":true},
"end":{"date":"2018-01-01","time":"14:00:00","utc":true},
"organizer":{"email":"ragent@mycorp.com"},
"attendees":[
{
"role":"req-participant",
"userType":"room",
"status":"needs-action",
"rsvp":true,
"email":"room@mycorp.com"
}
]
}
]
}
为与会者指定 "userType":"room"
很重要。否则,资源库将不会接受邀请。
我一直在尝试使用 Domino 数据服务 REST 创建房间预订API,但我似乎错过了一个技巧。
向文档端点发送 POST 请求我能够提交并创建一个显示在房间和资源视图中的预订文档,但底层房间在注释客户端中仍显示为可用。
这是请求正文的示例:
{
"@authors": [
"CN=Andrew Jones/O=MyCorp",
""
],
"@form": "Reservation",
"From": "CN=Andrew Jones/O=MyCorp",
"Chair": "CN=Andrew Jones/O=MyCorp",
"AltChair": "CN=Andrew Jones/O=MyCorp",
"Principal": "CN=Andrew Jones/O=MyCorp",
"SequenceNum": 1,
"OrgState": "5",
"ResourceType": "1",
"ResourceName": "Room/Office",
"ROOM": "Room/Office@MyCorp",
"Capacity": 1,
"AppointmentType": "3",
"StartTimeZone": "Z=0$DO=1$DL=3 -1 1 10 -1 1$ZX=47$ZN=GMT",
"EndTimeZone": "Z=0$DO=1$DL=3 -1 1 10 -1 1$ZX=47$ZN=GMT",
"TOPIC": "Test",
"SendTo": "CN=Room/O=Office",
"SelectedRR": "CN=Room/O=Office",
"$BusyName":"CN=Room/O=Office",
"Encrypt": "0",
"Categories": "",
"RouteServers": "CN=dominonode/O=MyCorp",
"DeliveredDate": { "data":"2017-03-09T12:38:34Z","type":"datetime"},
"StartDate": {"data":"2017-03-09T20:00:00Z","type":"datetime"},
"StartTime": {"data":"2017-03-09T20:00:00Z","type":"datetime"},
"StartDateTime": {"data":"2017-03-09T20:00:00Z","type":"datetime"},
"EndDate": {"data":"2017-03-09T21:00:00Z","type":"datetime"},
"EndTime": {"data":"2017-09-03T21:00:00Z","type":"datetime"},
"EndDateTime": {"data":"2017-03-09T21:00:00Z","type":"datetime"},
"CalendarDateTime": {"data":"2017-03-09T20:00:00Z","type":"datetime"},
"UpdateSeq": 1,
"Author": "CN=Andrew Jones/O=MyCorp",
"ResourceOwner": "",
"ReservedFor": "CN=Andrew Jones/O=MyCorp",
"ReservedBy": "CN=Andrew Jones/O=MyCorp",
"RQStatus": "A",
"Purpose": "API Test",
"NoticeType": "A",
"Step": 3,
"Site": "Office",
"ReserveDate": {"data":"2017-03-09T20:00:00Z","type":"datetime"}
}
This question suggests I should instead be trying to create a Calendar event but everything I send seems to get rejected with bad request, including the sample
我还查看了 another question,这表明我需要创建一个约会,然后是一个房间的通知文件,但是虽然我可以创建这些文件,但它似乎并没有创建一个预订.
有没有人试过这个并让它工作,或者我只是加入了大象的墓地?
我建议注册一个特殊的"user"作为预订代理。然后您可以使用日历 API 预订任何房间。我认为这种方法比数据 API.
更有效详情:
注册一个新的"user"作为预订代理。让我们调用用户"Room Agent/MyCorp"。用户的邮件文件为"mail/ragent.nsf".
确保日历 API 在具有 "mail/ragent.nsf" 副本的邮件服务器上启用。
当有人使用您的平板电脑应用程序预订房间时,该应用程序会发送请求在客房代理的日历上创建活动(POST /mail/ragent.nsf/api/calendar/events).新活动应将房间包含在与会者列表中。
日历API向房间(实际上是资源数据库)发送邀请。只要房间还没有被预订,资源数据库就会接受邀请并且房间在那个时间段内变得繁忙。
这使您不必处理数据 API 和资源数据库的复杂性。您的平板电脑应用程序只需要知道邮件服务器主机名、邮件文件名和房间代理的凭据。我也喜欢能够 "audit" 来自您的平板电脑应用程序的所有预订的想法。您将能够在房间代理的邮件文件中找到所有事件和通知(接受或拒绝)。
一个缺点是预订不会是即时的,但资源数据库应该能够在几秒钟内接受邀请。
顺便说一句,这里有一些示例 JSON 输入用于您的 POST 请求:
{
"events":[
{
"summary":"Calendar API test",
"location":"test",
"description":"test",
"start":{"date":"2018-01-01","time":"13:00:00","utc":true},
"end":{"date":"2018-01-01","time":"14:00:00","utc":true},
"organizer":{"email":"ragent@mycorp.com"},
"attendees":[
{
"role":"req-participant",
"userType":"room",
"status":"needs-action",
"rsvp":true,
"email":"room@mycorp.com"
}
]
}
]
}
为与会者指定 "userType":"room"
很重要。否则,资源库将不会接受邀请。