{
  "openapi": "3.1.0",
  "info": {
    "title": "API pública de tucompragil",
    "version": "1.0.0",
    "description": "Sólo lectura y sin autenticación: estado del servicio y guías y recursos sobre Compra Ágil (Mercado Público, Chile). tucompragil es un producto de Practikoo SpA.",
    "contact": {
      "email": "hola@tucompragil.cl",
      "url": "https://tucompragil.cl/desarrolladores"
    }
  },
  "servers": [
    {
      "url": "https://tucompragil.cl"
    }
  ],
  "paths": {
    "/api/v1/public/status": {
      "get": {
        "operationId": "status",
        "summary": "Estado del servicio",
        "responses": {
          "200": {
            "description": "El servicio responde.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "time"
                  ],
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "ok"
                      ]
                    },
                    "time": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Más de 60 consultas por minuto desde la misma IP.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/public/contenido": {
      "get": {
        "operationId": "listarContenido",
        "summary": "Guías y recursos publicados sobre Compra Ágil",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Palabras a buscar en el título y la descripción.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista de guías y recursos.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "items"
                  ],
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "nombre",
                          "tipo",
                          "titulo",
                          "descripcion",
                          "url",
                          "skill",
                          "revisado_el"
                        ],
                        "properties": {
                          "nombre": {
                            "type": "string",
                            "example": "plazos-compra-agil"
                          },
                          "tipo": {
                            "type": "string",
                            "enum": [
                              "guia",
                              "recurso",
                              "pagina"
                            ]
                          },
                          "titulo": {
                            "type": "string"
                          },
                          "descripcion": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "skill": {
                            "type": "string",
                            "format": "uri",
                            "description": "SKILL.md con el texto completo"
                          },
                          "revisado_el": {
                            "type": "string",
                            "format": "date"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Más de 60 consultas por minuto desde la misma IP.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    }
  }
}