Vai al contenuto principale
Attraverso l’endpoint Olostep /v1/schedules puoi programmare le chiamate API per eseguirle automaticamente a orari specificati. Pianifica esecuzioni una tantum o attività ricorrenti usando espressioni cron o linguaggio naturale.
  • Pianifica esecuzioni una tantum a una data e ora specifica
  • Crea programmazioni ricorrenti usando espressioni cron
  • Usa testo in linguaggio naturale per generare automaticamente espressioni cron
  • Pianifica endpoint HTTP (GET o POST)
  • Per richieste POST, usa endpoint Olostep in forma breve (prefissati automaticamente) o URL completi
  • Passa qualsiasi payload desideri - il payload viene inviato esattamente come lo specifichi
  • Gestisci automaticamente il ciclo di vita della programmazione
Per i dettagli sull’API consulta il Riferimento API dell’Endpoint di Programmazione.

Installazione

# pip install requests

import requests

Crea una programmazione

Crea una programmazione per eseguire automaticamente le chiamate API. Puoi creare programmazioni una tantum o ricorrenti usando espressioni cron. L’endpoint può essere qualsiasi URL (non limitato agli endpoint Olostep), e il payload può contenere qualsiasi dato tu voglia inviare.

Programmazione una tantum

Pianifica una chiamata API per eseguirla una volta a una data e ora specifica.
import requests
import json
from datetime import datetime, timedelta

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

# Pianifica un'estrazione da eseguire tra 1 ora
execute_at = (datetime.now() + timedelta(hours=1)).isoformat()

payload = {
    "method": "POST",
    "endpoint": "v1/scrapes",
    "payload": {
        "url_to_scrape": "https://example.com",
        "formats": ["markdown"]
    },
    "execute_at": execute_at,
    "expression_timezone": "UTC"
}

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.post(f"{API_URL}/schedules", headers=headers, json=payload)
print(json.dumps(response.json(), indent=2))

Programmazione ricorrente con espressione cron

Crea una programmazione ricorrente usando un’espressione cron. Le espressioni cron usano un formato a 6 campi: minuto ora giorno mese giorno-della-settimana anno.
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

# Pianifica un'estrazione da eseguire ogni giorno alle 10:00 UTC
payload = {
    "method": "POST",
    "endpoint": "v1/scrapes",
    "payload": {
        "url_to_scrape": "https://example.com",
        "formats": ["markdown"]
    },
    "cron_expression": "0 10 * * ? *",
    "expression_timezone": "UTC"
}

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.post(f"{API_URL}/schedules", headers=headers, json=payload)
print(json.dumps(response.json(), indent=2))

Programmazione con linguaggio naturale

Usa testo in linguaggio naturale per generare automaticamente espressioni cron. Il sistema convertirà il tuo testo in un’espressione cron valida.
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

# Pianifica usando il linguaggio naturale
payload = {
    "method": "POST",
    "endpoint": "v1/scrapes",
    "payload": {
        "url_to_scrape": "https://example.com",
        "formats": ["markdown"]
    },
    "text": "ogni 3 minuti",
    "expression_timezone": "UTC"
}

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.post(f"{API_URL}/schedules", headers=headers, json=payload)
print(json.dumps(response.json(), indent=2))

Formato della risposta

Quando crei una programmazione, riceverai un oggetto programmazione con le seguenti proprietà:
{
  "id": "schedule_abc123xyz",
  "object": "schedule"
  "type": "recurring",
  "method": "POST",
  "endpoint": "v1/scrapes",
  "cron_expression": "0 10 * * ? *",
  "expression_timezone": "UTC",
  "created": "2025-01-15T10:00:00.000Z"
}
Per le programmazioni una tantum, la risposta include execute_at invece di cron_expression:
{
  "id": "schedule_abc123xyz",
  "object": "schedule"
  "type": "onetime",
  "method": "POST",
  "endpoint": "v1/scrapes",
  "execute_at": "2025-01-15T10:00:00.000Z",
  "expression_timezone": "UTC",
  "created": "2025-01-15T09:00:00.000Z"
}

Elenca le programmazioni

Recupera tutte le programmazioni per il tuo team. Per impostazione predefinita, le programmazioni eliminate sono filtrate. Usa il parametro di query include_deleted per includerle.
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.get(f"{API_URL}/schedules", headers=headers)
result = response.json()
print(f"Total schedules: {result['count']}")
for schedule in result['schedules']:
    print(json.dumps(schedule, indent=2))

# Per includere le programmazioni eliminate:
# response = requests.get(f"{API_URL}/schedules?include_deleted=true", headers=headers)

Ottieni una programmazione

Recupera una singola programmazione tramite il suo ID.
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"
schedule_id = "schedule_abc123xyz"

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.get(f"{API_URL}/schedules/{schedule_id}", headers=headers)
print(json.dumps(response.json(), indent=2))

Elimina una programmazione

Elimina una programmazione tramite il suo ID. Questo interromperà qualsiasi esecuzione futura.
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"
schedule_id = "schedule_abc123xyz"

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.delete(f"{API_URL}/schedules/{schedule_id}", headers=headers)
print(json.dumps(response.json(), indent=2))

Endpoint supportati

Endpoint Olostep (forma breve)

Per le richieste POST, puoi usare forme brevi per gli endpoint Olostep. Il sistema aggiungerà automaticamente https://api.olostep.com/ per questi:
  • v1/scrapes - Pianifica attività di web scraping
  • v1/batches - Pianifica lavori di elaborazione batch
  • v1/crawls - Pianifica operazioni di crawling di siti web
  • v1/maps - Pianifica l’estrazione di dati di mappe
  • v1/answers - Pianifica la generazione di risposte

URL completi

Puoi anche fornire URL completi per i tuoi endpoint. Questo è richiesto per API esterne o webhook:
import requests
import json
from datetime import datetime, timedelta

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

# Pianifica una chiamata a un'API esterna
payload = {
    "method": "POST",
    "endpoint": "https://api.example.com/webhook",
    "payload": {
        "custom_field": "any value",
        "data": {"nested": "structure"},
        "timestamp": datetime.now().isoformat()
    },
    "execute_at": (datetime.now() + timedelta(hours=1)).isoformat(),
    "expression_timezone": "UTC"
}

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.post(f"{API_URL}/schedules", headers=headers, json=payload)
print(json.dumps(response.json(), indent=2))
Il campo payload accetta qualsiasi oggetto JSON - puoi strutturarlo come necessario per il tuo endpoint di destinazione.

Formato delle espressioni cron

Le espressioni cron usano un formato a 6 campi:
minuto ora giorno mese giorno-della-settimana anno
Esempi:
  • 0/3 * * * ? * - Ogni 3 minuti
  • 0 10 * * ? * - Ogni giorno alle 10:00
  • 0 9 ? * MON * - Ogni lunedì alle 9:00
  • 0 0 1 * ? * - Primo giorno di ogni mese a mezzanotte
Usa ? per giorno del mese o giorno della settimana quando non specificato.

Esempi di linguaggio naturale

Puoi usare il linguaggio naturale per descrivere le programmazioni. Il sistema le convertirà automaticamente in espressioni cron:
  • “ogni 3 minuti” → 0/3 * * * ? *
  • “ogni giorno alle 10am” → 0 10 * * ? *
  • “ogni lunedì alle 9am” → 0 9 ? * MON *
  • “ogni ora” → 0 * * * ? *
  • “ogni settimana il lunedì” → 0 0 ? * MON *

Note importanti

  • Le programmazioni una tantum vengono eliminate automaticamente dopo l’esecuzione
  • Le programmazioni ricorrenti continuano fino a quando non vengono eliminate manualmente
  • Il fuso orario deve essere un identificatore di fuso orario IANA valido (es., “UTC”, “America/New_York”, “Europe/London”)
  • La data e ora execute_at deve essere nel futuro
  • La conversione del linguaggio naturale può richiedere tentativi; il sistema tenterà fino a 3 volte
  • Quando si usa il testo in linguaggio naturale (parametro text), il fuso orario predefinito è “UTC”
  • Le programmazioni eseguono la chiamata API con il payload fornito esattamente come specificato - puoi passare qualsiasi struttura JSON necessaria
  • Per le richieste POST, gli endpoint Olostep in forma breve (v1/scrapes, v1/batches, v1/crawls, v1/maps, v1/answers) sono automaticamente prefissati con https://api.olostep.com/
  • Per altri endpoint, fornisci l’URL completo
  • Il payload può contenere qualsiasi struttura dati - viene inviato così com’è al tuo endpoint di destinazione
  • Eliminare una programmazione già eliminata restituirà un errore 400

Prezzi

Le programmazioni in sé sono gratuite. Paghi solo per le chiamate API che vengono eseguite quando la programmazione viene eseguita. Ad esempio, se programmi un’estrazione, ti verrà addebitato 1 credito per esecuzione (o di più se usi parser o estrazione LLM).