diff --git a/src/libs/convert/contractType.js b/src/libs/convert/contractType.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c9167ce6e3758feb8de1d20c7a3b228be1e4f17
--- /dev/null
+++ b/src/libs/convert/contractType.js
@@ -0,0 +1,14 @@
+module.exports = function idhmLevel(id) {
+    switch (id) {
+        case 1:
+        return 'Concursado/Efetivo/Estavél';
+        case 2:
+        return 'Contrato temporário';
+        case 3:
+        return 'Contrato terceirizado';
+        case 4:
+        return 'Contrato CLT';
+        default:
+        return 'Não classificado';
+    }
+};
diff --git a/src/libs/middlewares/id2str.js b/src/libs/middlewares/id2str.js
index 3721123071724d979c93ab2dbdd6b0fb1ecc2160..e37e854e67c6ae1e52affba7c381ddb3a804bd05 100644
--- a/src/libs/middlewares/id2str.js
+++ b/src/libs/middlewares/id2str.js
@@ -17,6 +17,7 @@ const citySize = require(`${libs}/convert/citySize`);
 const incomeLevel = require(`${libs}/convert/incomeLevel`);
 const idhmLevel = require(`${libs}/convert/idhmLevel`);
 const stateName = require(`${libs}/convert/stateName`);
+const contractType = require(`${libs}/convert/contractType`);
 
 const ids = {
     gender_id: gender,
@@ -45,7 +46,8 @@ const ids = {
     income_level_id: incomeLevel,
     city_size_id: citySize,
     idhm_level_id: idhmLevel,
-    state_id: stateName
+    state_id: stateName,
+    contract_type_id: contractType
 };
 
 function transform(removeId=false) {
@@ -100,5 +102,6 @@ module.exports = {
     incomeLevel,
     citySize,
     idhmLevel,
-    stateName
+    stateName,
+    contractType
 };
diff --git a/src/libs/routes/teacher.js b/src/libs/routes/teacher.js
index 541a926d0a0526e1a0dca141e0edd1837f13a458..1d357763c3b3be2c55996fd756258fe0e75064b9 100644
--- a/src/libs/routes/teacher.js
+++ b/src/libs/routes/teacher.js
@@ -16,7 +16,7 @@ const ReqQueryFields = require(`${libs}/middlewares/reqQueryFields`);
 
 const id2str = require(`${libs}/middlewares/id2str`);
 
-const config = require(`${libs}/config`); 
+const config = require(`${libs}/config`);
 
 const request = require(`request`);
 
@@ -132,6 +132,17 @@ teacherApp.get('/gender', (req, res, next) => {
     next();
 }, response('gender'));
 
+
+teacherApp.get('/contract_type', (req, res, next) => {
+    req.result = [
+        {id: 1, name: 'Concursado/Efetivo/Estável'},
+        {id: 2, name: 'Contrato temporário'},
+        {id: 3, name: 'Contrato terceirizado'},
+        {id: 4, name: 'Contrato CLT'}
+    ];
+    next();
+}, response('contract_type'));
+
 teacherApp.get('/ethnic_group', (req, res, next) => {
     req.result = [];
     for(let i = 0; i <=5; ++i) {
@@ -171,6 +182,16 @@ rqf.addField({
         type: 'integer',
         field: 'dependencia_adm_priv'
     }
+}).addValue({
+    name: 'contract_type',
+    table: 'docente',
+    tableField: 'tipo_contratacao',
+    resultField: 'contract_type_id',
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'tipo_contratacao'
+    }
 }).addValue({
     name: 'education_level_mod',
     table: 'docente',
diff --git a/src/test/schoolCount.js b/src/test/schoolCount.js
index 1867e4569e1d2654793ea167d2892d04fcc4ad7b..305045894b410b0c4215ce2d3d4d85aa065860c2 100644
--- a/src/test/schoolCount.js
+++ b/src/test/schoolCount.js
@@ -301,4 +301,17 @@ describe('request schools count', () => {
                 done();
             });
     });
+
+    it('should list school with dimension agreement', (done) => {
+        chai.request(server)
+            .get('/api/v1/school/count?dims=agreement')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('agreement_name');
+                done();
+            });
+    });
 });
diff --git a/src/test/teacher.js b/src/test/teacher.js
index 65c9d28dafe0667ee35a7a1597b3b0fe075a8be8..30eddee8a20e6654c2db5f595c44e37f99868a5f 100644
--- a/src/test/teacher.js
+++ b/src/test/teacher.js
@@ -134,6 +134,20 @@ describe('request teachers', () => {
             });
     });
 
+    it('should list the contract type', (done) => {
+        chai.request(server)
+            .get('/api/v1/teacher/contract_type')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('id');
+                res.body.result[0].should.have.property('name');
+                done();
+            });
+    });
+
     it('should list the administrative dependencies', (done) => {
         chai.request(server)
             .get('/api/v1/teacher/adm_dependency')
@@ -397,4 +411,19 @@ describe('request teachers', () => {
                 done();
             });
     });
+
+
+
+    it('should list teacher count with dimension contract type', (done) => {
+        chai.request(server)
+            .get('/api/v1/teacher?filter=state:41&dims=contract_type')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('contract_type_name');
+                done();
+            });
+    });
 });