Skip to content

create_saved_scenario

create_saved_scenario

Service for creating saved scenarios.

Classes

CreateSavedScenarioRunner

Bases: BaseRunner[Dict[str, Any]]

Runner for creating a SavedScenario in MyETM from a SessionID scenario.

POST /api/v3/saved_scenarios

Functions
run staticmethod
run(client, saved_scenario_data, **kwargs)

Create a new SavedScenario in MyETM.

Parameters:

Name Type Description Default
client BaseClient

The HTTP client to use

required
saved_scenario_data Dict[str, Any]

Dictionary with scenario_id, title, private

required
**kwargs Any

Additional arguments passed to the request

{}
Example usage

result = CreateSavedScenarioRunner.run( client=client, saved_scenario_data={ "scenario_id": 123, "title": "My Saved Scenario", "private": False } )

Source code in src/pyetm/services/scenario_runners/create_saved_scenario.py
@staticmethod
def run(
    client: BaseClient, saved_scenario_data: Dict[str, Any], **kwargs: Any
) -> ServiceResult[Dict[str, Any]]:
    """
    Create a new SavedScenario in MyETM.

    Args:
        client: The HTTP client to use
        saved_scenario_data: Dictionary with scenario_id, title, private
        **kwargs: Additional arguments passed to the request

    Example usage:
        result = CreateSavedScenarioRunner.run(
            client=client,
            saved_scenario_data={
                "scenario_id": 123,
                "title": "My Saved Scenario",
                "private": False
            }
        )
    """
    errors = CreateSavedScenarioRunner._validate_required_fields(
        saved_scenario_data, CreateSavedScenarioRunner.REQUIRED_KEYS
    )

    if errors:
        return ServiceResult.fail(errors)

    all_allowed = (
        CreateSavedScenarioRunner.REQUIRED_KEYS
        + CreateSavedScenarioRunner.OPTIONAL_KEYS
    )
    filtered_data, warnings = CreateSavedScenarioRunner._filter_allowed_fields(
        saved_scenario_data,
        all_allowed,
        "create saved scenario",
    )

    payload = {"saved_scenario": filtered_data}

    result = CreateSavedScenarioRunner._make_request(
        client=client,
        method="post",
        path="/saved_scenarios",
        payload=payload,
        **kwargs,
    )

    if result.success and warnings:
        combined_errors = list(result.errors) + warnings
        assert result.data is not None, "Success result must have data"
        return ServiceResult.ok(data=result.data, errors=combined_errors)

    return result