Skip to content

Import a taxonomy hierarchy into a Microsoft Graph term store from JSON.

JSON format mirrors the term store model: [group { name, sets: [ set { name, children: [ term { name, children: [] } ] } ] }]

Permissions

Requires application permission TermStore.ReadWrite.All.

Reference

View source

import argparse
import json
from pathlib import Path

from office365.graph_client import GraphClient
from tests.settings import client_id, client_secret, root_site_url, tenant

DATA_FILE = Path(__file__).resolve().parents[2] / "data" / "regions.json"


def main():
    parser = argparse.ArgumentParser(description="Import a taxonomy hierarchy from JSON")
    parser.add_argument("--input", default=str(DATA_FILE), help="JSON file to import")
    args = parser.parse_args()

    with open(args.input, "r", encoding="utf-8") as f:
        data = json.load(f)

    client = (
        GraphClient(tenant=tenant)
        .with_client_secret(client_id, client_secret)
        .require_application_permission("TermStore.ReadWrite.All")
    )
    store = client.sites.get_by_url(root_site_url).term_store

    store.from_json(data).execute_query()
    print(f"✓ Imported from {args.input}")


if __name__ == "__main__":
    main()

← Back to Term Store (Managed Metadata)