docs: def initialise_api(f):
      """Initialise the Cloudsmith API for use."""
  
      @click.option(
          "--api-host", envvar="CLOUDSMITH_API_HOST", help="The API host to connect to."
      )
      @click.option(
          "--api-proxy",
          envvar="CLOUDSMITH_API_PROXY",
          help="The API proxy to connect through.",
      )
      @click.option(
          "--api-user-agent",
          envvar="CLOUDSMITH_API_USER_AGENT",
          help="The user agent to use for requests.",
      )
      @click.option(
          "--api-headers",
          envvar="CLOUDSMITH_API_HEADERS",
          help="A CSV list of extra headers (key=value) to send to the API.",
      )
      @click.option(
          "-R",
          "--without-rate-limit",
          default=False,
          is_flag=True,
          help="Don't obey the suggested rate limit interval. The CLI will "
          "automatically sleep between commands to ensure that you do "
          "not hit the server-side rate limit.",
      )
      @click.option(
          "--rate-limit-warning",
          default=30,
          help="When rate limiting, display information that it is happening "
          "if wait interval is higher than this setting. By default no "
          "information will be printed. Set to zero to always see it.",
      )
      @click.option(
          "--error-retry-max",
          default=6,
          help="The maximum amount of times to retry on errors received from "
          "the API, as determined by the --error-retry-codes parameter.",
      )
      @click.option(
          "--error-retry-backoff",
          default=0.23,
          type=float,
          help="The backoff factor determines how long to wait in seconds "
          "between error retries. The backoff factor is multiplied by the "
          "amount of retries so far. So if 0.1, then the wait is 0.1s then "
          "0.2s, then 0.4s, and so forth.",
      )
      @click.option(
          "--error-retry-codes",
          default="500,502,503,504",
          help="The status codes that when received from the API will cause "
          "a retry (if --error-retry-max is > 0). By default this will be for "
          "500, 502, 503 and 504 error codes.",
      )
      @click.pass_context
      @functools.wraps(f)
      def wrapper(ctx, *args, **kwargs):
          # pylint: disable=missing-docstring
          opts = config.get_or_create_options(ctx)
          opts.api_host = kwargs.pop("api_host")
          opts.api_proxy = kwargs.pop("api_proxy")
          opts.api_user_agent = kwargs.pop("api_user_agent")
          opts.api_headers = kwargs.pop("api_headers")
          opts.rate_limit = not kwargs.pop("without_rate_limit")
          opts.rate_limit_warning = kwargs.pop("rate_limit_warning")
          opts.error_retry_max = kwargs.pop("error_retry_max")
          opts.error_retry_backoff = kwargs.pop("error_retry_backoff")
          opts.error_retry_codes = kwargs.pop("error_retry_codes")
  
          def call_print_rate_limit_info_with_opts(rate_info, atexit=False):
              utils.print_rate_limit_info(opts, rate_info, atexit=atexit)
  
          opts.api_config = _initialise_api(
              debug=opts.debug,
              host=opts.api_host,
              key=opts.api_key,
              proxy=opts.api_proxy,
              user_agent=opts.api_user_agent,
              headers=opts.api_headers,
              rate_limit=opts.rate_limit,
              rate_limit_callback=call_print_rate_limit_info_with_opts,
              error_retry_max=opts.error_retry_max,
              error_retry_backoff=opts.error_retry_backoff,
              error_retry_codes=opts.error_retry_codes,
          )
  
          kwargs["opts"] = opts
          return ctx.invoke(f, *args, **kwargs)
  
      return wrapper