         
         public var branding: Branding?
         
-        public var publication: PublicationPageReference?
+        public var publicationId: PublicationIdentifier?
+        public var publicationPageIndex: Int?
+        public var incitoViewId: String?
+        
         public var dealerId: CoreAPI.Dealer.Identifier?
         /// The id of the nearest store. Only available if a location was provided when fetching the offer.
         public var storeId: CoreAPI.Store.Identifier?

            
            self.branding = try? values.decode(CoreAPI.Branding.self, forKey: .branding)
            
            if let catalogId = try? values.decode(PublicationIdentifier.self, forKey: .catalogId) {
                let catalogPageNum = try? values.decode(Int.self, forKey: .catalogPage)
                // incito publications have pageNum == 0, so in that case set to nil.
                // otherwise, convert pageNum to index.
                self.publication = PublicationPageReference(
                    id: catalogId,
                    pageIndex: catalogPageNum.flatMap({ $0 > 0 ? $0 - 1 : nil })
                )
            }
            
            self.dealerId = try? values.decode(CoreAPI.Dealer.Identifier.self, forKey: .dealerId)
            self.storeId = try? values.decode(CoreAPI.Store.Identifier.self, forKey: .storeId)

            let values = try decoder.container(keyedBy: CodingKeys.self)
            
            self.id = try values.decode(Identifier.self, forKey: .id)
            self.heading = try values.decode(String.self, forKey: .heading)
            self.description = try? values.decode(String.self, forKey: .description)
            
