Хорошо предлагать несколько выходов, таких как JSON, CSV, YAML или XML, - это дает конечному пользователю комфорт при очень небольших затратах! Выгрузка данных всегда проще, чем обработка, и говорят, что по какой-то причине они уже анализируют JSON - гораздо проще просто подключить это к вашему API, чем реализовать, скажем, XML-парсер. В настоящее время я вижу повсюду XML-парсеры, так что это, вероятно, не должно быть проблемой, но мне нравится более "воздушная" природа JSON; Я немного посмотрел на YAML, но никогда не использовал его - но он выглядит многообещающим, я определенно буду использовать это для файлов конфигурации моего следующего проекта.
Что касается безопасности всего, что динамически обрабатывает любой ввод, который дает пользователь, то к такому вводу следует относиться как к чему-то, что вы бы не совали даже палкой.
ИМХО REST без сохранения состояния лучше, чем SOAP, поскольку он требует меньших накладных расходов, можно легко связаться с REST-api вручную, используя curl или wget из терминала. Старт, так сказать.
Я бы порекомендовал вам сделать глубокий вдох, карандаш и бумагу, сесть и набросать все, что будет необходимо. Затем вы удаляете менее важные вещи, берете новую бумагу и начинаете ее организовывать. Вы можете добавить менее важные вещи в следующую версию API.
Постарайтесь спроектировать API так, чтобы вы не замыкались в углу, не делали предположений о том, куда он пойдет дальше.