Skip to main content

This package is used to interact with the microsoft graph API

Project description

Microsoft Python client

Python tests pre-commit CodeQL codecov

Microsoft graph API Python client with support for Server to Server Oauth tokens with App Only access.

Install

This package is available on Pypi

pip install ms-python-client

Requirements

  • Python >= 3.10

How to configure the client variables to make API calls

Defining your env variables

Define the following variables in your env or your .env file:

  • MS_ACCOUNT_ID
  • MS_CLIENT_ID
  • MS_CLIENT_SECRET

For testing purposes

For testing purposes, you can use the following value:

  • MS_ACCESS_TOKEN

This token could be obtained from the Microsoft Graph Explorer by clicking on the Sign in with Microsoft button and then clicking on the Access Token tab.

Usage

Initialize the MSApiClient from environment variables

from ms_python_client.ms_api_client import MSApiClient

ms_client = MSApiClient.init_from_env()

Initialize the MSApiClient from .env

from ms_python_client.ms_api_client import MSApiClient

ms_client = MSApiClient.init_from_dotenv()

Initialize the MSApiClient manually

from ms_python_client.ms_api_client import MSApiClient

ms_client = MSApiClient(
        account_id="<YOUR ACCOUNT ID>",
        client_id="<YOUR CLIENT ID>",
        client_secret="<YOUR CLIENT SECRET>")

Use the file system to store the access token instead of environment

There are some cases where you might want to store the access token in the file system in order to share its value with other elements of the application (Ex. different pods on a Kubernetes/Openshift application).

You can define the path where the token will be stored, passing the use_path variable to the constructor:

from ms_python_client.ms_api_client import MSApiClient

ms_client = MSApiClient(
        account_id="<YOUR ACCOUNT ID>",
        client_id="<YOUR CLIENT ID>",
        client_secret="<YOUR CLIENT SECRET>",
        use_path="/path/to/token/folder")

How to make API calls

USER_ID = "12345"
SUBJECT = "Test meeting"

query = {"$count": "true", "$filter": f"contains(subject,'{SUBJECT}')"}
result = cern_ms_client.events.list_events(USER_ID, query)

Optional: How to configure the logging

from ms_python_client.utils.logger import setup_logs

setup_logs(log_level=logging.DEBUG)

Available endpoints

events:

  1. get all events
  2. get a single event
  3. create an event
  4. update an event
  5. delete an event

users:

  1. get all users

CERN specific usage

Instead of using the MSApiClient class, you can use the CERNMSApiClient class, which is a subclass of the MSApiClient class. This class will provide you some more utilities but it will only work for CERN users (obviously).

This will be used in the context of synchronizing the events between the CERN Indico system and the calendars of the Zoom Rooms.

How to initialize the CERNMSApiClient

Follow the How to configure the client variables to make API calls section and then:

from ms_python_client.cern_ms_api_client import CERNMSApiClient

cern_ms_client = CERNMSApiClient.init_from_dotenv()

Available endpoints

events:

  1. get all events
  2. get a single event using zoom id
  3. create an event
  4. update an event using zoom id
  5. delete an event using zoom id
  6. get the zoom id of an event

You will find useful the EventParameters and PartialEventParameters classes, which will help you to create the events.

  • ZOOM_ID is the id of the zoom meeting, which can be found inside the url of a meeting link. This is mandatory to create an event.
  • USER_ID is the email of the Zoom Room.
from ms_python_client.cern_ms_api_client import CERNMSApiClient
from ms_python_client.utils.event_generator import (EventParameters, PartialEventParameters)

cern_ms_client = CERNMSApiClient.init_from_dotenv()

USER_ID = os.getenv("USER_ID") # Which is the email of the Zoom Room
ZOOM_ID = os.getenv("ZOOM_ID")

event_parameters = EventParameters(
        subject="Test meeting",
        start_time="2021-10-01T12:00:00",
        end_time="2021-10-01T13:00:00",
        timezone="Europe/Zurich",
        zoom_id=ZOOM_ID,
        zoom_url="https://cern.zoom.us/******",
)

partial_event_parameters = PartialEventParameters(
        zoom_id=ZOOM_ID,
        end_time="2021-10-01T14:00:00",
) # You can update only the end_time of the event for example

cern_ms_client.events.create_event(USER_ID, event_parameters)
cern_ms_client.events.update_event_by_zoom_id(USER_ID, partial_event_parameters)
cern_ms_client.events.delete_event_by_zoom_id(USER_ID, ZOOM_ID)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ms_python_client-1.0.4.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

ms_python_client-1.0.4-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file ms_python_client-1.0.4.tar.gz.

File metadata

  • Download URL: ms_python_client-1.0.4.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.0 Linux/5.15.0-1041-azure

File hashes

Hashes for ms_python_client-1.0.4.tar.gz
Algorithm Hash digest
SHA256 220abe7edb42e89d702f27c46cf8ade9f6eedd9441a7e57cea3ee3bb5eae669e
MD5 1d77f3963826ad8742787c4931fcc504
BLAKE2b-256 f40f4f2a3725550731334aaefcb0dc4299d490f3be6d91629b7e036ec761d62f

See more details on using hashes here.

File details

Details for the file ms_python_client-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: ms_python_client-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.0 Linux/5.15.0-1041-azure

File hashes

Hashes for ms_python_client-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 83341cde09dd746cbfcf7bbebf3417da987794e75d7bf4f9e68737314dfbef3e
MD5 38563ed6afc7ac8d4e7c8060e1c0f77b
BLAKE2b-256 92fe82e96817639a65d0927e37be30fdc7f6f90e34136a5fb8f228be32463146

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page