Входящий API. Как учесть в отклике результат внешних действий в API

Во входящем API иногда возникает потребность для выдачи точного результата по некоторому формату. В этом случае мы ставим тип вывода Text и выдаем в SELECT 2 нужный вывод: 

CREATE PROCEDURE [dbo].[api_t1_t1]
	@parameters ExtendedDictionaryParameter READONLY,
	@username nvarchar(256) -- API login (not as_users login)
as
begin
	-- inbound API method
	-- SELECT 1 - API result metadata
	select '' Msg, 1 Result, 0 ErrorCode, 0 OnlyData
	
	-- SELECT 2 -  API data with free col names
    select 'its result from incomeAPI_SP' t1x

   select 'notification' type, 'text1' text , 'editor1' [to], 'common' typeCode, '' url, '' additional

end
	

Однако в этом случае мы не можем учесть результат внешних действий (в данном случае создания уведомления, но могут быть и любые другие действия), задействованных в вызове метода API. 

Чтобы это сделать, необходимо реализовать, необходимо создать еще одну процедуру, которая отличается от начально добавкой суффикса _result

Пример: 

CREATE OR ALTER PROCEDURE [dbo].[api_t1_t1_result]
	@parameters ExtendedDictionaryParameter READONLY,
	@username nvarchar(256), -- API login (not as_users login),
	@outerData nvarchar(max)
as
begin	
	print @outerData
	select 'xxx' Msg, 1 Result
end
	

В итоге наш метод API выдаст по запросу "xxx"

В parameters передается словарь всех тех же параметров, что и был в начальной процедуре API метода, а также специальный параметр FalconApiGuid - он передается как во входную процедуру, так и сюда для возможности идентификации данных, сохраняемых в промежуточных внешних действиях (т.е. передали из action во внешние действия этот guid, сохранили данные по данному Guid в некой таблице, а затем в выходной процедуре _result извлекли эти данные для формирования выходного результата работы API метода).

При этом outerData содержит в себе JSON строку, в котором записаны все результаты по всем вызванным внешним действиям:

 [{"items":[{"key":"result","value":null,"title":null,"value2":"True"},{"key":"id","value":null,"title":null,"value2":"499"}],"result":true,"msg":null,"additionalData":null,"icon":null,"type":null}]

Процедура возвращает модель Result, Msg, ErrorCode, HttpCode, RedirectUrl (если result =1, то будет происходить замена выходного сообщения).

Параметры выходной модели если установлены то подменяют соответствующие параметры SELECT входящего API. 

ВАЖНО! Обязательно ставить тип вывода Text - (иначе будут добавляться ненужные элементы в выходной поток). 

Страница-источник на сайте falconspace.ru