API 1:1
CREDENCIALConceitos
Todos os robôs da Oystr que são utilizados através da API 1:1 possuem um nome e versão. Diferente do modelo em lote, onde existe o conceito de filas e execuções com múltiplos itens, na API 1:1 cada requisição representa a execução de um único item de forma isolada.
Cada chamada realizada na API 1:1 dispara uma execução individual de robô, responsável por processar os dados enviados e retornar um resultado específico para aquele item. Essas execuções são independentes entre si e não compartilham estado ou fila.
De maneira geral, para executar um robô utilizando a API 1:1, temos o seguinte fluxo:
| Ordem | Tipo | Descrição |
|---|---|---|
| *0.1* | **Opcional** | *Validar as credenciais que serão utilizadas pelos robôs para acessar um sistema (tribunal, gestão jurídico, etc)* |
| 1 | **Obrigatório** | Criar execução do item e receber o identificador da execução (id assíncrono) |
| 2 | **Obrigatório** | Consultar o retorno/status da execução |
| 3 | **Obrigatório** | Obter o resultado final da execução |
0.1 - Validar Credenciais
POST: https://api4.oystr.com.br/credentials/validate/:botId/v3.0.0-dev
USUÁRIOUsuário/Senha E- SENHA (UP)UP
objeto “credentials”“credentials”, com par usuáusuário e senha, seráserá utilizado pelo robôrobô para conseguir acesso ao sistema no qual ele iráirá executar as tarefas. Por exemplo, em um robôrobô de tribunal onde a tarefa éé obter a úúltima movimentaçãmovimentação processual, esse usuáusuário/senha seráserá utilizado para entrar no sistema do tribunal.
Quando informado na requisiçãrequisição (via arquivo payload ou especificado no body da requisiçãrequisição), éé necessánecessário seguir o formato abaixo:
{
"username": "...",
"password": "...",
"credentialsOption": "..."
}
ParâParâmetros
| Tipo | ||
|---|---|---|
| username | String ( |
|
| password | String ( |
Senha correspondente ao |
| credentialsOption | String (opcional) | Valor opcional que |
CERTIFICADOCertificado Digital A1 (CP)- CP
O objeto “credentials”“credentials” com certificado A1 seráserá utilizado pelo robôrobô para conseguir acesso ao sistema no qual ele iráirá executar as tarefas. Por exemplo, em um robôrobô unificado intimaçõintimações onde a tarefa éé obter a todas as intimaçõintimações disponídisponíveis para o advogado em diversos tribunais do Brasil, esse certificado A1 seráserá utilizado para entrar no sistema de cada tribunal especificado.
Quando informado na requisiçãrequisição (via arquivo payload ou especificado no body da requisiçãrequisição), éé necessánecessário seguir o formato abaixo:
{
"username": "...",
"base64Cert": "...",
"pin": "...",
"credentialsOption": "..."
}
ParâParâmetros
| Tipo | ||
|---|---|---|
| username | String ( |
|
| base64Cert | String ( |
|
| pin | String ( |
PIN ou senha utilizada para utilizar o certificado. |
| pin | String (opcional) | Valor opcional que |
1 Criaçã- Criar Execução dado ExecuçãoItem 1:1
POST: https://api4.oystr.com.br/v1/execute/single
CóCódigo de retorno
| Retorno | |
|---|---|
| 202 | inicia a consulta futur |
| 5xx ou 4xx | Falha ao iniciar a casos suporte) o header X-Oystr-TraceId retornado para verificar se o |
Formato da RequisiçãRequisição (via HTTP)
{
"dry": false,
"bot": "",
"version": "",
"cid": "",
"timeout": "",
"deadline": "",
"credentials": {
"username": "",
"password": ""
},
"data": {},
"files": [{
"bound": true,
"property": "",
"description": "",
"name": "",
"data": ""
}]
}
| Formato | Default | |||
|---|---|---|---|---|
| dry | Boolean | false | Indica se |
|
| bot | Sim | String | Id do |
|
| version | Sim | String | ||
| cid | String | vazio | Identificador |
|
| force | Boolean | vazio | Indica se um item |
|
| timeout | Duration | 5 minutos | Tempo |
|
| deadline | ZonedDateTime | vazio | Data |
|
| credentials | json | Credenciais usadas na |
||
| data | Sim | json | Dados passados diretamente para o |
|
| file | json | Arquivos passados para o |
- ID usado para evitar
requisiçõrequisições duplicadas. Caso o cidnãnão sejaúúnico a respostaseráserá do tipo Duplicate . Caso o cid sejainváinválido arequisiçãrequisiçãoseráserá rejeitada - .
ApóApós esteperíperíodo a respostaseráserá do tipo Timeout - Caso a
execuçãexecução doíítemnãnão tenha iniciadoatéaté esta data a respostaseráserá do tipo Overdue.
2 Retorno- Consultar o retorno da chamadaexecução - (assíassíncrono)
GET: https://api.oystr.com.br/v1/execute/single/:bot/:cached?format=latest
CóCódigo de retorno
| Retorno | |
|---|---|
| 404 | id |
| 202 | Reposta |
| 200 | Resposta |
Resultados3 - Interpretar e obter o resultado final da execução
Após uma resposta 200, teremos como payload da resposta o resultado final da execução. Os resultados ficam disponídisponíveis no endereçmodelo do endereço /execute/single/[bot-id]/[id]?format=[legacy|latest]abaixo de acordo com o header X-Oystr-ReturnPath.ReturnPath:
GET: https://api.oystr.com.br/v1/execute/single/:bot/:cached?format=latest
O payload recebido depende do valor da variávariável formaforma:
Formato Legado QueryString:- format=legacy
GET: https://api.oystr.com.br/v1/execute/single/:bot/:cached?format=latest
{
"type": "",
"payload": {}
}
Formato Recomendado QueryString:- format=latest
O payload em json obtido quando a resposta estáestá disponídisponível segue o seguinte modelo:
{
"account": 0,
"user": 0,
"bot": "",
"version": "",
"cid": "",
"request": "",
"started": "",
"ended": "",
"taskTime": "",
"timeout": "",
"finishedAs": "",
"retry": "",
"dry": false,
"result": {}
}
Descrição dos campos:
| Campo | Formato | |
|---|---|---|
| account | Long | Conta que realizou a |
| user | Long | |
| bot | String | |
| version | String | |
| cid | String | id de |
| request | String | Id da |
| started | ZonedDateTime | Data de |
| ended | ZonedDateTime | Data de |
| taskTime | Duration | Tempo de |
| timeout | Duration | Timeout efetivamente usado |
| retry | Enum | indica se |
| dry | Json | Indica se |
| finishedAs | Enum | Tipo de resultado (tabela abaixo) |
| result | Json | Payload com o resultado |
Tipos de retorno
Os tipos de resultados possípossíveis:
| Resposta | Origem | ||
|---|---|---|---|
| Response | Bot | Resposta |
|
| PartialResponse | |||
| NotAllowed | Bot | ||
| NotFound | Bot | Item |
|
| NotConsistent | Bot | Dados inconsistentes | |
| NotAvailable | Bot | Item |
|
| ProxyError | Sim | Bot | Erro de proxy |
| CaptchaError | Sim | Bot | Erro de captcha |
| Forbidden | Bot | ||
| BotError | Bot | Erro no |
|
| Other | Bot | Outros | |
| RequestHasViolations | Pedido |
||
| NotAndApiRequest | Formato |
||
| NotAccepted | |||
| Timeout | Timeout durante a |
||
| Overdue | |||
| Duplicate | Item duplicado baseado no cid. Item |
||
| UnexpectedError | Erro inesperado. O item pode ou |
||
| Unknown | Desconhecido. O item pode ou |
RequisiçõRequisições Duplicadas
A Oystr nãnão testa os dados enviados para a execuçãexecução com a exceçãexceção dos atributos cid e force . Caso o cid esteja presente na requisiçãrequisição, a Oystr faráfará a verificaçãverificação se este cid foi executado nos úúltimos 15 dias para esta conta e robôrobô. Caso o cid seja "duplicado", o íítem seráserá executado apenas se o parâparâmetro force estiver presente com o valor true , caso contrácontrário a resposta do íítem seráserá do tipo Duplicate .
A Oystr emprega uma estratéestratégia estatíestatística para verifica ser o íítem jájá foi executado. Esta estratéestratégia permite falsos positivos, ou seja:
íítemnãnão foi executado (com certeza) para esta conta erobôrobô nosúúltimos 15 dias, ou2- .
íítem possivelmentejájá foi executado antes (false positivo)
Um cid , se presente, deve ter entre 1 e 50 carateres alphanuméalphanuméricos ou '-' de acordo com a seguinte expressãexpressão regular: [0-9a-zA-Z\\-]{1,50} . Caso o cid seja inváinválido o íítem nãnão seráserá executado, a requisiçãrequisição seráserá ignorada e ficaráficará sem resposta, retornando 404 em consultas futuras.
ReexecuçãReexecução
Em alguns casos éé possípossível que um íítem seja reexecutado em caso de erro, mesmo que um cid tenha sido utilizado. Os critécritérios que definem se um íítem pode ou nãnão ser reexecutado ficam a cargo do cliente da API que deve observar os seguintes critécritérios:
- Se houve uma
execuçãexecução anterior "do mesmo"ííten, esta deve ter retornado como insucesso, com oparâparâmetro retry = SAFE . Casocontrácontrárionãnãoéé seguro reexecutar oíítem. - . Caso um cid seja utilizado, ele deve ser
úúnico ou oparâparâmetro force = true deve ser utilziado para ignorar o teste de duplicidade.
A Oystr nãnão verifica se a requisiçãrequisição anterior retornou com retry = SAFE durante a nova execuçãexecução, mesmo que o cid seja o mesmo. Esta verificaçãverificação fica a cargo do cliente/usuáusuário da api.