Dentro do seu Workstation App você pode criar tasks e revisar seus outputs para garantir que os resultados estão corretos.

Creating tasks via API

Criar uma nova task é similar a fazer uma chamada para um Canvas, no lugar de passar um canvas_id, você deve passar o seu application_id.

Vá até a página do seu Workstation App e siga estes passos:

1

Open Connect via API

Na barra do topo, clique no botão com três pontinhos do lado direito do título do seu app e selecione “Connect via API”.

2

Get your app data

Aqui você vai encontrar toda a informação necessária para começar a criar novas task via API. Escolha a sua linguagem de preferência e use um dos snippets de código pra começar a integrar!

Por padrão, todas as tasks são criadas como se fossem completions assíncronas. Você receberá uma resposta com o status de success e a task criada terá o status de running. Você tem duas opções para consumir o resultado de uma task:

  • Polling durante a execução
  • Utilizar uma webhook URL

Polling de tasks durante a execução

Você pode realizar um polling simples de uma task até que seu status mude para completed ou failed. Para obter o status de uma task depois de criá-la podemos enviar um request para o endpoitn /task da API.

let task = await tela.completions.create<{ document: TelaFile }, { fileSummary: string }>({
    applicationId: {YOUR_APPLICATION_ID},
    variables: {
        document: tela.createFile('https://example.com/document.pdf')
    },
})

let isTaskCompleted = false

while (!isTaskCompleted) {
    const response = await fetch(`https://api.tela.com/task/${task.id}`)
    task = await response.json()
    isTaskCompleted = task.status === 'completed' || task.status === 'failed'
}

Utilizando uma webhook URL

Você pode passar uma webhook_url na sua chamada de API. Desse forma o endpoit que você passou vai receber um POST request quando a execução da task terminar.

const task = await tela.completions.create<{ document: TelaFile }, { fileSummary: string }>({
    applicationId: {YOUR_APPLICATION_ID},
    variables: {
        document: tela.createFile('https://example.com/document.pdf')
    },
    webhook_url: "https://example.com/webhook"
})

Listando tasks

Para listar as tasks de um app você pode enviar um GET request pro endpoint /task. Esse endpoint suporta alguns parâmetros opicionais para filtrar e paginar seus resultados:

Parâmetros de paginação

  • limit: Número de resultados por resposta (padrão: 10, intervalo: 1-100)
  • offset: Posição inicial dos resultados (padrão: 0)

Filtering parameters

  • status: Array de status de tasks (opções: “created”, “running”, “validating”, “completed”, “failed”)
  • since: Data inicial para filtrar as tasks (formato: timestamp ou ISO 8601)
  • until: Data final para filtar as tasks (formato: timestamp ou ISO 8601)
  • approvedBy: Email do usuário que aprovou a task
  • revisionProcess: Tipo de revisão recebida (opções: “approvedWithRevisions”, “approvedDirectly”)
  • promptApplicationId: ID da aplicação onde a task foi criada
  • promptVersionId: ID da versão do Canvas utilizada para criar a task
  • ids: Array de IDs específicos de tasks para serem listadas

Sorting parameters

  • orderBy: Campo para ordenar por (opções: “name”, “reference”, “approvedAt”, “createdAt”, “updatedAt”, “id”, “status”, “approvedBy”, “createdBy”)
  • order: Sentido de ordenação (opções: “asc” or “desc”)

Example request

Aqui está o exemplo de um request listando 50 tasks com o status “completed” criadas depois do dia 1 de Novembro de 2024, ordenas em ordem crescente pelo nome:

const url = new URL('https://api.tela.com/task')
url.searchParams.append('limit', '50')
url.searchParams.append('promptApplicationId', '{YOUR_APPLICATION_ID}')
url.searchParams.append('status', JSON.stringify(['completed']))
url.searchParams.append('since', '2024-11-01T00:00:00Z')
url.searchParams.append('orderBy', 'name')
url.searchParams.append('order', 'asc')

const response = await fetch(url, {
    method: 'GET',
    headers: {
        'Authorization': 'Bearer {YOUR_API_KEY}',
        'Content-Type': 'application/json',
    },
});

const tasks = await response.json()