- O tamanho máximo das requisições http é 50Mb
- O tamanho máximo das respostas às requisições http é 100Mb
| Versão | Descrição | 
|---|---|
| 20220704.1 | Primeira versão pública | 
| 20220719.1 | Documentação sobre o header X-Oystr-TraceId | 
| 20220919.1 | Documentação a reexecução de ítens usando force e retry | 
| 20230104.1 | Documentando o tamanho máximo da requisição | 
| 20230425.1 | Removendo documentação sobre a execução direta. Remoção do modo legacy | 
| 20230508.1 | Alterando documentação de markdown/pdf para html | 
| Método | Path | Retorno | Descrição | 
|---|---|---|---|
| POST | /execute/single | 202 | Inicia a execução de um ítem. Retona o id para consulta futura | 
| 5XX ou 4XX | Falha ao iniciar a execução do ítem. Nestes casos é necessário utilizar (manualmente via suporte) o header X-Oystr-TraceId retornado para verificar se o ítem foi recebido pela API e está em execução ou não. | ||
| GET | /execute/single/[bot-id]/[id] | 404 | id inválido ou ítem rejeitado. Nunca haverá uma resposta para este item | 
| 202 | Resposta indisponível, aguarde | ||
| 200 | Resposta disponível | 
{
  "dry"         : false,
  "bot"         : "",
  "version"     : "",
  "cid"         : "",
  "timeout"     : "",
  "deadline"    : "",
  "credentials" : { "username": "", "password": "", ... },
  "data"        : {},
  "files"       : [{
    "bound"       : true,
    "property"    : "",
    "description" : "",
    "name"        : "",
    "data"        : ""
  }]
}
| Campo | Obrigatório | Formato | Default | Descrição | 
|---|---|---|---|---|
| dry | não | Boolean | false | Indica se é uma execução de teste | 
| bot | sim | String | Id do robô | |
| version | sim | String | Versão do robô | |
| cid | não | String | Identificador único da requisição¹ | |
| force | não | Boolean | Indica se um ítem único, discrimidado pelo `cid` deve ser reexecutado ou não | |
| timeout | não | Duration | 5 minutos | Tempo máximo aguardando o retorno de um ítem desde o início da execução². Exemplo: 30s | 
| deadline | não | ZonedDateTime | Data máxima para o início da execução do ítem³ no formato ISO 8601. Exemplo: 2022-01-01T00:00:00.0-03:00 | |
| credentials | Ver robô | Json | Credenciais a serem usadas na requisição | |
| data | sim | Json | Dados passados diretamente para o robô | |
| files | Ver robô | Json | Arquivos passados para o robô | 
{
  "account"    : 0,
  "user"       : 0,
  "bot"        : "",
  "version"    : "",
  "cid"        : "",
  "request"    : "",
  "started"    : "",
  "ended"      : "",
  "taskTime"   : "",
  "timeout"    : "",
  "finishedAs" : "",
  "retry"      : "",
  "dry"        : false,
  "result"     : {},
  "node"       : "",
  "worker"     : "",
  "evt"        : "",
  "origin"     : "",
  "context"    : "",
  "wrapper"    : ""
}
| Campo | Uso | Formato | Descrição | 
| account | Público | Long | Conta que realizou a requisição | 
| user | Público | Long | Usuário que realizou a requisição | 
| bot | Público | String | ID do robô | 
| version | Público | String | Versão do robô | 
| cid | Público | String | Id de integração ([mais detalhes](#markdown-header-requisicoes-duplicadas)) | 
| request | Público | String | Id da requisição | 
| started | Público | ZonedDateTime | Data de início da execução do ítem no formato ISO-8601 | 
| ended | Público | ZonedDateTime | Data de término da execução do ítem no formato ISO-8601 | 
| taskTime | Público | Duration | Tempo de execução do ítem | 
| timeout | Público | Duration | Timeout efetivamente usado | 
| retry | Público | Enum | Indica se possível re-executar o ítem. | 
| dry | Público | Boolean | Indica se é uma execução de teste | 
| finishedAs | Público | Enum | Tipo de resultado (veja os tipos na tabela abaixo) | 
| result | Público | Json | Payload com o resultado | 
| node | Interno | String | BS que executou o ítem | 
| worker | Interno | String | Worker que executou o ítem | 
| evt | Interno | String | Tipo do evento | 
| origin | Interno | String | Nó que emitiu o evento | 
| context | Interno | String | Nome do diretório com o context | 
| wrapper | Interno | String | Versão do wrapper utilizada para executar a requisição | 
| Resposta | Permite Reexecução | Origem | Descrição | 
|---|---|---|---|
| Response | Bot | Resposta válida | |
| NotAllowed | Bot | Não é permitida a execução do ítem | |
| NotFound | Bot | Ítem não encontrado | |
| NotConsistent | Bot | Dados inconsistentes | |
| NotAvailable | Bot | Ítem não disponível | |
| ProxyError | Sim | Bot | Erro de proxy | 
| CaptchaError | Sim | Bot | Erro de captcha | 
| Forbidden | Bot | Execução do íten não é permitida | |
| BotError | Bot | Erro no robô | |
| Other | Não | Bot | Outros | 
| RequestHasViolations | Não | Infra | Pedido contém informações inválidas. O ítem não foi executado | 
| NotAndApiRequest | Não | Infra | Formato inválido requisição. O ítem não foi executado | 
| NotAccepted | Não | Infra | Execução do ítem não foi aceita. O ítem pode ou não ter sido executado | 
| Timeout | Não | Infra | Timeout durante a execução do ítem. O ítem pode ou não ter sido executado | 
| Overdue | Não | Infra | Execução do ítem ocorreria após o `deadline`. Ítem não foi executado | 
| Duplicate | Não | Infra | Ítem duplicado baseado no cid. Ítem não foi executado | 
| UnexpectedError | Não | Infra | Erro inesperado. O ítem pode ou não ter sido executado | 
| Unknown | Não | Infra | Desconhecido. O ítem pode ou não ter sido executado | 
A Oystr não testa os dados enviados para a execução com a exceção dos atributos cid e force.
Caso o cid esteja presente na requisição, a Oystr fará a verificação se este cid foi executado nos últimos 15 dias para esta conta e robô.
Caso o cid seja "duplicado", o ítem será executado apenas se o parâmetro force estiver presente com o valor true, caso contrário a resposta do ítem será do tipo Duplicate.
A Oystr emprega uma estratégia estatística para verifica ser o ítem já foi executado. Esta estratégia permite falsos positivos, ou seja:
Um cid, se presente, deve ter entre 1 e 50 carateres alphanuméricos ou '-' de acordo com a seguinte expressão regular: [0-9a-zA-Z\\-]50.
Caso o cid seja inválido o ítem não será executado, a requisição será ignorada e ficará sem resposta, retornando 404 em consultas futuras.
{ "hash" : "HASH_DA_CREDENCIAL" }