Expose SOAP end-point through standard routing
Overview
Provide a binding for CRM_Utils_SoapServer in the conventional routing system.
Example use-case
- Create a D8 site
- Connect an email return channel using SOAP (eg CiviSMTP)
Current behavior
- There is a binding through the
extern/soap.php
. - There are tests for the REST contract in
E2E_Extern_SoapTest
- The end-point is difficult to use/deploy in environments like D8.
Proposed behavior
- There is another binding
civicrm/api/soap
which speaks the same protocol. - The SoapTest hits both end-points (depending on what's valid/available for the given build).
- References to the SOAP endpoint are constructed via
CRM_Utils_System::externUrl('extern/soap')
Comments
- This is an offshoot of drupal#7 (closed) and cloud-native#16 (moved)
- If issue #2077 (closed) is resolved, then this will be easy.
- There is a draft/WIP PR: https://github.com/civicrm/civicrm-core/pull/18103
- I think it's worth seriously considering an alternative -- eg provide a non-SOAP replacement for pushing in email notifications, e.g. through the REST API.