def METHOD_NAME(self, request):
    # Serialize request
    serializer = StandaloneSimulationSerializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    train_schedules = serializer.create(serializer.validated_data)
    assert len(train_schedules) > 0
    # Create backend request payload
    request_payload = create_backend_request_payload(train_schedules)
    # Run standalone simulation
    response_payload = run_simulation(request_payload)
    # Process simulation response
    simulation_outputs = process_simulation_response(
        train_schedules[0].timetable.infra, train_schedules, response_payload
    )
    # Set infra and rolling stock version to train schedules
    infra_version = train_schedules[0].timetable.infra.version
    for train_schedule in train_schedules:
        train_schedule.infra_version = infra_version
        train_schedule.rollingstock_version = train_schedule.rolling_stock.version
    with transaction.atomic():
        # Save inputs
        TrainSchedule.objects.bulk_create(train_schedules)
        # Save outputs
        SimulationOutput.objects.bulk_create(simulation_outputs)
    return Response({"ids": [schedule.id for schedule in train_schedules]}, status=201)