Obter eventos que possuem uma propriedade customizada definida por um suplemento
Esta pergunta é um acompanhamento deObter conjunto de propriedades personalizadas no Suplemento do Outlook via Microsoft Graph.
Meu suplemento do Outlook Office.js está adicionando algumas propriedades personalizadas a um evento. Funciona como esperado e posso acessar essas propriedades usando o Microsoft Graph, com os seguintesGET
solicitação:
/v1.0/me/events/{event-id}?$expand=SingleValueExtendedProperties($filter=id%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af')
Mas agora eu tento me inscrever para receber notificações por push postando esse corpo no terminal de notificações por push (/v1.0/subscriptions
):
{
changeType: "created,updated,deleted",
notificationUrl: `[...my url...]`,
resource: `/users/${userData.id}/events?$filter=singleValueExtendedProperties/any(ep%3A%20ep%2Fid%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af')`,
expirationDateTime: tomorrow,
clientState: "SecretClientState"
}
Mas eu estou recebendo:
{
"error": {
"code": "ExtensionError",
"message": "Operation: Create; Exception: [Status Code: BadRequest; Reason: Bad Request]",
"innerError": {
"request-id": "01dcece6-0103-4bef-8231-e9ab9480402a",
"date": "2017-04-04T20:20:58"
}
}
}
Tentei definir o recurso na solicitação sem escape, mas com o mesmo resultado, a próxima coisa que tentei é o$filter
funcionalidade, uma solicitação de obtenção no seguinte formato usando o MS Graph Explorer:
/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep%3A%20ep%2Fid%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af')
mas obteve o seguinte erro:
{
"error": {
"code": "ErrorInvalidUrlQueryFilter",
"message": "The filter expression for $filter does not match to a single extended property and a value restriction.",
"innerError": {
"request-id": "aca7c8ed-6e30-4490-8feb-7f1d2aed6b88",
"date": "2017-04-04T20:38:28"
}
}
}
isso significa que eu também tenho que filtrar por valor e não apenasid
?
Isso seria um problema, porque quero os eventos com a propriedade definida, mas não conheço o valor de antemão, quero lê-lo depois de receber uma notificação por push.
Existe uma maneira de obter eventos que simplesmente têm uma propriedade personalizada definida pelo meu suplemento e se inscrever para receber notificações por push de eventos que possuem essa propriedade personalizada?
EDITAR:
Quando eu mudoid
paraPropertyId
como sugerido na resposta que estou recebendo:
{
"error": {
"code": "BadRequest",
"message": "Could not find a property named 'PropertyId' on type 'microsoft.graph.singleValueLegacyExtendedProperty'.",
"innerError": {
"request-id": "1d3db71e-6ee2-4680-9317-64687813c52a",
"date": "2017-04-05T13:49:45"
}
}
}
EDIT-2:
Agora, quando adiciono a filtragem porvalue
, funciona:
/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep: ep/id eq 'String {00020329-0000-0000-C000-000000000046} Name cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af' and ep/value eq 'foo')
mas não quero todos os eventos com essa propriedade, independentemente do valor dela ...
EDIT-3
Não é possível filtrar porvalue
mas usando o diferentene
operador:
/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep: ep/id eq 'String {00020329-0000-0000-C000-000000000046} Name cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af' and ep/value ne 'Foo')
istoparece para funcionar, mas desta vez parece que apenas ignora o filtro e retorna todos os eventos, com e sem essa propriedade personalizada definida no suplemento.