{
  "openapi": "3.0.3",
  "info": {
    "title": "Elevadores e escadas rolantes | Lifts and escalators",
    "version": "1.0.0",
    "description": "Infraestruturas de apoio à mobilidade pedonal em espaço público geridas pela EMEL em Lisboa (elevadores e escadas rolantes), com localização, morada, horário, capacidade e número de elevadores. Disponível também no modelo PointOfInterest (NGSI-LD) do Catálogo Nacional de Modelos de Dados da AMA.\n\nPedestrian support facilities in public space managed by EMEL in Lisbon (lifts and escalators), with location, address, opening hours, capacity and number of lifts. Also available using the PointOfInterest (NGSI-LD) model of the Portuguese national data model catalogue.\n\nPeriodicidade de atualização: Diária. Todos os registos em cada ficheiro.",
    "contact": {
      "name": "EMEL, E.M.",
      "email": "info@emel.pt",
      "url": "https://dados.emel.pt"
    },
    "license": {
      "name": "CC BY-SA 4.0",
      "url": "https://creativecommons.org/licenses/by-sa/4.0/"
    }
  },
  "servers": [
    {
      "url": "https://dados.emel.pt",
      "description": "Portal de dados abertos da EMEL"
    }
  ],
  "externalDocs": {
    "description": "Página do conjunto de dados",
    "url": "https://dados.emel.pt/dataset/liftsandescalators"
  },
  "paths": {
    "/dataset/5cdf6402-6059-4fa9-aafa-07f2602500d6/resource/5de1a7f7-f076-4ad7-96a8-dbfeca80be18/download/listliftsandescalators.csv": {
      "get": {
        "summary": "Descarregar o conjunto de dados em CSV",
        "description": "Ficheiro do conjunto de dados «Elevadores e escadas rolantes», alojado no portal dados.emel.pt, atualizado automaticamente.",
        "operationId": "descarregar_csv",
        "responses": {
          "200": {
            "description": "Ficheiro completo (todos os registos).",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "description": "CSV com cabeçalho (separador vírgula), uma linha por registo."
                }
              }
            }
          },
          "404": {
            "description": "Recurso inexistente ou dataset ainda não público."
          }
        }
      }
    },
    "/dataset/5cdf6402-6059-4fa9-aafa-07f2602500d6/resource/2b1e8c72-c7b3-42a4-8b8c-8990e23be4ae/download/listliftsandescalators.json": {
      "get": {
        "summary": "Descarregar o conjunto de dados em JSON",
        "description": "Ficheiro do conjunto de dados «Elevadores e escadas rolantes», alojado no portal dados.emel.pt, atualizado automaticamente.",
        "operationId": "descarregar_json",
        "responses": {
          "200": {
            "description": "Ficheiro completo (todos os registos).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Registo"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso inexistente ou dataset ainda não público."
          }
        }
      }
    },
    "/dataset/5cdf6402-6059-4fa9-aafa-07f2602500d6/resource/b107631b-fa6b-4c07-b506-e7753c62f441/download/liftsandescalators_poi.json": {
      "get": {
        "summary": "Descarregar as entidades PointOfInterest (NGSI-LD, modelo da AMA)",
        "description": "Ficheiro do conjunto de dados «Elevadores e escadas rolantes», alojado no portal dados.emel.pt, atualizado automaticamente.",
        "operationId": "descarregar_json_poi",
        "responses": {
          "200": {
            "description": "Ficheiro completo (todos os registos).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PointOfInterest"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso inexistente ou dataset ainda não público."
          }
        }
      }
    },
    "/api/3/action/datastore_search": {
      "get": {
        "summary": "Consultar registos do conjunto de dados (API de consulta)",
        "description": "Consulta programática aos registos de «Elevadores e escadas rolantes», com filtros, pesquisa de texto, seleção de campos, ordenação e paginação. Cada registo tem a mesma estrutura do ficheiro JSON do conjunto de dados (entidades PointOfInterest NGSI-LD, modelo CNMD). Exemplo: https://dados.emel.pt/api/3/action/datastore_search?resource_id=59832d17-5a73-4256-8ef8-e0ab7ab22a6e&limit=10",
        "operationId": "consultar_registos",
        "parameters": [
          {
            "name": "resource_id",
            "in": "query",
            "required": true,
            "description": "Identificador da tabela deste conjunto de dados.",
            "schema": {
              "type": "string",
              "enum": [
                "59832d17-5a73-4256-8ef8-e0ab7ab22a6e"
              ],
              "default": "59832d17-5a73-4256-8ef8-e0ab7ab22a6e"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Pesquisa de texto em todos os campos.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "description": "Filtro por igualdade, objeto JSON {campo: valor}.",
            "schema": {
              "type": "string"
            },
            "example": "{\"campo\": \"valor\"}"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Campos a devolver, separados por vírgula.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Ordenação, por exemplo «campo asc».",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Número máximo de registos (por omissão 100).",
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 32000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Registos a saltar (paginação).",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "include_total",
            "in": "query",
            "required": false,
            "description": "Incluir o total de registos na resposta.",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Registos que cumprem os critérios.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "resource_id": {
                          "type": "string"
                        },
                        "total": {
                          "type": "integer",
                          "description": "Total de registos que cumprem os critérios."
                        },
                        "limit": {
                          "type": "integer"
                        },
                        "fields": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "records": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RegistoAPI"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Tabela inexistente."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Registo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "localizacao": {
            "type": "string"
          },
          "coordenadas": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "contacto": {
            "type": "string"
          },
          "horario": {
            "nullable": true
          },
          "alertaPerturbacao": {
            "nullable": true
          },
          "dataEdicao": {
            "type": "string"
          },
          "freguesia": {
            "type": "string"
          },
          "cP7": {
            "type": "string"
          }
        }
      },
      "PointOfInterest": {
        "type": "object",
        "description": "Entidade NGSI-LD do modelo PointOfInterest do Catálogo Nacional de Modelos de Dados (AMA).",
        "required": [
          "id",
          "type"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "urn:emel:PointOfInterest:LiftOrEscalator:3242"
          },
          "type": {
            "type": "string",
            "enum": [
              "PointOfInterest"
            ]
          },
          "name": {},
          "title": {},
          "description": {},
          "category": {},
          "address": {},
          "location": {},
          "openingHours": {},
          "contactPoint": {},
          "municipalityInfo": {},
          "infrastructureType": {},
          "numberOfUnits": {},
          "dataProvider": {},
          "owner": {},
          "source": {},
          "dateModified": {}
        }
      },
      "RegistoAPI": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PointOfInterest"
          },
          {
            "type": "object",
            "properties": {
              "_id": {
                "type": "integer",
                "description": "Identificador interno da linha (CKAN)."
              }
            }
          }
        ]
      }
    }
  }
}