{
  "openapi": "3.0.1",
  "info": {
    "title": "Tjue",
    "description": "Automatiza la búsqueda de jurisprudencia del Tribunal de Justicia de la Unión Europea (juris.curia.europa.eu). Permite buscar documentos (sentencias, autos, conclusiones, peticiones de decisión prejudicial…) por texto libre y filtrarlos por órgano jurisdiccional, idioma y rango de fechas.",
    "version": "2.1",
    "x-build-id": "uaOFZsZ4jmDOvidAf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/legaltech~tjue/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-legaltech-tjue",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/legaltech~tjue/runs": {
      "post": {
        "operationId": "runs-sync-legaltech-tjue",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/legaltech~tjue/run-sync": {
      "post": {
        "operationId": "run-sync-legaltech-tjue",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchTerms": {
            "title": "Términos de Búsqueda",
            "maxItems": 50,
            "type": "array",
            "description": "Lista de términos a buscar en el texto de la jurisprudencia del TJUE (máx. 50). Cada término se busca por separado y genera sus propios resultados. Si se deja vacío pero se aplican filtros (órganos o fechas), se devuelven TODOS los documentos que cumplan los filtros. Úsalo en la primera fase (búsqueda). Ejemplo: [\"gastos hipotecarios\", \"protección de los consumidores\"].",
            "items": {
              "type": "string"
            }
          },
          "documentUrls": {
            "title": "Extraer texto de documentos concretos",
            "maxItems": 50,
            "type": "array",
            "description": "Documentos de los que extraer el TEXTO ÍNTEGRO (máx. 50). Se admite: el 'documentUrl' devuelto por una búsqueda previa, un 'docid' suelto (p. ej. 313156) o un número de asunto (p. ej. C-261/25), que se resuelve a su resolución principal. El ECLI no es buscable en CURIA. Úsalo en la segunda fase: tras buscar, copia aquí los documentos que te interesen. Si rellenas este campo, el actor solo extrae el texto de esos documentos y omite cualquier búsqueda por 'searchTerms' o filtros. Combínalo con 'paragraphs' y 'paragraphTerms' para acotar la parte del texto devuelta.",
            "items": {
              "type": "string"
            }
          },
          "extractText": {
            "title": "Extraer el texto íntegro de los resultados",
            "type": "boolean",
            "description": "Si se activa, además de los metadatos se extrae el texto de CADA documento encontrado. Ralentiza mucho la ejecución (abre los documentos uno a uno), así que para unos pocos documentos es preferible el flujo en dos fases: buscar primero y pasar después los 'documentUrl' que interesen en 'documentUrls'. No todos los documentos de CURIA tienen texto en HTML: las peticiones de decisión prejudicial y los anuncios del DO solo existen en PDF y se devuelven con 'text' vacío indicando el motivo.",
            "default": false
          },
          "documentType": {
            "title": "Tipo de documento",
            "enum": [
              "arret",
              "ord",
              "concl",
              "avis",
              "ALL"
            ],
            "type": "string",
            "description": "Filtra los resultados por tipo de documento. El filtro se aplica en el servidor de CURIA, así que acotarlo hace la búsqueda mucho más rápida. Por defecto solo devuelve Sentencias.",
            "default": "arret"
          },
          "courts": {
            "title": "Órganos jurisdiccionales",
            "type": "array",
            "description": "Órgano(s) del TJUE a incluir en la búsqueda. Si no se selecciona ninguno, se buscan los tres.",
            "items": {
              "type": "string",
              "enum": [
                "C",
                "T",
                "F"
              ],
              "enumTitles": [
                "Tribunal de Justicia",
                "Tribunal General",
                "Tribunal de la Función Pública"
              ]
            },
            "default": [
              "C",
              "T",
              "F"
            ]
          },
          "language": {
            "title": "Idioma de los documentos",
            "enum": [
              "es",
              "en",
              "fr",
              "de",
              "it",
              "pt"
            ],
            "type": "string",
            "description": "Idioma en el que se devuelven los textos y metadatos de los documentos.",
            "default": "es"
          },
          "dateType": {
            "title": "Tipo de fecha",
            "enum": [
              "pro",
              "con",
              "aud",
              "dep"
            ],
            "type": "string",
            "description": "Fecha del documento sobre la que se aplica el filtro 'Fecha desde'/'Fecha hasta'.",
            "default": "pro"
          },
          "dateFrom": {
            "title": "Fecha desde",
            "type": "string",
            "description": "Fecha mínima del documento (inclusive). Formato YYYY-MM-DD."
          },
          "dateTo": {
            "title": "Fecha hasta",
            "type": "string",
            "description": "Fecha máxima del documento (inclusive). Formato YYYY-MM-DD."
          },
          "paragraphs": {
            "title": "Modo párrafos (número de pasajes)",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Si es mayor que 0, en lugar del texto íntegro se devuelven solo los N pasajes más relevantes del documento (campo 'paragraphs' y un 'text' resumido). Útil para reducir el volumen de texto al analizar con un LLM. Si es 0 o se omite, se devuelve el texto completo. Solo aplica cuando se extrae texto ('documentUrls' o 'extractText' activado).",
            "default": 0
          },
          "paragraphTerms": {
            "title": "Términos para localizar los pasajes",
            "type": "string",
            "description": "Términos con los que se localizan los pasajes relevantes cuando se usa el 'Modo párrafos'. Si se omite, se usa el término de búsqueda ('searchTerms'). Indícalo cuando extraes texto de 'documentUrls' (sin búsqueda) para que el modo párrafos sepa qué buscar. Ejemplo: 'protección de los consumidores'."
          },
          "anonymize": {
            "title": "Anonimizar nombres de personas",
            "type": "boolean",
            "description": "Sustituye por sus iniciales los nombres de persona precedidos de tratamiento (Sr., D.ª, M., Frau…) en los textos extraídos. No se tocan los nombres de los miembros del Tribunal ni de los letrados y agentes, que son cargos públicos y forman parte de la cita jurídica. Ten en cuenta que el propio TJUE ya anonimiza a las partes en origen desde 2018: esta opción es una red de seguridad para documentos antiguos, no una garantía de ausencia de datos personales.",
            "default": true
          },
          "maxResults": {
            "title": "Número máximo de resultados",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Número máximo de documentos a devolver por término de búsqueda.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Configuración de Proxy",
            "type": "object",
            "description": "Configuración de proxy opcional. CURIA no bloquea las IP de datacenter, por lo que normalmente no es necesario."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}