You'll want to configure the passthrough service to use "Standard Requests". This means REST requests will pass through a web server (IIS, Apache, etc) to get to IRIS:
https://docs.intersystems.com/irisforhealth20221/csp/docbook/DocBook.UI....

For TLS, you'll enable HTTPS on your web server.

And see this docs on enabling OAuth for web services:
https://docs.intersystems.com/irisforhealth20221/csp/docbook/DocBook.UI....

Yes, the GenericService will send an EnsLib.HTTP.GenericMessage object to your business process. The GenericMessage includes the headers and content of the inbound HTTP request. Your DTL can use these fields to transform to another format.

Similarly, the GenericOperation accepts the same GenericMessage type and uses the values in it to issue an HTTP request to the downstream system.

So all together, this allows you to create a REST web service and/or call out to external REST services using only the GUI.

https://docs.intersystems.com/irisforhealth20221/csp/docbook/DocBook.UI....

Here's a sample class to Base64 encode a stream:

Class Example.B64.Util Extends %RegisteredObject
{

/// Be cautious if changing CHUNKSIZE. Incorrect values could cause the resulting encoded data to be invalid.
/// It should always be a multiple of 57 and needs to be less than ~2.4MB when MAXSTRING is 3641144
Parameter CHUNKSIZE = 2097144;

ClassMethod B64EncodeStream(pStream As %Stream.Object, pAddCRLF As %Boolean = 0) As %Stream.Object
{
    set tEncodedStream=##class(%Stream.GlobalCharacter).%New()
    
    do pStream.Rewind()
    
    while ('pStream.AtEnd) {
        set tReadLen=..#CHUNKSIZE
        set tChunk=pStream.Read(.tReadLen)
        
        do tEncodedStream.Write($System.Encryption.Base64Encode(tChunk,'pAddCRLF))
        if (pAddCRLF && 'pStream.AtEnd) {
            do tEncodedStream.Write($c(13,10))
        }
    }
    
    do tEncodedStream.Rewind()
    
    quit tEncodedStream
}
}