diff --git a/src/libs/models/indicator.js b/src/libs/models/indicator.js
index 02cf8d94bff4a5715abb179a6eb8582c6078b3d2..21d2df21b941b28e00716f2738aecba4a833433d 100644
--- a/src/libs/models/indicator.js
+++ b/src/libs/models/indicator.js
@@ -7,7 +7,7 @@ const Filters = require(`${libs}/models/filters`);
 // set up a mongoose model
 var IndicatorSchema = new Schema({
     filters: {
-        type: [Schema.types.ObjectId],
+        type: [Schema.Types.ObjectId],
         ref: 'Filters'
     },
     name: {
@@ -38,7 +38,8 @@ var IndicatorSchema = new Schema({
         required: true
     },
     noSchools: {
-        type: Boolean
+        type: Boolean,
+        default: false
     }
 });
 
diff --git a/src/libs/routes/api.js b/src/libs/routes/api.js
index 167c989ea75eb8a8968178a83d19be96841edec2..acc70f72cd1916c11c4003091243e6c604676e27 100644
--- a/src/libs/routes/api.js
+++ b/src/libs/routes/api.js
@@ -12,11 +12,14 @@ const user = require(`${libs}/routes/user`);
 
 const message = require(`${libs}/routes/message`);
 
+const indicator = require(`${libs}/routes/indicator`);
+
 api.get('/', (req, res) => {
     res.json({ msg: 'SimCAQ API is running' });
 });
 
 api.use('/user', user);
 api.use('/message', message);
+api.use('/indicator', indicator);
 
 module.exports = api;
diff --git a/src/libs/routes/indicator.js b/src/libs/routes/indicator.js
new file mode 100644
index 0000000000000000000000000000000000000000..7bf10660b1ec0dc13090b91e0217809b0e4c6f90
--- /dev/null
+++ b/src/libs/routes/indicator.js
@@ -0,0 +1,76 @@
+const express = require('express');
+
+const indicatorApp = express();
+
+const libs = `${process.cwd()}/libs`;
+
+const config = require(`${libs}/config`);
+
+const log = require(`${libs}/log`)(module);
+
+const Indicator = require(`${libs}/models/indicator`);
+
+indicatorApp.get('/', (req, res, next) => {
+    Indicator.find((err, indicators) => {
+        if(err) {
+            res.status(500).json({error: 'Erro do servidor', text: 'O servidor encontrou um erro ao processar a requisição', err});
+        }
+        res.json(indicators);
+    });
+});
+
+indicatorApp.put('/:id', (req, res, next) => {
+    Indicator.findById(req.params.id, (err, indicator) => {
+        if(!indicator) {
+            res.status(404).json({error: 'Não encontrado', text: 'Nenhum indicador foi encontrado', err});
+        }
+        if(!err) {
+            indicator.name = req.body.name | indicator.name;
+            indicator.url = req.body.url | indicator.url;
+            indicator.active = req.body.active | indicator.active;
+            indicator.description = req.body.description | indicator.description;
+            indicator.route = req.body.route | indicator.route;
+            indicator.source = req.body.source | indicator.source;
+            indicator.noSchools = req.body.noSchools | indicator.noSchools;
+            indicator.save((err) => {
+                if(err) {
+                    res.status(500).json({error: 'Erro do servidor', text: 'O servidor encontrou um erro ao processar a requisição', err});
+                }
+                res.json(indicator);
+            });
+        } else {
+            res.status(500).json({error: 'Erro do servidor', text: 'O servidor encontrou um erro ao processar a requisição', err});
+        }
+    });
+});
+
+indicatorApp.post('/', (req, res, next) => {
+    req.checkBody('name', 'Nome é um campo obrigatório').notEmpty();
+    req.checkBody('url', 'A url é um campo obrigatório').notEmpty();
+    req.checkBody('route', 'A rota é um campo obrigatório').notEmpty();
+    req.checkBody('source', 'A fonte é um campo obrigatório').notEmpty();
+    req.getValidationResult().then(function(result) {
+        if (!result.isEmpty()) {
+            res.status(400).send({errors: result.array()});
+            return;
+        }
+        let indicator = new Indicator({
+            name: req.body.name,
+            url: req.body.url,
+            active: req.body.url,
+            description: req.body.description,
+            route: req.body.route,
+            source: req.body.source,
+            noSchools: req.body.noSchools
+        });
+
+        indicator.save((err) => {
+            if(err) {
+                res.status(500).json({error: 'Erro do servidor', text: 'O servidor encontrou um erro ao processar a requisição', err});
+            }
+            res.json(indicator);
+        });
+    });
+});
+
+module.exports = indicatorApp;