microsoftgraph / microsoftgraph/msgraph-beta-sdk-python
sign_ins.get does not support the filter properties from Docs
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 44
- Forks
- 16
- Merge moyen
- 20 h 39 min
- PR mergées (30 j)
- 3
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par le point d’entrée généré audit_logs/sign_ins/sign_ins_request_builder.py utilisé par SignInsRequestBuilder et examinez comment la requête GET construit sa requête de filtrage. Comparez la requête du SDK avec la requête HTTP beta documentée en utilisant les filtres de reproduction. C’est terminé lorsque les filtres signInEventTypes et servicePrincipalId sont acceptés via le Python SDK.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- api
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100