public GetUploadUrlsResponse getUploadUrl(
      @NotNull final String jobId,
      @NotNull final String dataClass,
      @NotNull final List<String> dataIds)
      throws IOException, CopyExceptionWithFailureReason {
    final List<AuthorizeUploadRequest> uploadRequestList =
        dataIds.stream()
            .map(dataId -> AuthorizeUploadRequest.newBuilder().setDataId(dataId).build())
            .collect(Collectors.toList());

    final GetUploadUrlsRequest.Builder getUploadUrlsRequestBuilder =
        GetUploadUrlsRequest.newBuilder();

    if (JobMetadata.getExportService() != null) {
      getUploadUrlsRequestBuilder.setExportService(JobMetadata.getExportService());
    }

    getUploadUrlsRequestBuilder.setDataClass(dataClass);

    getUploadUrlsRequestBuilder.setImportSessionId(jobId).addAllUploadRequests(uploadRequestList);

    final byte[] payload = getUploadUrlsRequestBuilder.build().toByteArray();
    final byte[] getUploadUrlsResponseData =
        makePhotosServicePostRequest(baseUrl + "getuploadurls", payload);
    final GetUploadUrlsResponse getUploadUrlsResponse =
        GetUploadUrlsResponse.parseFrom(getUploadUrlsResponseData);
    return getUploadUrlsResponse;
  }
An interface that is synonymous to HTTP client to interact with the Apple Photos APIs.
extensions/data-transfer/portability-data-transfer-apple/src/main/java/org/datatransferproject/datatransfer/apple/photos/AppleMediaInterface.java