docs: def endpoint_activate(
      endpoint_id,
      myproxy,
      myproxy_username,
      myproxy_password,
      myproxy_lifetime,
      web,
      no_browser,
      delegate_proxy,
      proxy_lifetime,
      no_autoactivate,
      force,
  ):
      """
      Executor for `globus endpoint activate`
      """
      default_myproxy_username = lookup_option(MYPROXY_USERNAME_OPTNAME)
      client = get_client()
  
      # validate options
      if web + myproxy + bool(delegate_proxy) > 1:
          raise click.UsageError(
              "--web, --myproxy, and --delegate-proxy are mutually exclusive."
          )
      if no_autoactivate and not (myproxy or web or delegate_proxy):
          raise click.UsageError(
              "--no-autoactivate requires another activation method be given."
          )
      if myproxy_username and not myproxy:
          raise click.UsageError("--myproxy-username requires --myproxy.")
      if myproxy_password and not myproxy:
          raise click.UsageError("--myproxy-password requires --myproxy.")
      # NOTE: "0" is a legitimate, though weird, value
      # In the case where someone is setting this value programatically,
      # respecting it behaves more consistently/predictably
      if myproxy_lifetime is not None and not myproxy:
          raise click.UsageError("--myproxy-lifetime requires --myproxy.")
      if no_browser and not web:
          raise click.UsageError("--no-browser requires --web.")
      if proxy_lifetime and not delegate_proxy:
          raise click.UsageError("--proxy-lifetime requires --delegate-proxy.")
  
      # check if endpoint is already activated unless --force
      if not force:
          res = client.endpoint_autoactivate(endpoint_id, if_expires_in=60)
  
          if "AlreadyActivated" == res["code"]:
              formatted_print(
                  res,
                  simple_text=(
                      "Endpoint is already activated. Activation "
                      "expires at {}".format(res["expire_time"])
                  ),
              )
              return
  
      # attempt autoactivation unless --no-autoactivate
      if not no_autoactivate:
  
          res = client.endpoint_autoactivate(endpoint_id)
  
          if "AutoActivated" in res["code"]:
              formatted_print(
                  res,
                  simple_text=(
                      "Autoactivation succeeded with message: {}".format(res["message"])
                  ),
              )
              return
  
          # override potentially confusing autoactivation failure response
          else:
              message = (
                  "The endpoint could not be auto-activated.\n\n"
                  + activation_requirements_help_text(res, endpoint_id)
              )
              res = {"message": message}
  
      # myproxy activation
      if myproxy:
  
          # get username and password
          if not (myproxy_username or default_myproxy_username):
              myproxy_username = click.prompt("Myproxy username")
          if not myproxy_password:
              myproxy_password = click.prompt("Myproxy password", hide_input=True)
  
          no_server_msg = (
              "This endpoint has no myproxy server "
              "and so cannot be activated through myproxy"
          )
  
          requirements_data = client.endpoint_get_activation_requirements(
              endpoint_id
          ).data
  
          if not len(requirements_data["DATA"]):
              raise click.ClickException(no_server_msg)
  
          for data in requirements_data["DATA"]:
              # skip non-myproxy values
              # although the API does not practice this today, in theory other
              # activation types may have fields with the same names...
              if data["type"] != "myproxy":
                  continue
  
              if data["name"] == "passphrase":
                  data["value"] = myproxy_password
              if data["name"] == "username":
                  data["value"] = myproxy_username or default_myproxy_username
              if data["name"] == "hostname" and data["value"] is None:
                  raise click.ClickException(no_server_msg)
              # NOTE: remember that "0" is a possible value
              if data["name"] == "lifetime_in_hours" and myproxy_lifetime is not None:
                  data["value"] = str(myproxy_lifetime)
  
          res = client.endpoint_activate(endpoint_id, requirements_data)
  
      # web activation
      elif web:
          url = "https://app.globus.org/file-manager" "?origin_id={}".format(endpoint_id)
          if no_browser or is_remote_session():
              res = {"message": "Web activation url: {}".format(url), "url": url}
          else:
              webbrowser.open(url, new=1)
              res = {"message": "Browser opened to web activation page", "url": url}
  
      # delegate proxy activation
      elif delegate_proxy:
          requirements_data = client.endpoint_get_activation_requirements(
              endpoint_id
          ).data
          filled_requirements_data = fill_delegate_proxy_activation_requirements(
              requirements_data, delegate_proxy, lifetime_hours=proxy_lifetime or 12
          )
          res = client.endpoint_activate(endpoint_id, filled_requirements_data)
  
      # output
      formatted_print(res, text_format=FORMAT_TEXT_RAW, response_key="message")