docs: def build_service(service_descriptor, did):
          """
          Build a service.
  
          :param service_descriptor: Tuples of length 2. The first item must be one of ServiceTypes
          and the second item is a dict of parameters and values required by the service
          :param did: DID, str
          :return: Service
          """
          assert isinstance(service_descriptor, tuple) and len(
              service_descriptor) == 2, 'Unknown service descriptor format.'
          service_type, kwargs = service_descriptor
          if service_type == ServiceTypes.METADATA:
              return ServiceFactory.build_metadata_service(
                  did,
                  kwargs['metadata'],
                  kwargs['serviceEndpoint']
              )
  
          elif service_type == ServiceTypes.AUTHORIZATION:
              return ServiceFactory.build_authorization_service(
                  kwargs['serviceEndpoint']
              )
  
          elif service_type == ServiceTypes.ASSET_ACCESS:
              return ServiceFactory.build_access_service(
                  did, kwargs['price'],
                  kwargs['consumeEndpoint'], kwargs['serviceEndpoint'],
                  kwargs['timeout'], kwargs['templateId']
              )
  
          elif service_type == ServiceTypes.CLOUD_COMPUTE:
              return ServiceFactory.build_compute_service(
                  did, kwargs['price'],
                  kwargs['consumeEndpoint'], kwargs['serviceEndpoint'], kwargs['timeout']
              )
  
          raise ValueError(f'Unknown service type {service_type}')