code: def update(self, app_id, data):
          
          assert ('name' in data
                  and data['name']
                  and 'summary' in data
                  and 'categories' in data
                  and data['categories']
                  and 'support_email' in data
                  and data['support_email']
                  and 'device_types' in data
                  and data['device_types']
                  and 'payment_type' in data
                  and data['payment_type']
                  and 'privacy_policy' in data
                  and data['privacy_policy'])
          return self.conn.fetch('PUT', self.url('app') % app_id, data)
docs: Update app identified by app_id with data
  
          :params:
              * app_id (int) id in the marketplace received with :method:`create`
              * data (dict) some keys are required:
                  * *name*: the title of the app. Maximum length 127
                    characters.
                  * *summary*: the summary of the app. Maximum length
                    255 characters.
                  * *categories*: a list of the categories, at least
                    two of the category ids provided from the category api
                    (see below).
                  * *support_email*: the email address for support.
                  * *device_types*: a list of the device types at least
                    one of: 'desktop', 'phone', 'tablet'.
                  * *payment_type*: only choice at this time is 'free'.
          :returns: HttResponse:
              * status_code (int) 202 if successful
              * content (dict) or empty if successful