Loading…
Loading…
A technical overview of the SOAP-to-REST conversion platform, detailing its architecture, components, data flow, configuration, and operational
The SOAP-to-REST Conversion Platform is a no-code solution for exposing internal SOAP-based backend services as modern RESTful APIs. It acts as a centralized conversion layer, abstracting the complexity of SOAP protocols from API consumers.
The platform is designed to operate entirely within a private network environment. It receives REST requests from an API gateway (such as Apigee), translates them into SOAP requests for legacy backend services, and then transforms the SOAP responses back into RESTful JSON responses for the consumer.
The system is composed of two primary logical parts:
s2r-admin-ui, s2r-admin-api, s2r-worker) that provide a user interface and API for API publishers to configure and manage the API conversions. This includes importing WSDL files, mapping to backend services, generating OpenAPI v3 specifications, and managing versions.s2r-runtime service that performs the live request and response transformations between REST and SOAP. It is built for high-throughput, low-latency processing.This platform enables API publishers to rapidly create and deploy REST interfaces for existing SOAP services without writing integration code, while providing built-in observability, versioning, and policy enforcement.
The platform is deployed as a set of containerized services on Google Cloud Run within a dedicated GCP project. It relies on private network connectivity for all operations, ensuring that neither the platform itself nor the backend SOAP services are exposed to the public internet.
The platform consists of four distinct Cloud Run services:
| Service Name | Plane | Description |
|---|---|---|
s2r-runtime | Data Plane | Handles the real-time conversion of REST requests to SOAP and SOAP responses to REST. It is the high-traffic processing engine. |
s2r-admin-api | Control Plane | Provides backend API endpoints for managing configurations, roles, policies, and viewing observability data. |
s2r-admin-ui | Control Plane | A web-based user interface for API publishers to interact with the s2r-admin-api for no-code API management. |
s2r-worker | Control Plane | Handles asynchronous background jobs initiated by the control plane, such as complex configuration processing or data migrations. |
The primary function of the platform is to process live API traffic. The data flow for a typical request is as follows:
s2r-runtime service based on the request path.s2r-runtime service validates the request, including checking the payload size. It uses a short-lived cache for route resolution.s2r-runtime service transforms the SOAP response back into a RESTful JSON response.flowchart TD
subgraph "API Consumer's Network"
A[API Consumer]
end
subgraph "API Management Layer"
B[API Gateway / Apigee]
end
subgraph "Platform VPC"
C[Internal Load Balancer]
D[SOAP-to-REST Runtime<br>(s2r-runtime)]
end
subgraph "Backend Services VPC"
E[Internal SOAP Backend]
end
A --> B
B --> C
C --> D
D --"SOAP Request"--> E
E --"SOAP Response"--> D
D --"REST Response"--> C
C --> B
B --> AAPI publishers manage the platform's configuration through the control plane. The administrative flow involves:
NOTE
The deployment and import of the generated API proxy into an API gateway like Apigee is a manual process. This platform generates the necessary artifacts (like the OpenAPI spec) but does not automate their deployment into the gateway.
The platform integrates with the Specaria licensing system. This is a mandatory component for the runtime to function.
s2r-runtime service fetches a JSON Web Key Set (JWKS) from api.specaria.io. It uses this key set to validate a license JWT during its operation.api.specaria.io must be enabled in the VPC's network configuration.Platform behavior is controlled through a combination of runtime policies, access control roles, and system parameters.
The s2r-runtime service adheres to several default policies, which are configurable.
| Parameter | Default Value | Description |
|---|---|---|
timeout | 100ms | The default timeout for requests sent from the runtime to the backend SOAP service. |
retries | 2 | The default number of retries the runtime will attempt if a backend request fails. |
retention | 60 days | The default retention period for operational data like logs and audit trails. The source does not specify what data this applies to. |
Access to the control plane is managed via IAM-based roles. These roles are mapped from Cloud Identity groups, which are configured on a per-tenant basis.
| Role Name | Example Group Name | Description |
|---|---|---|
Admin | SOAP-To-REST_Admin@<tenant-domain> | Full administrative access. Can manage settings, role-bindings, operation policies, and API versions. |
Operator | SOAP-To-REST_Oper@<tenant-domain> | Operational access. The source specifies that the Admin API supports operation policy updates and version activation/rollback, but does not specify which of these are available to the Operator role. |
Reader | SOAP-To-REST_Reader@<tenant-domain> | Read-only access. Can view dashboards and configurations. |
Role bindings can be managed via the Admin UI or by directly modifying the s2r_role_binding table in the application database.
All services are accessed through a single regional internal HTTP load balancer. The load balancer uses path-based routing to direct traffic to the appropriate Cloud Run service.
IMPORTANT
The platform has no public endpoints. All access must originate from within the VPC or a peered network. The IP address below is an example; use the provisioned internal IP for your environment.
| Path Pattern | Target Service | Description |
|---|---|---|
http://<INTERNAL_LOAD_BALANCER_IP>/ | s2r-admin-ui | The main entry point for the administrative web interface. |
http://<INTERNAL_LOAD_BALANCER_IP>/admin/* | s2r-admin-api | The API endpoint for all control plane operations. |
http://<INTERNAL_LOAD_BALANCER_IP>/worker/* | s2r-worker | The endpoint for invoking or managing asynchronous background jobs. |
http://<INTERNAL_LOAD_BALANCER_IP>/dev/* | s2r-runtime | Path for routing development environment traffic to the runtime service. |
http://<INTERNAL_LOAD_BALANCER_IP>/test/* | s2r-runtime | Path for routing test environment traffic to the runtime service. |
http://<INTERNAL_LOAD_BALANCER_IP>/prod/* | s2r-runtime | Path for routing production environment traffic to the runtime service. |
s2r-runtime service.s2r-runtime service is configured with a minimum of 1 instance and scales automatically based on traffic.s2r-runtime service with a payload larger than 30 MB.413 Payload Too Large status code.result_code=rejected and a specific internal error code S2R-RUN-0413. This allows for precise monitoring and alerting on payload size violations.The source repository contains further detailed design and planning documentation:
docs/architecture.md: Target architecture and data flow diagrams.docs/decisions.md: A log of key technical decisions and their trade-offs.docs/plan.md: The phased implementation plan for the platform.docs/backlog.md: The prioritized feature backlog and acceptance criteria.docs/questions.md: A list of open questions and resolved decision gates, including the payload size limit.docs/lld/: Low-level design documents containing implementation names, contracts, and database schema.