É possível adicionar recursos REST da sua extensão para serem servidos pelo CIS.

Para isso basta criar um plugin para o CIS e implementar a função TratarREST (C#/DLL) / tratar_REST (Python).

Como funciona?

Todos os recursos do CIS funcionam sob o caminho /v1.

Qualquer caminho diferente deste pode ser utilizado pelo plugin.

Por padrão, haverá um único caminho com o nome do plugin:

http://servidor-cis:porta-cis/NomeDoPlugin/qualquer_recurso/

Contudo, é possível definir um ou mais caminhos implementando a função ObterDadosREST (C#/DLL) / obter_dados_REST (Python):

http://servidor-cis:porta-cis/Caminho1/qualquer_recurso/

http://servidor-cis:porta-cis/Caminho2/qualquer_recurso/

Todos os recursos dentro dos caminhos especificados serão encaminhandos para o plugin.

Exemplo em Python
def tratar_REST(dados):
    request = json.loads(dados)

    if request['URI'].startswith('/Caminho1/teste1/'):
        if request['Command'] == 'GET':
            conteudo = json.dumps({'teste': True})
            return json.dumps(dict(Content=conteudo, StatusCode=200))
     if request['URI'].startswith('/Caminho2/sub_caminho/'):
        if request['Command'] == 'GET':
            conteudo = json.dumps({'teste': True})
            return json.dumps(dict(Content=conteudo, StatusCode=200))
      return None

def obter_dados_REST():
	return json.dumps({'caminhos': ['Caminho1', 'Caminho2']})

Importante!

  1. A URL e os parâmetros devem ser validados pelo plugin e se não forem reconhecidos o plugin deve retornar Null (C#) ou None (Python).
  2. No JSON retornado o campo Content sempre deverá ser um texto.
  3. Os nomes dos caminhos devem ser escolhidos com cuidado para evitar conflito com caminhos definidos por outros plugins. Evite nomes genéricos ou não relacionados ao produto/empresa (por exemplo, 'cadastro', 'api', 'servico' não são boas escolhas). Contudo, os caminhos internos são de uso livre pois estão sob domínio do plugin, ex: /ACME/cadastro