microsoftgraph / microsoftgraph/msgraph-beta-sdk-python

sign_ins.get does not support the filter properties from Docs

Offen
#828 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

status:waiting-for-triage type:bug
Vorherrschende Sprache
Python
Sterne
44
Forks
16
Ø Merge
20 Std. 39 Min.
Gemergte PRs (30 T.)
3

Beschreibung

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem generierten audit_logs/sign_ins/sign_ins_request_builder.py-Einstiegspunkt, der von SignInsRequestBuilder verwendet wird, und untersuche, wie die GET-Anfrage ihre Filterabfrage erstellt. Vergleiche die SDK-Anfrage anhand der Reproduktionsfilter mit der dokumentierten beta-HTTP-Anfrage. Erledigt ist die Aufgabe, wenn signInEventTypes- und servicePrincipalId-Filter über das Python SDK akzeptiert werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
api
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.