def METHOD_NAME(
    ctx: Any,
    urn: str,
    category: List[str],
    start: Optional[str],
    end: Optional[str],
    verbose: bool,
    raw: bool,
) -> None:
    """Get timeline for an entity based on certain categories"""
    all_categories = [
        "TAG",
        "OWNER",
        "GLOSSARY_TERM",
        "TECHNICAL_SCHEMA",
        "DOCUMENTATION",
    ]
    for c in category:
        if c.upper() not in all_categories:
            raise click.UsageError(
                f"category: {c.upper()} is not one of {all_categories}"
            )
    if urn is None:
        if not ctx.args:
            raise click.UsageError("Nothing for me to get. Maybe provide an urn?")
        urn = ctx.args[0]
        logger.debug(f"Using urn from args {urn}")
    start_time_millis: Optional[int] = None
    if start:
        if start.endswith("daysago"):
            days_ago: int = int(start.replace("daysago", ""))
            start_time_millis = int((time.time() - days_ago * 24 * 60 * 60) * 1000)
        else:
            start_time_millis = int(start)
    end_time_millis: Optional[int] = None
    if end:
        if end.endswith("daysago"):
            days_ago = int(end.replace("daysago", ""))
            end_time_millis = int((time.time() - days_ago * 24 * 60 * 60) * 1000)
        else:
            end_time_millis = int(end)
    METHOD_NAME = get_timeline(
        urn=urn,
        category=category,
        start_time=start_time_millis,
        end_time=end_time_millis,
        diff=raw,
    )
    if isinstance(METHOD_NAME, list) and not verbose:
        for change_txn in METHOD_NAME:
            change_instant = str(
                datetime.fromtimestamp(change_txn["timestamp"] // 1000)
            )
            change_color = (
                "green"
                if change_txn.get("semVerChange") in ["MINOR", "PATCH"]
                else "red"
            )
            print(
                f"{colored(change_instant,'cyan')} - {colored(change_txn['semVer'],change_color)}"
            )
            if change_txn["changeEvents"] is not None:
                for change_event in change_txn["changeEvents"]:
                    element_string = (
                        f"({pretty_id(change_event.get('elementId') or change_event.get('modifier'))})"
                        if change_event.get("elementId") or change_event.get("modifier")
                        else ""
                    )
                    event_change_color: str = (
                        "green"
                        if change_event.get("semVerChange") == "MINOR"
                        else "red"
                    )
                    target_string = pretty_id(
                        change_event.get("target")
                        or change_event.get("entityUrn")
                        or ""
                    )
                    print(
                        f"\t{colored(change_event.get('changeType') or change_event.get('operation'),event_change_color)} {change_event.get('category')} {target_string} {element_string}: {change_event['description']}"
                    )
    else:
        click.echo(
            json.dumps(
                METHOD_NAME,
                sort_keys=True,
                indent=2,
            )
        )