microsoftgraph / microsoftgraph/msgraph-beta-sdk-python
sign_ins.get does not support the filter properties from Docs
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 44
- フォーク
- 16
- 平均マージ
- 20時間 39分
- マージ済み PR(30日)
- 3
説明
Describe the bug
When attempting to get nonInteractiveUser and servicePrincipal sign-ins, we receive one the following error messages when we try to use the filter properties defined in the Official MSgraph Beta API documentation.
"Invalid filter clause: Could not find a property named 'servicePrincipalId' on type 'microsoft.graph.signIn'."
Invalid filter clause: Could not find a property named 'signInEventTypes' on type 'microsoft.graph.signIn'.", target=None)
Here are some example filters we have tried
filter_query = f"createdDateTime ge {start_time_str} and createdDateTime le {end_time_str} and signInEventTypes/any(t: t eq 'nonInteractiveUser' or t eq 'servicePrincipal')"
filter_query = "signInEventTypes/any(t: t eq 'nonInteractiveUser' or t eq 'servicePrincipal')"
filter_query = f"servicePrincipalId eq '{id}'"
Notes:
- This exact same code works fine via the Python Beta SDK if we only include the
createdDateTimeproperties in the filter - This exact same filter (including
signInEventTypes/anyproperty) works fine when used via the MSGraph Beta API over HTTP
Questions
- I understand this is a beta, but should we expect the Python SDK to behave differently from the Beta Docs and the Beta HTTP API?
Expected behavior
- The python beta SDK would support the same filter properties as documented in the MSGraph Beta API documentation
- The python beta SDK would support the same filter properties as the MSGraph Beta HTTP API
How to reproduce
import asyncio
import os
from azure.identity import InteractiveBrowserCredential
from kiota_abstractions.base_request_configuration import RequestConfiguration
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.audit_logs.sign_ins.sign_ins_request_builder import (
SignInsRequestBuilder,
)
AZURE_TENANT_ID = os.environ.get("AZURE_TENANT_ID")
CERT = os.environ.get("CERT_PATH")
async def get_sign_ins(client):
"""Get sign-ins with SDK"""
filter_query = (
"signInEventTypes/any(t: t eq 'nonInteractiveUser' or t eq 'servicePrincipal')"
)
query_params = SignInsRequestBuilder.SignInsRequestBuilderGetQueryParameters(
filter=filter_query,
top=1,
)
request_configuration = RequestConfiguration(
query_parameters=query_params,
)
result = await client.audit_logs.sign_ins.get(
request_configuration=request_configuration
)
return result.value
async def main():
"""Main async function to process sign-ins"""
credential = InteractiveBrowserCredential(
tenant_id=AZURE_TENANT_ID, connection_verify=CERT
)
client = GraphServiceClient(
credential,
scopes=["https://graph.microsoft.com/.default"],
)
result = await get_sign_ins(client)
print(result)
if __name__ == "__main__":
asyncio.run(main())
SDK Version
1.31.0
Latest version known to work for scenario above?
No response
Known Workarounds
Use HTTP to hit beta API via python requests library
Debug output
"Invalid filter clause: Could not find a property named 'signInEventTypes' on type 'microsoft.graph.signIn'."
Configuration
- OS: macOS Sequoia 15.3.1
- Architecture: M1 ARM
Other information
No response
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
SignInsRequestBuilderで使用される生成済みのaudit_logs/sign_ins/sign_ins_request_builder.pyエントリポイントから始め、GETリクエストがフィルタークエリをどのように構築しているかを確認します。再現用フィルターを使って、SDKリクエストとドキュメント化されたbeta HTTPリクエストを比較します。signInEventTypesおよびservicePrincipalIdフィルターがPython SDK経由で受け付けられれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- api
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100