docs: def refresh(ctx, opts, owner_repo_identifier, show_tokens, yes):
      """
      Refresh an entitlement in a repository.
  
      Note that this changes the token associated with the entitlement.
  
      - OWNER/REPO/IDENTIFIER: Specify the OWNER namespace (i.e. user or org),
        and the REPO name that has an entitlement identified by IDENTIFIER. All
        separated by a slash.
  
          Example: 'your-org/your-repo/abcdef123456'
  
      Full CLI example:
  
        $ cloudsmith ents refresh your-org/your-repo/abcdef123456
      """
      owner, repo, identifier = owner_repo_identifier
  
      refresh_args = {
          "identifier": click.style(identifier, bold=True),
          "repository": click.style(repo, bold=True),
      }
  
      # Use stderr for messages if the output is something else (e.g.  # JSON)
      use_stderr = opts.output != "pretty"
  
      prompt = (
          "refresh the %(identifier)s entitlement for the %(repository)s "
          "repository" % refresh_args
      )
      if not utils.confirm_operation(prompt, assume_yes=yes, err=use_stderr):
          return
  
      click.secho(
          "Refreshing %(identifier)s entitlement for the %(repository)s "
          "repository ... " % refresh_args,
          nl=False,
          err=use_stderr,
      )
  
      context_msg = "Failed to refresh the entitlement!"
      with handle_api_exceptions(ctx, opts=opts, context_msg=context_msg):
          with maybe_spinner(opts):
              entitlement = api.refresh_entitlement(
                  owner=owner, repo=repo, identifier=identifier, show_tokens=show_tokens
              )
  
      click.secho("OK", fg="green", err=use_stderr)
  
      print_entitlements(opts=opts, data=[entitlement], show_list_info=False)