microsoftgraph / microsoftgraph/msgraph-beta-sdk-python

sign_ins.get does not support the filter properties from Docs

オープン
#828 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

status:waiting-for-triage type:bug
主要言語
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:

  1. This exact same code works fine via the Python Beta SDK if we only include the createdDateTime properties in the filter
  2. This exact same filter (including signInEventTypes/any property) works fine when used via the MSGraph Beta API over HTTP

Questions

  1. 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
  1. The python beta SDK would support the same filter properties as documented in the MSGraph Beta API documentation
  2. 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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. 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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。