# T-Engines The t-engines provide the basic transform operations. The Transform Service provides a common base for the communication with other components. It is this base that is described in this section. The base is a Spring Boot application to which transform specific code is added and then wrapped in a Docker image with any programs that the transforms need. The base does not need to be used as long as there appears to be a process responding endpoints and messages. A t-engine groups together one of more Transformers. Each Transformer (provided by transform specific code) knows how to perform a set of transformations from one MIME Type to another with a common set of t-options. ~~~yaml 0010 my-t-engine Transformer 1 mimetype A -> mimetype B mimetype A -> mimetype C mimetype B -> mimetype C option1 option2 Transformer 2 mimetype A -> mimetype B mimetype D -> mimetype C option2 option3 0020 another-t-engine ... 0030 yet-another-t-engine ... ~~~ ## Endpoints * `POST /transform` to perform a transform. There are two forms: * For asynchronous transforms: Perform a transform using a `TransformRequest` received from the t-router via a message queue. The `TransformReply` is sent back via the queue. * For synchronous transforms: Performs a transform on content uploaded as a Multipart File and provides the resulting content as a download. Transform options are extracted from the request properties. The following are not added as transform options, but are used to select the transformer: `sourceMimetype` & `targetMimetype`. * `GET /transform/config` to obtain t-config about what the t-engine supports. It has a parameter `configVersion` to allow a caller and the t-engine to negotiate down to a common format. The value is an integer which indicate which elements may to be added to the config. These elements reflect functionality supported by the base (such as pre-signed URLs). The `CoreVersionDecorator` adds to the Config returned by the transform specific code. * `GET /` provides an html test page to upload a source file, enter transform options and issue a synchronous transform request. Useful in testing. * `GET /log` provides a page with basic log information. Useful in testing. * `GET /error` provides an error page when testing. * `GET /version` provides a String message to be included in client debug messages. * `GET /ready` used by Kubernetes as a ready probe. * `GET /live` used by Kubernetes as a ready probe.