Records management — create a retention label.¶
A retention label describes when a retention period starts, how long it lasts, and what happens at the end (keep as record, then delete or start a disposition review). Labels are defined once in the tenant and then applied to content by users or by auto-apply policies.
python create_label.py
python create_label.py --name "Retain 7 Years" --days 2555
Permissions
Requires delegated permission RecordsManagement.ReadWrite.All and the
Compliance Administrator (or Global Administrator) role.
Reference¶
from __future__ import annotations
import argparse
from office365.graph_client import GraphClient
from office365.security.labels.retention.actionafterretentionperiod import ActionAfterRetentionPeriod
from office365.security.labels.retention.behaviorduringretentionperiod import BehaviorDuringRetentionPeriod
from office365.security.labels.retention.defaultrecordbehavior import DefaultRecordBehavior
from office365.security.labels.retention.duration_in_days import RetentionDurationInDays
from office365.security.labels.retention.trigger import RetentionTrigger
from tests.settings import admin_username, client_id, tenant
_SCOPE = "RecordsManagement.ReadWrite.All"
def _client() -> GraphClient:
return (
GraphClient(tenant=tenant)
.with_token_interactive(client_id, admin_username)
.require_role("Compliance Administrator", "Global Administrator")
)
def main() -> None:
parser = argparse.ArgumentParser(description="Create a retention label")
parser.add_argument("--name", default="Retain 1 Year — Delete", help="Label display name")
parser.add_argument("--days", type=int, default=365, help="Retention duration in days")
args = parser.parse_args()
client = _client()
duration = RetentionDurationInDays(args.days)
label = client.security.labels.retention_labels.add(
args.name,
RetentionTrigger.dateLabeled,
duration,
BehaviorDuringRetentionPeriod.retainAsRecord,
DefaultRecordBehavior.startLocked,
ActionAfterRetentionPeriod.delete,
).execute_query()
print(f"Label created: {label.display_name}")
print(f" Trigger: {label.retention_trigger}")
print(f" Duration: {duration.days} day(s)")
print(f" End action: {label.action_after_retention_period}")
print(f" Default behavior: {label.default_record_behavior}")
print(f" In use: {label.is_in_use}")
if __name__ == "__main__":
main()