Encolar Tarea

Encola una nueva tarea para ejecutarse en un horario programado.

Autenticación

Requiere autenticación. Pasa tu clave API mediante el encabezado X-API-Key o Authorization: Bearer.

Parámetros de Ruta

Parámetro Tipo Descripción
id string Identificador único del scheduler

Cuerpo de la Solicitud

Campo Tipo Descripción
id string ID de tarea requerido
future string Marca de tiempo ISO 8601 para la disponibilidad
delay string Duración Go desde ahora, como 60s o 5m (alternativa a future)
payload object Carga útil JSON arbitraria para el trabajador
labels array de strings Etiquetas opcionales para filtrado
1{
2  "payload": {
3    "type": "enviar_correo",
4    "to": "usuario@example.com",
5    "template": "bienvenida"
6  },
7  "delay": "60s",
8  "labels": ["proyecto:incorporacion", "prioridad:alta"]
9}

Ejemplo de Solicitud

curl -X POST "https://api.hola.cloud/schedulers/sched-a1b2c3d4-e5f6-7890-abcd-ef1234567890/tasks" \
  -H "X-API-Key: TU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "payload": {
      "type": "enviar_correo",
      "to": "usuario@example.com",
      "template": "bienvenida"
    },
    "delay": "60s",
    "labels": ["proyecto:incorporacion", "prioridad:alta"]
  }'
POST /schedulers/sched-a1b2c3d4-e5f6-7890-abcd-ef1234567890/tasks HTTP/1.1
Host: api.hola.cloud
X-API-Key: TU_API_KEY
Content-Type: application/json

{
    "payload": {
      "type": "enviar_correo",
      "to": "usuario@example.com",
      "template": "bienvenida"
    },
    "delay": "60s",
    "labels": ["proyecto:incorporacion", "prioridad:alta"]
  }
// Go 1.21+, standard library only. Save as main.go and run: go run main.go
package main

import (
	"fmt"
	"io"
	"net/http"
	"encoding/json"
	"strings"
)

func main() {
	payload := map[string]any{"delay": "60s", "labels": []any{"proyecto:incorporacion", "prioridad:alta"}, "payload": map[string]any{"template": "bienvenida", "to": "usuario@example.com", "type": "enviar_correo"}}
	bodyBytes, err := json.Marshal(payload)
	if err != nil {
		panic(err)
	}
	body := string(bodyBytes)

	req, err := http.NewRequest("POST", "https://api.hola.cloud/schedulers/sched-a1b2c3d4-e5f6-7890-abcd-ef1234567890/tasks", strings.NewReader(body))
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", "TU_API_KEY")
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	responseBody, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status)
	fmt.Println(string(responseBody))
}
<?php
// PHP 8+ with the curl extension. Save as example.php and run: php example.php

$payload = ['delay' => '60s', 'labels' => ['proyecto:incorporacion', 'prioridad:alta'], 'payload' => ['template' => 'bienvenida', 'to' => 'usuario@example.com', 'type' => 'enviar_correo']];
$body = json_encode($payload);

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://api.hola.cloud/schedulers/sched-a1b2c3d4-e5f6-7890-abcd-ef1234567890/tasks',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => $body,
    CURLOPT_HTTPHEADER => [
        'X-API-Key: TU_API_KEY',
        'Content-Type: application/json',
    ],
]);

$response = curl_exec($ch);
if ($response === false) {
    throw new Exception(curl_error($ch));
}
echo curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $response, "\n";
curl_close($ch);
# Python 3.8+. Install: pip install requests. Save as example.py and run: python example.py
import requests

headers = {
    "X-API-Key": "TU_API_KEY",
    "Content-Type": "application/json",
}

payload = {"delay": "60s", "labels": ["proyecto:incorporacion", "prioridad:alta"], "payload": {"template": "bienvenida", "to": "usuario@example.com", "type": "enviar_correo"}}

response = requests.request(
    "POST",
    "https://api.hola.cloud/schedulers/sched-a1b2c3d4-e5f6-7890-abcd-ef1234567890/tasks",
    headers=headers,
    json=payload
)

print(response.status_code)
print(response.text)
// Node.js 18+. Save as example.mjs and run: node example.mjs
const payload = {"delay": "60s", "labels": ["proyecto:incorporacion", "prioridad:alta"], "payload": {"template": "bienvenida", "to": "usuario@example.com", "type": "enviar_correo"}};

const response = await fetch("https://api.hola.cloud/schedulers/sched-a1b2c3d4-e5f6-7890-abcd-ef1234567890/tasks", {
  method: "POST",
  headers: {
    "X-API-Key": "TU_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify(payload)
});

console.log(response.status);
console.log(await response.text());
const payload = {"delay": "60s", "labels": ["proyecto:incorporacion", "prioridad:alta"], "payload": {"template": "bienvenida", "to": "usuario@example.com", "type": "enviar_correo"}};

const response = await fetch("https://api.hola.cloud/schedulers/sched-a1b2c3d4-e5f6-7890-abcd-ef1234567890/tasks", {
  method: "POST",
  headers: {
    "X-API-Key": "TU_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify(payload)
});

console.log(response.status);
console.log(await response.text());
// Java 17+, standard library only. Save as Main.java and run: java Main.java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        var body = """
{
    "payload": {
      "type": "enviar_correo",
      "to": "usuario@example.com",
      "template": "bienvenida"
    },
    "delay": "60s",
    "labels": ["proyecto:incorporacion", "prioridad:alta"]
  }
""";

        var request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.hola.cloud/schedulers/sched-a1b2c3d4-e5f6-7890-abcd-ef1234567890/tasks"))
            .method("POST", HttpRequest.BodyPublishers.ofString(body))
            .header("X-API-Key", "TU_API_KEY")
            .header("Content-Type", "application/json")
            .build();

        var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}

Ejemplo de Respuesta

1HTTP/1.1 202 Accepted

El cuerpo de la respuesta está vacío.

Códigos de Error

Estado Código Descripción
400 invalid_json JSON inválido
400 validation_error Falta id, future/delay inválido o labels inválidas
401 unauthorized Clave API faltante o inválida
409 task_already_exists La tarea ya existe
500 internal_error Error interno del servidor

Comentarios

Deja un comentario