@Override
  public String sendPostRequest(@NotNull String url, @NotNull final byte[] requestData)
      throws IOException, CopyExceptionWithFailureReason {
    final String correlationId = UUID.randomUUID().toString();
    final UUID jobId = JobMetadata.getJobId();
    monitor.info(
        () -> "POST Request from Apple Signal Handler",
        Headers.CORRELATION_ID,
        correlationId,
        AuditKeys.uri,
        url,
        AuditKeys.jobId,
        jobId.toString());

    HttpURLConnection con = null;
    String responseString = null;
    try {
      URL signalUrl = new URL(url);

      con = (HttpURLConnection) signalUrl.openConnection();
      con.setDoOutput(true);
      con.setRequestMethod("POST");
      con.setRequestProperty(Headers.AUTHORIZATION.getValue(), authData.getAccessToken());
      con.setRequestProperty(Headers.CORRELATION_ID.getValue(), correlationId);

      IOUtils.write(requestData, con.getOutputStream());
      responseString = IOUtils.toString(con.getInputStream(), StandardCharsets.ISO_8859_1);

    } catch (IOException e) {
      try {
        monitor.severe(
            () -> "Exception from POST in AppleSignalInterface",
            Headers.CORRELATION_ID.getValue(),
            correlationId,
            AuditKeys.jobId,
            jobId.toString(),
            AuditKeys.error,
            e.getMessage(),
            AuditKeys.errorCode,
            con.getResponseCode(),
            e);
        convertAndThrowException(e, con);
      } finally {
        con.disconnect();
      }
      return responseString;
    }
    return null;
  }
An Interface to send the Transfer Signals to Apple.
extensions/data-transfer/portability-data-transfer-apple/src/main/java/org/datatransferproject/datatransfer/apple/signals/AppleSignalInterface.java