Loading…
Loading…
Deploy the standalone Docker Compose stack, import a WSDL, configure a SOAP backend, and publish a versioned REST API with a generated OpenAPI v3 spec.
This quickstart provides the fastest path to creating and publishing a REST API facade for an existing SOAP backend service. By following these steps, you will deploy the platform's standalone Docker Compose stack on a single host, use the admin UI to import a WSDL file, configure the connection to your SOAP backend, review the automatically generated OpenAPI v3 specification, and publish a live, versioned service.
This guide focuses on the Publish direction, where the platform exposes a REST interface that proxies requests to a SOAP backend. It is intended for initial evaluation and development on a single host. For production deployments, refer to the installation guides for Kubernetes, OpenShift, or cloud-native platforms.
The process begins by running a local Docker Compose stack. You then interact with the admin UI to perform the onboarding, which involves parsing a WSDL, configuring backend details, and generating the corresponding REST API contract. Once published, the service is immediately available on the runtime component for testing.
Before you begin, ensure your host environment meets the following requirements:
docker compose version.portal.specaria.io) is required for licensing. The platform includes a 14-day offline grace period for transient network interruptions.NOTE
This guide uses placeholders like <angle-brackets>. Substitute these with your own specific values. It is also recommended to review the Core concepts documentation to understand terms like service, operation, mapping version, and direction.
The quickstart process guides you through a sequence of operations to stand up the platform and publish your first API. The platform components work together to ingest a SOAP definition, generate a REST equivalent, and serve traffic.
The flow is as follows:
admin-ui, admin-api, runtime, worker, and a PostgreSQL database using Docker Compose.admin-ui, you import a WSDL. The admin-api parses it, infers RESTful paths and methods, and generates sample payloads.runtime component immediately begins serving traffic for the new REST API, proxying requests to the configured SOAP backend.flowchart TD
subgraph "Local Host"
A[API Consumer]
B[Deploy Stack <br/>(Docker Compose)]
C[Configure .env]
D[Admin UI <br/>(http://localhost:8080)]
E[Runtime]
end
subgraph "Platform Services"
D -- "Import WSDL" --> F{Onboard Service}
F -- "Set Backend URL & Auth" --> G{Configure Backend}
G -- "Review Mappings" --> H{Generate OpenAPI v3}
H -- "Publish v1" --> I{Publish Service}
end
J[SOAP Backend]
A -- "1. REST API Call" --> E
B --> C
C --> E
C --> D
I -- "Activates on" --> E
E -- "2. Proxies SOAP Call" --> J
J -- "3. SOAP Response" --> E
E -- "4. JSON Response" --> A
style A fill:#d4edda,stroke:#155724
style J fill:#f8d7da,stroke:#721c24First, download the s2r deployment bundle from the Specaria portal (portal.specaria.io). This bundle is self-contained and includes the docker-compose.standalone.yml file, an example environment file, and all necessary product images as tar archives. No source code compilation is required.
NOTE
Managed Alternative: For a fully managed deployment, the Specaria portal offers a self-service option to provision the platform directly into your own cloud account (BYOC). The following steps cover the manual Docker Compose setup.
After downloading and unpacking the bundle, navigate into the created directory.
Load Docker Images Run the appropriate script to load the bundled product images into your local Docker daemon. This step only needs to be performed once.
# For Linux or macOS
./scripts/load-images.sh
# For Windows PowerShell
# .\scripts\Load-Images.ps1
Configure Environment Secrets Copy the example environment file to create your local configuration.
cp docker-compose.env.example .env
Next, edit the .env file and provide values for the two required secrets. You can use openssl to generate secure random values.
S2R_DB_PASSWORD=<value-from: openssl rand -base64 24>
S2R_CREDENTIAL_KEY=<value-from: openssl rand -base64 32> # 32-byte AES key
| Variable | Type | Default | Required | Description |
|---|---|---|---|---|
S2R_DB_PASSWORD | string | — | Yes | The password for the PostgreSQL database user. |
S2R_CREDENTIAL_KEY | string | — | Yes | A 32-byte AES key for encrypting backend credentials at rest. If unset, services will fail to start with error S2R-ADM-0419 or S2R-RUN-0419. |
IMPORTANT
The S2R_CREDENTIAL_KEY is critical for data security. Keep this key stable. Regenerating it will render all previously encrypted backend credentials unusable.
Start the Services Use Docker Compose to start the full stack in detached mode. The command points to the standalone configuration file, which exposes the admin UI on a plain HTTP port.
docker compose -f docker-compose.standalone.yml up -d
The stack includes the following services: PostgreSQL, admin-api, runtime, worker, and admin-ui. The initial startup may take 30-60 seconds longer than subsequent starts as the database schema is initialized via Flyway migrations.
Verify Status Check that all containers are running and view the logs to monitor the boot process.
# Check container status
docker compose -f docker-compose.standalone.yml ps
# Tail logs from the admin-api to see migrations and startup
docker compose -f docker-compose.standalone.yml logs -f admin-api
Once started, the admin UI will be available at http://<host>:8080. The default port 8080 is configured by the S2R_ADMIN_UI_HOST_PORT environment variable.
Navigate to http://<host>:8080/ in your web browser. For this quickstart, you can proceed without configuring single sign-on (SSO).
CAUTION
For any deployment beyond local evaluation, secure the admin UI by integrating it with an identity provider (such as IAP, Azure AD, SAML, or OIDC) and configuring role-based access control (RBAC).
From the main Dashboard, navigate to WSDL Onboarding to begin.
In the WSDL Onboarding section, you can import your SOAP contract via file upload, a URL, or by pasting the raw XML. The platform will parse the WSDL and present a review screen with:
GET /customers/{id}), which you can edit.If the WSDL contains errors like missing namespace declarations, you can use the built-in namespace repair tool.
TIP
For large WSDLs, the zero-touch autopilot feature can automate the creation of the draft service, operations, and mappings in a single step, providing a readiness score for each operation.
Next, define the connection details for your SOAP backend. These settings are environment-scoped (e.g., dev, test, prod), allowing you to use different endpoints and credentials for each stage.
Configure the following for your dev environment:
https://<soap-host>/services/<Service>).1.1 or 1.2. This is often pre-filled based on the WSDL.S2R_CREDENTIAL_KEY and are never exposed in logs or API responses.Use the built-in connection / auth diagnostic tool to verify that the platform can reach the backend host and authenticate successfully before proceeding.
The platform generates a deterministic, full-field mapping from the WSDL and produces a standards-compliant OpenAPI v3 document. Before publishing, review the generated contract:
Once the publish-readiness checks are green (e.g., backend is reachable, mappings are complete), you can save and publish the service.
v1) of the service configuration and mappings.v2) along with a detailed change report. You can then activate the new version or roll back to a previous one with a single click.Save the service and set it active to make it live on the runtime.
A published service is immediately available on the runtime component. The URL path is structured to include the direction, environment, and service key.
| Method | Path | Description |
|---|---|---|
| ANY | /publish/<env>/<serviceKey>/<operation-path> | Routes a REST request to a SOAP backend. The HTTP method, path, and parameters are determined by the operation's configuration. The runtime handles the REST-to-SOAP transformation and vice-versa. |
Path Parameters:
env: The environment key, such as dev.serviceKey: The unique key for the published service.operation-path: The RESTful path defined for the operation, including any path parameters (e.g., customers/12345).Example Request:
To call a GetCustomer operation (published as GET /customers/{id}) in the dev environment for a service with the key <serviceKey>:
curl -sS \
"http://<your-host>:8080/publish/dev/<serviceKey>/customers/12345" \
-H "Accept: application/json"
The runtime receives this request, constructs a corresponding SOAP message, calls the configured backend, transforms the SOAP response back into JSON, and returns it to the client.
Navigate to the Observability section in the admin UI to monitor traffic and troubleshoot issues.
correlation ID that is attached to every call. Logs can be filtered by environment, service, operation, and result code.The platform provides specific error codes for common failure scenarios.
| Error Code | HTTP Status | Trigger |
|---|---|---|
S2R-ADM-0419 | — | The admin-api service failed to start because the S2R_CREDENTIAL_KEY environment variable is not set. |
S2R-RUN-0419 | — | The runtime service failed to start because the S2R_CREDENTIAL_KEY environment variable is not set. |
S2R-RUN-0405 | 400 | An API call was made to a runtime path that omits the required direction segment (/publish or /consume). |
S2R-RUN-0413 | 413 | A synchronous request was received with a payload larger than the 30 MB limit. |
Other notable behaviors:
With your first service running, you can explore more advanced features: