docs: def execute_sql(server_context, schema_name, sql, container_path=None,
                  max_rows=None,
                  sort=None,
                  offset=None,
                  container_filter=None,
                  save_in_session=None,
                  parameters=None,
                  required_version=None,
                  timeout=_default_timeout):
      """
      Execute sql query against a LabKey server.
  
      :param server_context: A LabKey server context. See utils.create_server_context.
      :param schema_name: schema of table
      :param sql: String of labkey sql to execute
      :param container_path: labkey container path if not already set in context
      :param max_rows: max number of rows to return
      :param sort: comma separated list of column names to sort by
      :param offset: number of rows to offset results by
      :param container_filter: enumeration of the various container filters available. See:
          https://www.labkey.org/download/clientapi_docs/javascript-api/symbols/LABKEY.Query.html#.containerFilter
      :param save_in_session: save query result as a named view to the session
      :param parameters: parameter values to pass through to a parameterized query
      :param required_version: Api version of response
      :param timeout: timeout of request in seconds (defaults to 30s)
      :return:
      """
      url = server_context.build_url('query', 'executeSql.api', container_path=container_path)
  
      payload = {
          'schemaName': schema_name,
          'sql': sql
      }
  
      if container_filter is not None:
          payload['containerFilter'] = container_filter
  
      if max_rows is not None:
          payload['maxRows'] = max_rows
  
      if offset is not None:
          payload['offset'] = offset
  
      if sort is not None:
          payload['query.sort'] = sort
  
      if save_in_session is not None:
          payload['saveInSession'] = save_in_session
  
      if parameters is not None:
          for key, value in parameters.items():
              payload['query.param.' + key] = value
  
      if required_version is not None:
          payload['apiVersion'] = required_version
  
      return server_context.make_request(url, payload, timeout=timeout)