class TransactionResource {

    @ApiOperation(value = "Submit keys to retrieve payload and decrypt it")
    @ApiResponses({@ApiResponse(code = 200, message = "Raw payload", response = byte[].class)})
    @GET
    @Path("receiveraw")
    @Consumes(APPLICATION_OCTET_STREAM)
    @Produces(APPLICATION_OCTET_STREAM)
    public Response receiveRaw(
            @ApiParam("Encoded transaction hash") @NotNull @HeaderParam(value = "c11n-key") String hash,
            @ApiParam("Encoded Recipient Public Key") @HeaderParam(value = "c11n-to") String recipientKey) {

        LOGGER.debug("Received receiveraw request for hash : {}, recipientKey: {}", hash, recipientKey);

        MessageHash transactionHash = Optional.of(hash).map(Base64.getDecoder()::decode).map(MessageHash::new).get();
        PublicKey recipient = Optional.ofNullable(recipientKey).map(Base64.getDecoder()::decode).map(PublicKey::from).orElse(null);
        com.quorum.tessera.transaction.ReceiveRequest request = com.quorum.tessera.transaction.ReceiveRequest.Builder.create()
            .withTransactionHash(transactionHash)
            .withRecipient(recipient)
            .build();

        com.quorum.tessera.transaction.ReceiveResponse receiveResponse = transactionManager.receive(request);

        byte[] payload = receiveResponse.getUnencryptedTransactionData();

        return Response.status(Status.OK).entity(payload).build();
    }

    public  TransactionResource(TransactionManager transactionManager);

}