code: public void addAccessPoint(String label, String ip, String port, String url, String dataType, String data) {
  
      AccessPoint ap = new AccessPoint();
      ap.label = label;
      ap.ipAddress = ip;
      ap.port = port;
      ap.url = url;
      ap.dataType = dataType;
      ap.data = data;
  
      accessPoints.add(ap);
  
    }
docs: Add a new access point for the service record. This structure exists to
  help deal with network access issues and not multiple contracts. For
  example, a service could have an access point that is different because of
  multiple NICs that host is accessible on. It's not to have a service
  accessible by HTTP and HTTPS - those are actually two different service
  contract IDs. So if you have multiple access points that are actually
  providing connection Information for different contracts, then you've done
  something wrong.
  
  <p>Understand that you don't need to fill out all the fields in the service
  record. Just the ones you need to provide to the client to satisfy the
  service contract. For example, a REST services likely only needs the URL
  provided and a database might need the IP address, port and URL.
  
  <p>Or, it could be a total free-for-all and you can put in totally obscure and
  whacky connection information into the data field.
  
  @param label - hint about why you might need this access point e.g.
  internal or external network
  @param ip - Plain IP address
  @param port - port the service is listening on
  @param url - the URL (or portion of the URL) that the client needs to
  connect
  @param dataType - a hint about what might be in the data section
  @param data - totally free-form data (it's BASE64 encoded in both the XML
  and JSON)