def create_flow_run(self, flow_id: str=None, context: dict=None, parameters: dict=None, scheduled_start_time: datetime.datetime=None, idempotency_key: str=None, run_name: str=None, version_group_id: str=None) -> str:
    "\n        Create a new flow run for the given flow id.  If `start_time` is not provided, the flow\n        run will be scheduled to start immediately.  If both `flow_id` and `version_group_id`\n        are provided, only the `flow_id` will be used.\n\n        Args:\n            - flow_id (str, optional): the id of the Flow you wish to schedule\n            - context (dict, optional): the run context\n            - parameters (dict, optional): a dictionary of parameter values to pass to the flow run\n            - scheduled_start_time (datetime, optional): the time to schedule the execution\n                for; if not provided, defaults to now\n            - idempotency_key (str, optional): an idempotency key; if provided, this run will\n                be cached for 24 hours. Any subsequent attempts to create a run with the same\n                idempotency key will return the ID of the originally created run (no new run\n                will be created after the first).  An error will be raised if parameters or\n                context are provided and don't match the original.  Each subsequent request\n                will reset the TTL for 24 hours.\n            - run_name (str, optional): The name assigned to this flow run\n            - version_group_id (str, optional): if provided, the unique unarchived flow within\n                this version group will be scheduled to run.  This input can be used as a\n                stable API for running flows which are regularly updated.\n\n        Returns:\n            - str: the ID of the newly-created flow run\n\n        Raises:\n            - ClientError: if the GraphQL query is bad for any reason\n        "
    create_mutation = {'mutation($input: create_flow_run_input!)': {'create_flow_run(input: $input)': {'id': True}}}
    if ((not flow_id) and (not version_group_id)):
        raise ValueError('One of flow_id or version_group_id must be provided')
    if flow_id:
        inputs = dict(flow_id=flow_id)
    else:
        inputs = dict(version_group_id=version_group_id)
    if (parameters is not None):
        inputs.update(parameters=parameters)
    if (context is not None):
        inputs.update(context=context)
    if (idempotency_key is not None):
        inputs.update(idempotency_key=idempotency_key)
    if (scheduled_start_time is not None):
        inputs.update(scheduled_start_time=scheduled_start_time.isoformat())
    if (run_name is not None):
        inputs.update(flow_run_name=run_name)
    res = self.graphql(create_mutation, variables=dict(input=inputs))
    return res.data.create_flow_run.id
Create a new flow run for the given flow id.  If `start_time` is not provided, the flow
run will be scheduled to start immediately.  If both `flow_id` and `version_group_id`
are provided, only the `flow_id` will be used.

Args:
    - flow_id (str, optional): the id of the Flow you wish to schedule
    - context (dict, optional): the run context
    - parameters (dict, optional): a dictionary of parameter values to pass to the flow run
    - scheduled_start_time (datetime, optional): the time to schedule the execution
        for; if not provided, defaults to now
    - idempotency_key (str, optional): an idempotency key; if provided, this run will
        be cached for 24 hours. Any subsequent attempts to create a run with the same
        idempotency key will return the ID of the originally created run (no new run
        will be created after the first).  An error will be raised if parameters or
        context are provided and don't match the original.  Each subsequent request
        will reset the TTL for 24 hours.
    - run_name (str, optional): The name assigned to this flow run
    - version_group_id (str, optional): if provided, the unique unarchived flow within
        this version group will be scheduled to run.  This input can be used as a
        stable API for running flows which are regularly updated.

Returns:
    - str: the ID of the newly-created flow run

Raises:
    - ClientError: if the GraphQL query is bad for any reason
def create_flow_run(self, flow_id: str=None, context: dict=None, parameters: dict=None, scheduled_start_time: datetime.datetime=None, idempotency_key: str=None, run_name: str=None, version_group_id: str=None) -> str:
    "\n        Create a new flow run for the given flow id.  If `start_time` is not provided, the flow\n        run will be scheduled to start immediately.  If both `flow_id` and `version_group_id`\n        are provided, only the `flow_id` will be used.\n\n        Args:\n            - flow_id (str, optional): the id of the Flow you wish to schedule\n            - context (dict, optional): the run context\n            - parameters (dict, optional): a dictionary of parameter values to pass to the flow run\n            - scheduled_start_time (datetime, optional): the time to schedule the execution\n                for; if not provided, defaults to now\n            - idempotency_key (str, optional): an idempotency key; if provided, this run will\n                be cached for 24 hours. Any subsequent attempts to create a run with the same\n                idempotency key will return the ID of the originally created run (no new run\n                will be created after the first).  An error will be raised if parameters or\n                context are provided and don't match the original.  Each subsequent request\n                will reset the TTL for 24 hours.\n            - run_name (str, optional): The name assigned to this flow run\n            - version_group_id (str, optional): if provided, the unique unarchived flow within\n                this version group will be scheduled to run.  This input can be used as a\n                stable API for running flows which are regularly updated.\n\n        Returns:\n            - str: the ID of the newly-created flow run\n\n        Raises:\n            - ClientError: if the GraphQL query is bad for any reason\n        "
    create_mutation = {'mutation($input: create_flow_run_input!)': {'create_flow_run(input: $input)': {'id': True}}}
    if ((not flow_id) and (not version_group_id)):
        raise ValueError('One of flow_id or version_group_id must be provided')
    if flow_id:
        inputs = dict(flow_id=flow_id)
    else:
        inputs = dict(version_group_id=version_group_id)
    if (parameters is not None):
        inputs.update(parameters=parameters)
    if (context is not None):
        inputs.update(context=context)
    if (idempotency_key is not None):
        inputs.update(idempotency_key=idempotency_key)
    if (scheduled_start_time is not None):
        inputs.update(scheduled_start_time=scheduled_start_time.isoformat())
    if (run_name is not None):
        inputs.update(flow_run_name=run_name)
    res = self.graphql(create_mutation, variables=dict(input=inputs))
    return res.data.create_flow_run.id