{
  "openapi": "3.0.1",
  "info": {
    "title": "Tribunal Constitucional",
    "description": "Este actor automatiza la búsqueda de resoluciones en la jurisprudencia del Tribunal Constitucional.",
    "version": "2.0",
    "x-build-id": "JDcFb9K952u8y4t0d"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/legaltech~tribunal-constitucional/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-legaltech-tribunal-constitucional",
        "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~tribunal-constitucional/runs": {
      "post": {
        "operationId": "runs-sync-legaltech-tribunal-constitucional",
        "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~tribunal-constitucional/run-sync": {
      "post": {
        "operationId": "run-sync-legaltech-tribunal-constitucional",
        "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 Tribunal Constitucional (máx. 50). Cada término se busca por separado y genera sus propios resultados. Si se deja vacío pero se aplican filtros (tipo, fechas, número/año, materia, órgano...), se devuelven TODAS las resoluciones que cumplan los filtros. Úsalo en la primera fase (búsqueda). Ejemplo: [\"vivienda\", \"derecho al honor\"].",
            "items": {
              "type": "string"
            }
          },
          "documentUrls": {
            "title": "Extraer texto de resoluciones concretas",
            "maxItems": 50,
            "type": "array",
            "description": "Lista de URLs de páginas de resolución (campo 'showUrl' devuelto por una búsqueda previa, p. ej. https://hj.tribunalconstitucional.es/HJ/es/Resolucion/Show/32085) de las que extraer el TEXTO ÍNTEGRO. Úsalo en la segunda fase: tras buscar, copia aquí los 'showUrl' que te interesen (máx. 50). Si rellenas este campo, el actor solo extrae el texto de esas resoluciones y NO es necesario indicar 'searchTerms'. Combínalo con 'section', 'paragraphs' y 'paragraphTerms' para acotar la parte del texto devuelta.",
            "items": {
              "type": "string"
            }
          },
          "resolutionTypes": {
            "title": "Tipo de resolución",
            "type": "array",
            "description": "Tipo(s) de resolución a incluir en la búsqueda. Si no se selecciona ninguno, se buscan los tres. Valores admitidos: SENTENCIA, AUTO, DECLARACION.",
            "items": {
              "type": "string",
              "enum": [
                "SENTENCIA",
                "AUTO",
                "DECLARACION"
              ],
              "enumTitles": [
                "Sentencia",
                "Auto",
                "Declaración"
              ]
            }
          },
          "searchScope": {
            "title": "Ámbito de la búsqueda libre",
            "enum": [
              "0",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9"
            ],
            "type": "string",
            "description": "Parte de la resolución sobre la que se busca el texto introducido en 'Términos de Búsqueda'. Por defecto, todo el texto de la resolución.",
            "default": "0"
          },
          "tipoRecurso": {
            "title": "Tipo de proceso",
            "type": "array",
            "description": "Tipo(s) de proceso constitucional (TIPO_RECURSO). Si no se selecciona ninguno, se buscan todos.",
            "items": {
              "type": "string",
              "enum": [
                "3",
                "7",
                "1",
                "10",
                "2",
                "12",
                "14",
                "4",
                "5",
                "11",
                "21",
                "8",
                "20",
                "19",
                "9"
              ],
              "enumTitles": [
                "Recurso de amparo",
                "Recurso de amparo electoral",
                "Recurso de inconstitucionalidad",
                "Recurso previo de inconstitucionalidad",
                "Cuestión de inconstitucionalidad",
                "Cuestión interna de inconstitucionalidad",
                "Conflicto positivo de competencia",
                "Conflicto negativo de competencia",
                "Conflicto entre órganos constitucionales",
                "Conflicto en defensa de la autonomía local",
                "Conflicto en defensa de la autonomía foral",
                "Impugnación de disposiciones autonómicas",
                "Recurso contra normas forales fiscales",
                "Cuestión prejudicial de validez sobre normas forales fiscales",
                "Requerimiento sobre tratados internacionales"
              ]
            }
          },
          "materia": {
            "title": "Materia",
            "type": "array",
            "description": "Materia(s) de la resolución (MATERIA). Si no se selecciona ninguna, se buscan todas.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "8",
                "9"
              ],
              "enumTitles": [
                "Civil",
                "Contencioso-Administrativo",
                "Electoral",
                "Militar",
                "Parlamentario",
                "Penal",
                "Social",
                "Otros"
              ]
            }
          },
          "doctrinalScope": {
            "title": "Ámbito del análisis doctrinal",
            "enum": [
              "23",
              "6",
              "7",
              "8",
              "9"
            ],
            "type": "string",
            "description": "Parte del análisis doctrinal sobre la que se busca el 'Texto en análisis doctrinal'. Por defecto, todos los campos.",
            "default": "23"
          },
          "organo": {
            "title": "Órgano",
            "enum": [
              "0",
              "1",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "2",
              "9"
            ],
            "type": "string",
            "description": "Órgano del Tribunal Constitucional que dictó la resolución. Si no se indica, se buscan todos.",
            "default": "0"
          },
          "numero": {
            "title": "Número de resolución",
            "type": "string",
            "description": "Número de la resolución (sin el año). Ejemplo: 34. Combínalo con 'Año' para localizar una resolución concreta."
          },
          "anio": {
            "title": "Año de resolución",
            "type": "string",
            "description": "Año de la resolución. Ejemplo: 2026."
          },
          "dateFrom": {
            "title": "Fecha desde",
            "type": "string",
            "description": "Fecha mínima de la resolución (inclusive)."
          },
          "dateTo": {
            "title": "Fecha hasta",
            "type": "string",
            "description": "Fecha máxima de la resolución (inclusive)."
          },
          "doctrinalText": {
            "title": "Texto en análisis doctrinal",
            "type": "string",
            "description": "Texto a buscar en el análisis doctrinal de la resolución (BUSQUEDA_LIBRE_DOCTRINAL): síntesis, extractos, resumen..."
          },
          "sortOrder": {
            "title": "Orden",
            "enum": [
              "desc",
              "asc"
            ],
            "type": "string",
            "description": "Orden de los resultados por fecha.",
            "default": "desc"
          },
          "section": {
            "title": "Sección a extraer",
            "enum": [
              "completa",
              "antecedentes",
              "fundamentos",
              "fallo",
              "votos"
            ],
            "type": "string",
            "description": "Cuando se extrae el texto de una resolución, parte de la resolución que se devuelve. Por defecto, la resolución completa. 'Fallo' corresponde a la sección de dictamen del Tribunal Constitucional.",
            "default": "completa"
          },
          "paragraphs": {
            "title": "Modo párrafos (número de pasajes)",
            "minimum": 0,
            "type": "integer",
            "description": "Si es mayor que 0, en lugar del texto íntegro se devuelven solo los N pasajes más relevantes de la resolución (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 de la sección indicada. Solo aplica cuando se extrae texto ('documentUrls' o EXTRACT_TEXT activado)."
          },
          "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: 'derecho a la vivienda'."
          },
          "maxResults": {
            "title": "Número máximo de resultados",
            "minimum": 1,
            "type": "integer",
            "description": "Número máximo de resoluciones a devolver por término de búsqueda."
          },
          "proxyConfiguration": {
            "title": "Configuración de Proxy",
            "type": "object",
            "description": "Configuración de proxy opcional. El Tribunal Constitucional 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}