class_docstr: Implemented Snowflake SQL API Operator to support multiple SQL statements sequentially,
  which is the behavior of the SnowflakeOperator, the Snowflake SQL API allows submitting
  multiple SQL statements in a single request. It make post request to submit SQL
  statements for execution, poll to check the status of the execution of a statement. Fetch query results
  concurrently.
  This Operator currently uses key pair authentication, so you need to provide private key raw content or
  private key file path in the snowflake connection along with other details
  
  .. seealso::
  
      `Snowflake SQL API key pair Authentication <https://docs.snowflake.com/en/developer-guide/sql-api/authenticating.html#label-sql-api-authenticating-key-pair>`_
  
  Where can this operator fit in?
       - To execute multiple SQL statements in a single request
       - To execute the SQL statement asynchronously and to execute standard queries and most DDL and DML statements
       - To develop custom applications and integrations that perform queries
       - To create provision users and roles, create table, etc.
  
  The following commands are not supported:
      - The PUT command (in Snowflake SQL)
      - The GET command (in Snowflake SQL)
      - The CALL command with stored procedures that return a table(stored procedures with the RETURNS TABLE clause).
  
  .. seealso::
  
      - `Snowflake SQL API <https://docs.snowflake.com/en/developer-guide/sql-api/intro.html#introduction-to-the-sql-api>`_
      - `API Reference <https://docs.snowflake.com/en/developer-guide/sql-api/reference.html#snowflake-sql-api-reference>`_
      - `Limitation on snowflake SQL API <https://docs.snowflake.com/en/developer-guide/sql-api/intro.html#limitations-of-the-sql-api>`_
  
  :param snowflake_conn_id: Reference to Snowflake connection id
  :param sql: the sql code to be executed. (templated)
  :param autocommit: if True, each command is automatically committed.
      (default value: True)
  :param parameters: (optional) the parameters to render the SQL query with.
  :param warehouse: name of warehouse (will overwrite any warehouse
      defined in the connection's extra JSON)
  :param database: name of database (will overwrite database defined
      in connection)
  :param schema: name of schema (will overwrite schema defined in
      connection)
  :param role: name of role (will overwrite any role defined in
      connection's extra JSON)
  :param authenticator: authenticator for Snowflake.
      'snowflake' (default) to use the internal Snowflake authenticator
      'externalbrowser' to authenticate using your web browser and
      Okta, ADFS or any other SAML 2.0-compliant identify provider
      (IdP) that has been defined for your account
      'https://<your_okta_account_name>.okta.com' to authenticate
      through native Okta.
  :param session_parameters: You can set session-level parameters at
      the time you connect to Snowflake
  :param poll_interval: the interval in seconds to poll the query
  :param statement_count: Number of SQL statement to be executed
  :param token_life_time: lifetime of the JWT Token
  :param token_renewal_delta: Renewal time of the JWT Token
  :param bindings: (Optional) Values of bind variables in the SQL statement.
          When executing the statement, Snowflake replaces placeholders (? and :name) in
          the statement with these specified values.
  :param deferrable: Run operator in the deferrable mode.
docstr: Make a POST API request to snowflake by using SnowflakeSQL and execute the query to get the ids.
  
  By deferring the SnowflakeSqlApiTrigger class passed along with query ids.
docstr_tok: ["Make","a","POST","API","request","to","snowflake","by","using","SnowflakeSQL","and","execute","the","query","to","get","the","ids",".","By","deferring","the","SnowflakeSqlApiTrigger","class","passed","along","with","query","ids","."]
code: def execute(self, context: Context) -> None:
      """
      Make a POST API request to snowflake by using SnowflakeSQL and execute the query to get the ids.
  
      By deferring the SnowflakeSqlApiTrigger class passed along with query ids.
      """
      self.log.info("Executing: %s", self.sql)
      self._hook = SnowflakeSqlApiHook(
          snowflake_conn_id=self.snowflake_conn_id,
          token_life_time=self.token_life_time,
          token_renewal_delta=self.token_renewal_delta,
          deferrable=self.deferrable,
      )
      self.query_ids = self._hook.execute_query(
          self.sql,  # type: ignore[arg-type]
          statement_count=self.statement_count,
          bindings=self.bindings,
      )
      self.log.info("List of query ids %s", self.query_ids)
  
      if self.do_xcom_push:
          context["ti"].xcom_push(key="query_ids", value=self.query_ids)
  
      if self.deferrable:
          self.defer(
              timeout=self.execution_timeout,
              trigger=SnowflakeSqlApiTrigger(
                  poll_interval=self.poll_interval,
                  query_ids=self.query_ids,
                  snowflake_conn_id=self.snowflake_conn_id,
                  token_life_time=self.token_life_time,
                  token_renewal_delta=self.token_renewal_delta,
              ),
              method_name="execute_complete",
          )
      else:
          statement_status = self.poll_on_queries()
          if statement_status["error"]:
              raise AirflowException(statement_status["error"])
          self._hook.check_query_output(self.query_ids)
  
imports: from __future__ import annotations
  import time
  import warnings
  from datetime import timedelta
  from typing import TYPE_CHECKING, Any, Iterable, List, Mapping, Sequence, SupportsAbs, cast
  from airflow.configuration import conf
  from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
  from airflow.providers.common.sql.operators.sql import SQLCheckOperator, SQLExecuteQueryOperator, SQLIntervalCheckOperator, SQLValueCheckOperator
  from airflow.providers.snowflake.hooks.snowflake_sql_api import SnowflakeSqlApiHook
  from airflow.providers.snowflake.triggers.snowflake_trigger import SnowflakeSqlApiTrigger
label_desc: Use image node_id 2 for calling the SnowflakeSqlApiOperator obj's underlying member method code with example usage: obj.execute(context) without return types