code: def send(self, did, agreement_id, service_definition_id, signature,
               consumer_account, auto_consume=False):
          
          asset = self._asset_resolver.resolve(did)
          service_agreement = ServiceAgreement.from_ddo(service_definition_id, asset)
          # subscribe to events related to this agreement_id before sending the request.
          logger.debug(f'Registering service agreement with id: {agreement_id}')
          publisher_address = self._keeper.did_registry.get_did_owner(asset.asset_id)
          condition_ids = service_agreement.generate_agreement_condition_ids(
              agreement_id, asset.asset_id, consumer_account.address, publisher_address, self._keeper)
  
          register_service_agreement_consumer(
              self._config.storage_path,
              publisher_address,
              agreement_id,
              did,
              service_agreement,
              service_definition_id,
              service_agreement.get_price(),
              asset.encrypted_files,
              consumer_account,
              condition_ids,
              self._asset_consumer.download if auto_consume else None,
          )
  
          return BrizoProvider.get_brizo().initialize_service_agreement(
              did,
              agreement_id,
              service_definition_id,
              signature,
              consumer_account.address,
              service_agreement.endpoints.service
          )
docs: Send a signed service agreement to the publisher Brizo instance to
          consume/access the service.
  
          :param did: str representation fo the asset DID. Use this to retrieve the asset DDO.
          :param agreement_id: 32 bytes identifier created by the consumer and will be used
           on-chain for the executed agreement.
          :param service_definition_id: str identifies the specific service in
           the ddo to use in this agreement.
          :param signature: str the signed agreement message hash which includes
           conditions and their parameters values and other details of the agreement.
          :param consumer_account: Account instance of the consumer
          :param auto_consume: boolean tells this function wether to automatically trigger
              consuming the asset upon receiving access permission
          :raises OceanInitializeServiceAgreementError: on failure
          :return: bool