Может ли микросервис based on REST API вызывать другой микросервис based on SOAP API?
Да.
1. Это возможно только если каждая сторона имеет клиента, способных к взаимодействию друг с другом.
Да. Но взаимодействие редко будет двусторонним. Обычно один из сервисов будет клиентом, то есть посылать запрос, а второй сервером, то есть обрабатывать его. Соответственно клиент (то есть программная компонента, формирующая запрос) нужна будет тому, сервису, который будет запрос посылать. Для обработки запроса клиент не нужен. (тут я применил слово "клиент" в двух разных смыслах, надеюсь не запутаешься)
2. SOAP API это про Web Services ,а не про Microservices.
В 99.99% да. Microservices - это про количество функционала у программы. SOAP API - это про интерфейс программы.
Вообще SOAP - это просто правила формирования XML. То есть если ты карандашом на бумаге напишешь XML, свернешь этот листок и отдашь его своему другу, который его проглотит, и поедет, например, к твоей девушке, там просрётся, вытащит из своего говна этот листочек, и отдаст ей - то это тоже будет общение по SOAP протоколу. Главное - чтобы XML была сформирована по определенным правилам.
Но чаще всего в качестве транспорта данных используют не желудок своего друга, а HTTP протокол.
Это возможно только если Decoding-Encoding на обоих сторонах будет одинаковый
Правила Decoding-Encoding регулируются стандартами, обе стороны обязаны их соблюдать.
Это возможно только если на обеих сторонах используется одинаковая Decoding-Encoding library (например JAX API имеет для SOAP: JAXB, и для REST: JAX-RS). Но если использовать разные Decoding-Encoding library, то не сработает
Стороны могут быть реализованы даже на разных языках программирования, на их общение это никак не повлияет.