diff --git a/app/builders/learning_object/draft_builder.rb b/app/builders/learning_object/draft_builder.rb
index 3c4f318eb36ce0d09456d35e6f177809eaf912ad..a28c71efd9b0bbf1ef60ab251f4a2cd0eb949502 100644
--- a/app/builders/learning_object/draft_builder.rb
+++ b/app/builders/learning_object/draft_builder.rb
@@ -4,33 +4,30 @@ class LearningObject::DraftBuilder
     @draft = LearningObject.new(sanitize_params(params))
     @draft.draft
 
-
-
     #build language
     @draft.language = Language.find(params[:language]) if params[:language].to_i > 0
 
     # set publisher
     @draft.publisher = publisher
-
     @draft.save
+
     # build tags
     params[:tags].try(:each) do |t|
       tag = Tag.where(name: t['name']).first_or_create
       Tagging.where(tag: tag, taggable: @draft, tagger: publisher).first_or_create
     end
     @draft.save
+
     @draft
   end
 
-  private
-
   def self.sanitize_params(args={})
-    _args = args.clone
+    params = args.clone
     %w(tags language link).each do |arg|
-      _args.delete(arg)
+      params.delete(arg)
     end
-    metadata = [{'key' => 'dc.object.url', 'value' => args[:link]}]
-    _args.merge(metadata: metadata)
+    metadata = { 'dc.object.url' => args[:link] }
+    params.merge(metadata: metadata)
   end
 
 end
diff --git a/app/builders/learning_object_builder.rb b/app/builders/learning_object_builder.rb
index 9a48e71cef22b149da4ab554a1366738a7f6fe9f..e1839a9c2f5d2195f5ef360647d276191bf5ecc9 100644
--- a/app/builders/learning_object_builder.rb
+++ b/app/builders/learning_object_builder.rb
@@ -1,14 +1,13 @@
 class LearningObjectBuilder
-
   def self.build_from_dspace(item)
     lo = LearningObject.new(
-        name: item.name,
-        id_dspace: item.id,
-        thumbnail: nil,
-        metadata: item.metadata.map(&:to_h)
+      name: item.name,
+      id_dspace: item.id,
+      thumbnail: nil,
+      metadata: dspace_metadata_to_hash(item.metadata)
     )
 
-    institution = lo.get_metadata_values_of('dc.creator').first
+    institution = lo.get_metadata_value_of('dc.creator')
     institution = 'Desconhecido' if institution.blank?
     lo.publisher = Institution.where(name: institution).first_or_create
 
@@ -49,9 +48,13 @@ class LearningObjectBuilder
     _params
   end
 
- # private
+  def self.dspace_metadata_to_hash(metadata)
+    hash = Hash.new { |h, k| h[k] = Array.new(&h.default_proc) }
+    metadata.each { |m| hash[m.key] << m.value }
+    hash
+  end
 
-  #def self.sanitize_form_metadata(params={})
+  # def self.sanitize_form_metadata(params={})
   #  if !params[:link].blank?
   #    metadata = [{'key' => 'dc.object.url', 'value' => params[:link]}]
   #    _args.merge(metadata: metadata)
diff --git a/app/controllers/v1/learning_objects_controller.rb b/app/controllers/v1/learning_objects_controller.rb
index ff124dc4c4a707fd52bd3876dbe0ca442732c81a..b7226c505bfa82001ac382151b8fd6ec04bf99f1 100644
--- a/app/controllers/v1/learning_objects_controller.rb
+++ b/app/controllers/v1/learning_objects_controller.rb
@@ -10,13 +10,14 @@ class V1::LearningObjectsController < ApplicationController
   before_action :authorize!, only: [:show, :update, :destroy]
 
   def index
-    render json: ActiveModel::ArraySerializer.new(LearningObject.limit(limit).offset(offset).all)
+    serializer = params[:obaa].nil? ? LearningObjectSerializer : LearningObjectObaaSerializer
+    render json: ActiveModel::ArraySerializer.new(LearningObject.limit(limit).offset(offset).all, each_serializer: serializer)
   end
 
   # GET /learning_objects/1
   # GET /learning_objects/1.json
   def show
-    render json: @learning_object
+    render json: params[:obaa].nil? ? @learning_object : ActiveModel::LearningObjectObaaSerializer.new(@learning_object)
   end
 
   # POST /learning_objects
diff --git a/app/models/concerns/metadatable.rb b/app/models/concerns/metadatable.rb
index 07bd3ac398f424e522a0c2ab3a0f9b7b1a1b17a3..28ba9409496a851fb81de6a3edc39b1b77c60ecf 100644
--- a/app/models/concerns/metadatable.rb
+++ b/app/models/concerns/metadatable.rb
@@ -7,19 +7,11 @@ module Metadatable
     serialize :metadata, ArraySerializer
   end
 
-  def get_metadata_value_of key
+  def get_metadata_value_of(key)
     get_metadata_values_of(key).first
   end
 
-  def get_metadata_values_of key
-    values = []
-    unless metadata.blank?
-      metadata.each do |m|
-        m = m.with_indifferent_access
-        values << m["value"] if m["key"] == key
-      end
-    end
-    values
+  def get_metadata_values_of(key)
+    metadata[key].blank? ? [] : metadata[key]
   end
-
 end
diff --git a/app/models/concerns/taggable.rb b/app/models/concerns/taggable.rb
index aedd68087056700b9847f28715fedbb422146d50..bf62302ea155c014411a4d7467e819e39b6b12fa 100644
--- a/app/models/concerns/taggable.rb
+++ b/app/models/concerns/taggable.rb
@@ -5,6 +5,4 @@ module Taggable
     has_many :taggings, as: :taggable, dependent: :destroy
     has_many :tags, through: :taggings, dependent: :destroy
   end
-
-
 end
diff --git a/app/serializers/learning_object_obaa_serializer.rb b/app/serializers/learning_object_obaa_serializer.rb
new file mode 100644
index 0000000000000000000000000000000000000000..9558ff4a27ca44e1f9dd5f8f558e583b443dc312
--- /dev/null
+++ b/app/serializers/learning_object_obaa_serializer.rb
@@ -0,0 +1,64 @@
+class LearningObjectObaaSerializer < ActiveModel::Serializer
+#   "educational": {
+#     "description": "? não existe no PortalMecHomologa"
+#   },
+#   "rights": { # nao existe no PortalMecHomologa
+#     "copyrightAndOhterRestrictions":"true",
+#     "cost": "false",
+#     "description": "nome da licença"
+#   },
+
+  def general
+    {
+      title: object.name,
+      description: object.description,
+      keywords: object.tags.map(&:name).join(','),
+      created_at: object.created_at,
+      updated_at: object.updated_at,
+      thumbnail: object.thumbnail.try(:url),
+      score: object.score,
+      likes_count: object.likes_count,
+      shares_count: object.shares_count,
+      acessibility: ''
+    }
+  end
+
+  def identifier
+    {
+      catalog: 'PortalMec',
+      entry: object.id,
+      language: object.language.try(:code)
+    }
+  end
+
+  def technical
+    {
+      location: object.default_attachment.try(:retrieve_url),
+      format: object.default_attachment.try(:mime_type)
+    }
+  end
+
+  def metametadata
+    {
+      identifier: {
+        catalog: 'PortalMec',
+        name: object.publisher.try(:name),
+        entry_type: object.publisher.class.name,
+        entry: object.publisher.try(:id)
+      },
+      contribute: {
+        role: 'Criador',
+        entity: object.author,
+        date: object.created_at
+      },
+      metadataSchema: 'OBAAv1.0',
+      language: object.language.try(:name)
+    }
+  end
+
+  # attributes :id , :name, :created_at, :updated_at, :description, :author, :score, :likes_count
+  attributes :id, :general, :identifier, :technical, :metametadata
+
+  # has_many :tags
+  # has_many :attachments
+end
diff --git a/app/serializers/learning_object_serializer.rb b/app/serializers/learning_object_serializer.rb
index 58e096c5623fb8a9d5f8bbc1215d858c45001077..f20e83db71d9f3957e88db3d25bd048781cc2411 100644
--- a/app/serializers/learning_object_serializer.rb
+++ b/app/serializers/learning_object_serializer.rb
@@ -1,5 +1,14 @@
 class LearningObjectSerializer < ActiveModel::Serializer
-  attributes :id , :name, :created_at, :updated_at, :description, :author, :score, :likes_count
+  def default_location
+    object.default_attachment.try(:retrieve_url)
+  end
+
+  def default_mime_type
+    object.default_attachment.try(:retrieve_url)
+  end
+
+  attributes :id, :name, :description, :author, :thumbnail, :publisher, :language, :default_location, :default_mime_type, :score, :likes_count, :shares_count, :created_at, :updated_at
+
   has_many :tags
   has_many :attachments
 end
diff --git a/test/fixtures/learning_objects.yml b/test/fixtures/learning_objects.yml
index 531fe909669c2a7c973b137617425bf559256dfe..1dec107ce313f68f7044532a0448021d84d1c475 100644
--- a/test/fixtures/learning_objects.yml
+++ b/test/fixtures/learning_objects.yml
@@ -61,7 +61,7 @@ lo_metadata:
   id_dspace: '2'
   object_type: image
   language: portuguese
-  metadata:  '[{"key": "dc.creator", "value": "ufpr", "language": "nil"}]'
+  metadata:  '{"dc.creator": "ufpr"}'
 
 lo_metadata2:
   name: 'Institution Object 2'
@@ -70,7 +70,7 @@ lo_metadata2:
   id_dspace: '3'
   object_type: image
   language: portuguese
-  metadata:  '[{"key": "dc.creator", "value": "ufpr", "language": "nil"}]'
+  metadata:  '{"dc.creator": "ufpr"}'
 
 search:
   name: 'Teste'