I popped in some debug points in webuidriver.csp and it looks like the url is still geting stripped post .csp.
@Timothy Leavitt 
I was wondering if we know if this works with apache out of the box?

CUSTRUSH>zw ^XVMC
^XVMC("base")="/isc/studio/usertemplates/gitsourcecontrol/webuidriver.csp///"
^XVMC("handled")=0
^XVMC("namepace")=""
^XVMC("pagePath")=""
^XVMC("url")=""

If i simplify to:

 

location /isc/studio/usertemplates {
    CSP on;
    CSPNSD_pass 127.0.0.1:7038;
}

I get the same message as in the screenshot below and the logs all show 200 so maybe I can KISS and use what you suggested but it still seems like I'm having some difficulty on the back end:

 

2024-11-26 10:27:20 172.18.0.1 - - [26/Nov/2024:18:27:20 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 713 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:20 172.18.0.1 - - [26/Nov/2024:18:27:20 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 379 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:20 172.18.0.1 - - [26/Nov/2024:18:27:20 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 363 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:20 172.18.0.1 - - [26/Nov/2024:18:27:20 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 713 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:23 172.18.0.1 - - [26/Nov/2024:18:27:23 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 380 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:23 172.18.0.1 - - [26/Nov/2024:18:27:23 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 380 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:23 172.18.0.1 - - [26/Nov/2024:18:27:23 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 591 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:23 172.18.0.1 - - [26/Nov/2024:18:27:23 +0000] "GET /csp/healthshare/custrush/EnsPortal.Dialog.SourceControlManager.zen?$ZEN_POPUP=1&TARGET=%2Fisc%2Fstudio%2Fusertemplates%2Fgitsourcecontrol%2Fwebuidriver.csp%2FCUSTRUSH%2FCUSTRUSHPKG.FoundationProduction.CLS%3FCSPSHARE%3D1%26CSPCHD%3D000000010000NxIbs1CgxCJOtVsUUrplExuBS4wQsqBKgt0G1l%26Project%3D%26Document%3Dlocalhost%253A9092%252FCUSTRUSH%252FCUSTRUSHPKG.FoundationProduction.CLS%26Namespace%3DCUSTRUSH%26User%3D_SYSTEM%26 HTTP/1.1" 200 15250 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:24 172.18.0.1 - - [26/Nov/2024:18:27:24 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 385 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:24 172.18.0.1 - - [26/Nov/2024:18:27:24 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 363 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:24 172.18.0.1 - - [26/Nov/2024:18:27:24 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 379 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:24 172.18.0.1 - - [26/Nov/2024:18:27:24 +0000] "POST /csp/healthshare/custrush/%25CSP.Broker.cls HTTP/1.1" 200 363 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.ProductionConfig.zen?$NAMESPACE=CUSTRUSH&$NAMESPACE=CUSTRUSH&" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
2024-11-26 10:27:26 172.18.0.1 - - [26/Nov/2024:18:27:25 +0000] "GET /isc/studio/usertemplates/gitsourcecontrol/webuidriver.csp/CUSTRUSH/CUSTRUSHPKG.FoundationProduction.CLS?CSPSHARE=1&Project=&Document=localhost%3A9092%2FCUSTRUSH%2FCUSTRUSHPKG.FoundationProduction.CLS&Namespace=CUSTRUSH&User=_SYSTEM&CSPCHD=000000010000NxIbs1CgxCJOtVsUUrplExuBS4wQsqBKgt0G1l HTTP/1.1" 200 23 "http://localhost:9092/csp/healthshare/custrush/EnsPortal.Dialog.SourceControlManager.zen?$ZEN_POPUP=1&TARGET=%2Fisc%2Fstudio%2Fusertemplates%2Fgitsourcecontrol%2Fwebuidriver.csp%2FCUSTRUSH%2FCUSTRUSHPKG.FoundationProduction.CLS%3FCSPSHARE%3D1%26CSPCHD%3D000000010000NxIbs1CgxCJOtVsUUrplExuBS4wQsqBKgt0G1l%26Project%3D%26Document%3Dlocalhost%253A9092%252FCUSTRUSH%252FCUSTRUSHPKG.FoundationProduction.CLS%26Namespace%3DCUSTRUSH%26User%3D_SYSTEM%26" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"

This was part of the problem. I'm still working through this however I did find I had to do a few more things:

1.) Update the volume mappings on my docker-compose.yml to make the source control files available to my webgateway container. This wasn't necessary before because we weren't using the reverse proxy to access these pages.
2.) I had to update the rewrite rule like you suggested, however with some additional rules. I needed it to not treat anything past .csp as part of the path so I ended up doing this for now. Im still running into issues, however. I may need to add multiple lines.

I'm getting a generic 500 now. Going to keep playing with it to see if I can't get it to work as expected and look through ISCLOG

location ~ ^/isc/studio/usertemplates/gitsourcecontrol/webuidriver\.csp(.*)$ {

CSP on;

CSPNSD_pass 127.0.0.1:7038;

CSPNSD_response_headers_maxsize 8k;

CSPNSD_connect_timeout 300s;

CSPNSD_send_timeout 300s;

CSPNSD_read_timeout 300s;

proxy_pass http://localhost;

proxy_http_version 1.1;

# proxy_set_header Upgrade $http_upgrade;

# proxy_set_header Connection "upgrade";

# try_files $uri $uri/ /isc/studio/usertemplates/gitsourcecontrol/webuidriver.csp$1;

}
ClassMethod ConvertAthenaTimes(pDate As %String = "", pStartTime As %String = "", pDuration As %String = "", pTZ As %String = "") As %String
{
    //Set Defaults and Return if no Values Passed in
    Set return = ""
    q:pDate="" return
    q:pStartTime="" return
    //Convert pDuration into Seconds
    s:pDuration]"" pDuration=pDuration*60
    s dt=$zdth(pDate_" "_pStartTime_pTZ,1,5)
    if pDuration set $p(dt,",",2)=$p(dt,",",2)+pDuration
    set return=$zdt(dt_pTZ,3,5)

    // do something
    q return
}

ClassMethod TestFunction()
{
    try{
        w ##class(SERVICESVCPKG.Model.Functions.ProcessFunctions).ConvertAthenaTimes("7/21/2022","08:00",30,"-05:00")
    }catch(ex){
    #dim ex As %Exception.AbstractException
    w ex.DisplayString()
    }
}

I made a few tweaks and got to this:

2022-07-21T08:30:00+00:00

Not Quite sure how to get that TZ to change outside of changing the display format and just appending the pTZ parameter which would work. Not sure if $ZDATETIMEH handles time zone conversions when going from internal time or not. 

Thank you both so much! Now to figure out how to do this with embedded objects. For my destination objects. 

I'd imagine I'd define in my parent class

Property ExternalAlias As SERVICESVCPKG.Model.IntSvc.ExternalAlias(%JSONFIELDNAME = "ExternalAlias", %JSONINCLUDE = "inout");
Class SERVICESVCPKG.Model.IntSvc.ExternalAlias Extends (%SerialObject, %JSON.Adaptor)
{

Parameter %JSONENABLED = 1;

Property TenantID As %String(%JSONFIELDNAME = "TenantID", %JSONINCLUDE = "inout");

Property SystemID As %String(%JSONFIELDNAME = "SystemID", %JSONINCLUDE = "inout");

Property ExternalType As %String(%JSONFIELDNAME = "ExternalType", %JSONINCLUDE = "inout");

Property ExternalID As %String(%JSONFIELDNAME = "ExternalID", %JSONINCLUDE = "inout");

}

Thank you all again, I swear I've been banging my head against this for like a week with 10 tabs of docs open.