{
  "openapi": "3.0.3",
  "info": {
    "title": "Consulta electoral del Meta",
    "version": "1.0.0",
    "description": "Pública, solo lectura. 2019 y 2023; sin JAL. Alcaldía y Concejo requieren municipio_codigo. Códigos Registraduría. Mesa requiere puesto_id. Descarga admite opcion, partido, puesto y municipio. Fuente MMV, etapa no especificada."
  },
  "paths": {
    "/api/v1/fuentes": {
      "get": {
        "summary": "fuentes",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Consulta exitosa"
          },
          "422": {
            "description": "Parámetros inválidos o municipio faltante"
          }
        }
      }
    },
    "/api/v1/elecciones": {
      "get": {
        "summary": "elecciones",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Consulta exitosa"
          },
          "422": {
            "description": "Parámetros inválidos o municipio faltante"
          }
        }
      }
    },
    "/api/v1/municipios": {
      "get": {
        "summary": "municipios",
        "parameters": [
          {
            "name": "anio",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                2019,
                2023
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Consulta exitosa"
          },
          "422": {
            "description": "Parámetros inválidos o municipio faltante"
          }
        }
      }
    },
    "/api/v1/puestos": {
      "get": {
        "summary": "puestos",
        "parameters": [
          {
            "name": "anio",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                2019,
                2023
              ]
            }
          },
          {
            "name": "municipio_codigo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{3}$"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Consulta exitosa"
          },
          "422": {
            "description": "Parámetros inválidos o municipio faltante"
          }
        }
      }
    },
    "/api/v1/partidos": {
      "get": {
        "summary": "partidos",
        "parameters": [
          {
            "name": "anio",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                2019,
                2023
              ]
            }
          },
          {
            "name": "eleccion",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "gobernacion",
                "asamblea",
                "alcaldia",
                "concejo"
              ]
            }
          },
          {
            "name": "municipio_codigo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{3}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Consulta exitosa"
          },
          "422": {
            "description": "Parámetros inválidos o municipio faltante"
          }
        }
      }
    },
    "/api/v1/candidatos": {
      "get": {
        "summary": "candidatos",
        "parameters": [
          {
            "name": "anio",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                2019,
                2023
              ]
            }
          },
          {
            "name": "eleccion",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "gobernacion",
                "asamblea",
                "alcaldia",
                "concejo"
              ]
            }
          },
          {
            "name": "municipio_codigo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{3}$"
            }
          },
          {
            "name": "partido_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Consulta exitosa"
          },
          "422": {
            "description": "Parámetros inválidos o municipio faltante"
          }
        }
      }
    },
    "/api/v1/mesas": {
      "get": {
        "summary": "mesas",
        "parameters": [
          {
            "name": "anio",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                2019,
                2023
              ]
            }
          },
          {
            "name": "eleccion",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "gobernacion",
                "asamblea",
                "alcaldia",
                "concejo"
              ]
            }
          },
          {
            "name": "municipio_codigo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{3}$"
            }
          },
          {
            "name": "puesto_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Consulta exitosa"
          },
          "422": {
            "description": "Parámetros inválidos o municipio faltante"
          }
        }
      }
    },
    "/api/v1/resumen": {
      "get": {
        "summary": "resumen",
        "parameters": [
          {
            "name": "anio",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                2019,
                2023
              ]
            }
          },
          {
            "name": "eleccion",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "gobernacion",
                "asamblea",
                "alcaldia",
                "concejo"
              ]
            }
          },
          {
            "name": "municipio_codigo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{3}$"
            }
          },
          {
            "name": "puesto_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zona",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{2}$"
            }
          },
          {
            "name": "mesa",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "partido_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "candidato_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tipo_voto",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "candidato",
                "lista",
                "blanco",
                "nulo",
                "no_marcado"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Consulta exitosa"
          },
          "422": {
            "description": "Parámetros inválidos o municipio faltante"
          }
        }
      }
    },
    "/api/v1/resultados": {
      "get": {
        "summary": "resultados",
        "parameters": [
          {
            "name": "anio",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                2019,
                2023
              ]
            }
          },
          {
            "name": "eleccion",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "gobernacion",
                "asamblea",
                "alcaldia",
                "concejo"
              ]
            }
          },
          {
            "name": "municipio_codigo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{3}$"
            }
          },
          {
            "name": "puesto_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zona",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{2}$"
            }
          },
          {
            "name": "mesa",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "partido_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "candidato_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tipo_voto",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "candidato",
                "lista",
                "blanco",
                "nulo",
                "no_marcado"
              ]
            }
          },
          {
            "name": "agrupar_por",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "opcion",
                "partido",
                "puesto",
                "municipio",
                "mesa",
                "detalle"
              ]
            }
          },
          {
            "name": "limite",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "desplazamiento",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Consulta exitosa"
          },
          "422": {
            "description": "Parámetros inválidos o municipio faltante"
          }
        }
      }
    },
    "/api/v1/descargar": {
      "get": {
        "summary": "descargar",
        "parameters": [
          {
            "name": "anio",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                2019,
                2023
              ]
            }
          },
          {
            "name": "eleccion",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "gobernacion",
                "asamblea",
                "alcaldia",
                "concejo"
              ]
            }
          },
          {
            "name": "municipio_codigo",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{3}$"
            }
          },
          {
            "name": "puesto_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zona",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{2}$"
            }
          },
          {
            "name": "mesa",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "partido_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "candidato_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tipo_voto",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "candidato",
                "lista",
                "blanco",
                "nulo",
                "no_marcado"
              ]
            }
          },
          {
            "name": "agrupar_por",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "opcion",
                "partido",
                "puesto",
                "municipio",
                "mesa",
                "detalle"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Consulta exitosa"
          },
          "422": {
            "description": "Parámetros inválidos o municipio faltante"
          }
        }
      }
    }
  }
}