def register_oat_and_get_pipeline_id(
    token: str, post_data: Dict[str, Any], clp_id: str
) -> str:
    """Register multiple config OAT
    Args:
        token (str): account token
        post_data (Dict): registration information for OAT
        clp_id (str): clp id
    Returns:
        str: pipeline_id
    """
    url = f"{XDR_HOST_URL}/v1.0/preview/ath/oat/dataPipelines"

    headers = get_header(
        {
            "Authorization": f"Bearer {token}",
            "Content-Type": "application/json",
        }
    )
    logger.info(f"Register oat from multiple config api: {url} \ndata: {post_data}")

    response = requests.post(url, headers=headers, json=post_data)
    logger.info(
        f"Register oat from multiple config api response: {response.text}, header: {response.headers} "
    )

    response.raise_for_status()

    # pipeline id is gotten from Location of response header that is the string behind the last slash
    location = response.headers.get("Location").split("/")
    pipeline_id = location[-1]
    if not pipeline_id:
        raise Exception(f"Pipeline id of customer [{clp_id}] is invalid.")

    logger.info(
        f"Customer [{clp_id}] registers to OAT successfully. pipeline id: {pipeline_id}"
    )
    return pipeline_id
Register multiple config OAT
    Args:
        token (str): account token
        post_data (Dict): registration information for OAT
        clp_id (str): clp id
    Returns:
        str: pipeline_id
    
Solutions/Trend Micro Vision One/Data Connectors/AzureFunctionTrendMicroXDR/shared_code/services/oat_service.py