Loading…
Loading…
Specaria S2R is a bidirectional SOAP-to-REST and REST-to-SOAP conversion platform that runs in your VPC to bridge legacy SOAP services and modern REST
Specaria S2R (SOAP-2-REST) is a service that converts between SOAP and REST protocols in both directions. It runs entirely inside your own Virtual Private Cloud (VPC), alongside your existing API gateway and backend services. It is designed to bridge legacy SOAP-based systems with modern REST/JSON-based API consumers.
The platform generates a deterministic, full-field mapping for each service directly from its contract (WSDL or OpenAPI). This process covers every element, attribute, and optional field automatically, without requiring you to learn a proprietary transformation language or write per-service scripts. For cases that require custom business logic, mappings can be overridden on a field-by-field basis through the Admin UI. All mappings are versioned and immutable, allowing for one-click rollbacks.
The product is at General Availability (GA) as of version 1.0.
Specaria S2R can perform conversions in two directions on the same runtime. The direction is configured on a per-service basis.
This mode exposes a legacy SOAP service as a modern REST/JSON API.
This mode allows a legacy SOAP client to communicate with a modernized REST backend.
The platform supports both SOAP 1.1 and SOAP 1.2, with full XSD coverage. The runtime automatically detects the SOAP version from the message body and Content-Type header.
Specaria S2R is designed to integrate with your existing infrastructure, not replace it. Your API gateway continues to handle responsibilities like authentication, rate-limiting, and web application firewall (WAF) duties. S2R sits alongside your gateway and backend services. It can listen to gateway-edge traffic for service discovery and handles the protocol conversion for production traffic.
The following diagram illustrates the typical request flow for the "Publish" use case, where a REST consumer accesses a SOAP backend through S2R.
flowchart TD
subgraph "API Consumers"
Consumer["REST Consumer"]
end
subgraph "Your VPC"
Gateway["Gateway / Load Balancer"]
S2R["Specaria S2R"]
Backend["SOAP Backend Service"]
end
Consumer -- REST Request --> Gateway
Gateway -- Proxies Request --> S2R
S2R -- SOAP Request --> Backend
Backend -- SOAP Response --> S2R
S2R -- REST Response --> Gateway
Gateway -- Proxies Response --> ConsumerIMPORTANT
Specaria S2R is designed for internal use and does not expose any public endpoints itself. All access to the platform is managed through your own network and gateway. Backend credentials are encrypted at rest and are never logged or returned in plaintext.
The platform consists of several distinct services that share a single PostgreSQL database for configuration and state. The control plane (for management) and data plane (for traffic) are separate to ensure that operator activity does not impact production API performance.
| Component | Role |
|---|---|
| Admin API (control plane) | Manages WSDL/OpenAPI imports, service configuration (CRUD), mapping generation, versioning, and publishing state. |
| Runtime (data plane) | Handles live production traffic. Converts requests and responses between SOAP and REST, routes calls to the backend, and emits metrics and audit events. |
| Worker | Executes background jobs, including service discovery aggregation, curation of learned examples, specification generation, and alert evaluation. |
| Admin UI | Provides a no-code web portal for operators to use the Admin API. Features include an onboarding wizard, dashboards, log search, and audit trail review. |
| PostgreSQL | Acts as the source of truth for all metadata, mappings, versions, audit logs, and aggregation tables. All tables created by the platform are prefixed with s2r_. |
The following diagram shows how these components interact.
flowchart TD
subgraph "Operators"
Operator["Platform Engineer /<br/>Integration Architect"]
end
subgraph "Specaria S2R Platform"
UI["Admin UI"]
Admin["Admin API (Control Plane)"]
Runtime["Runtime (Data Plane)"]
Worker["Worker (Background Jobs)"]
DB[(PostgreSQL Database)]
end
subgraph "External Systems"
Consumer["API Consumer Traffic"]
Backend["Backend Service"]
end
Operator --> UI
UI --> Admin
Admin --> DB
Worker --> DB
Consumer --> Runtime
Runtime --> Backend
Runtime --> DB
Backend --> Runtime
Runtime --> ConsumerThis documentation is intended for the technical teams responsible for operating the platform: