docs: def update_attachment_metadata(self, content_id, attachment_id, new_metadata, callback=None):
          """
          Update the non-binary data of an Attachment.
  
          This resource can be used to update an attachment's filename, media-type, comment, and parent container.
          :param content_id (string): A string containing the ID of the attachments content container.
          :param attachment_id (string): The ID of the attachment to update.
          :param new_metadata (dict): The updated metadata for the attachment.
          :param callback: OPTIONAL: The callback to execute on the resulting data, before the method returns.
                           Default: None (no callback, raw data returned).
          :return: The JSON data returned from the content/{id}/child/attachment/{attachment_id} endpoint,
                   or the results of the callback. Will raise requests.HTTPError on bad input, potentially.
  
          Example attachment metadata:
          {
              "id": "att5678",
              "type": "attachment",
              "title": "new_file_name.txt",
              "version": {
                  "number": 2,
                  "minorEdit": false
              }
          }
          """
          assert isinstance(new_metadata, dict) and set(new_metadata.keys()) >= self.ATTACHMENT_METADATA_KEYS
          return self._service_put_request("rest/api/content/{id}/child/attachment/{attachment_id}"
                                           "".format(id=content_id, attachment_id=attachment_id),
                                           data=json.dumps(new_metadata), headers={"Content-Type": "application/json"},
                                           callback=callback)