code: def create_or_update_role(self, name, azure_roles, ttl="", max_ttl="", mount_point=DEFAULT_MOUNT_POINT):
          
          params = {
              'azure_roles': json.dumps(azure_roles),
              'ttl': ttl,
              'max_ttl': max_ttl,
          }
          api_path = '/v1/{mount_point}/roles/{name}'.format(
              mount_point=mount_point,
              name=name
          )
          return self._adapter.post(
              url=api_path,
              json=params,
          )
docs: Create or update a Vault role.
  
          The provided Azure roles must exist for this call to succeed. See the Azure secrets roles docs for more
          information about roles.
  
          Supported methods:
              POST: /{mount_point}/roles/{name}. Produces: 204 (empty body)
  
  
          :param name: Name of the role.
          :type name: str | unicode
          :param azure_roles:  List of Azure roles to be assigned to the generated service principal.
          :type azure_roles: list(dict)
          :param ttl: Specifies the default TTL for service principals generated using this role. Accepts time suffixed
              strings ("1h") or an integer number of seconds. Defaults to the system/engine default TTL time.
          :type ttl: str | unicode
          :param max_ttl: Specifies the maximum TTL for service principals generated using this role. Accepts time
              suffixed strings ("1h") or an integer number of seconds. Defaults to the system/engine max TTL time.
          :type max_ttl: str | unicode
          :param mount_point: The "path" the method/backend was mounted on.
          :type mount_point: str | unicode
          :return: The response of the request.
          :rtype: requests.Response