001// Generated by delombok at Mon Oct 20 21:18:34 UTC 2025
002/*
003 * Copyright (c) 2010-2025 Mark Allen, Norbert Bartels.
004 *
005 * Permission is hereby granted, free of charge, to any person obtaining a copy
006 * of this software and associated documentation files (the "Software"), to deal
007 * in the Software without restriction, including without limitation the rights
008 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
009 * copies of the Software, and to permit persons to whom the Software is
010 * furnished to do so, subject to the following conditions:
011 *
012 * The above copyright notice and this permission notice shall be included in
013 * all copies or substantial portions of the Software.
014 *
015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
021 * THE SOFTWARE.
022 */
023package com.restfb.types;
024
025import static java.util.Collections.unmodifiableList;
026import java.util.ArrayList;
027import java.util.Date;
028import java.util.List;
029import com.restfb.Facebook;
030import com.restfb.JsonMapper.JsonMappingCompleted;
031import com.restfb.json.Json;
032import com.restfb.json.JsonValue;
033import com.restfb.types.features.HasCreatedTime;
034import com.restfb.types.features.HasFrom;
035import com.restfb.types.features.HasMessage;
036
037/**
038 * Represents the <a href="https://developers.facebook.com/docs/graph-api/reference/message/">Message Graph API type</a>
039 * .
040 *
041 * @author <a href="http://restfb.com">Mark Allen</a>
042 * @author Felipe Kurkowski
043 * @author alockhart
044 */
045public class Message extends FacebookType implements HasCreatedTime, HasFrom, HasMessage {
046  /**
047   * The time the message was initially created.
048   */
049  @Facebook("created_time")
050  private Date createdTime;
051  /**
052   * The subject of the message.
053   */
054  @Facebook
055  private String subject;
056  /**
057   * The sender of this message
058   */
059  @Facebook
060  private ExtendedReferenceType from;
061  @Facebook
062  private List<ExtendedReferenceType> to = new ArrayList<>();
063  @Facebook("is_unsupported")
064  private boolean isUnsupported = false;
065  /**
066   * The text of the message
067   */
068  @Facebook
069  private String message;
070  /**
071   * Sticker contained in the message.
072   */
073  @Facebook
074  private String sticker;
075  @Facebook
076  private List<Reaction> reactions = new ArrayList<>();
077  @Facebook
078  private List<Attachment> attachments = new ArrayList<>();
079  @Facebook
080  private List<Share> shares = new ArrayList<>();
081  @Facebook
082  private Story story;
083  /**
084   * The time of the last update to this message.
085   */
086  @Facebook("updated_time")
087  private Date updatedTime;
088  /**
089   * The "unread" count for this message.
090   */
091  @Facebook
092  private Integer unread;
093  /**
094   * Whether this message has been seen.
095   */
096  @Facebook
097  private Boolean unseen;
098  @Facebook("reply_to")
099  private ReplyTo replyTo;
100  @Facebook("tags")
101  private transient String rawTags;
102  private List<String> tags = new ArrayList<>();
103  private static final long serialVersionUID = 1L;
104
105
106  public static class ReplyTo extends FacebookType {
107    private static final long serialVersionUID = 1L;
108    @Facebook
109    private String mid;
110    @Facebook("is_self_reply")
111    private Boolean isSelfReply;
112
113    @java.lang.SuppressWarnings("all")
114    public String getMid() {
115      return this.mid;
116    }
117
118    @java.lang.SuppressWarnings("all")
119    public void setMid(final String mid) {
120      this.mid = mid;
121    }
122
123    @java.lang.SuppressWarnings("all")
124    public Boolean getIsSelfReply() {
125      return this.isSelfReply;
126    }
127
128    @java.lang.SuppressWarnings("all")
129    public void setIsSelfReply(final Boolean isSelfReply) {
130      this.isSelfReply = isSelfReply;
131    }
132  }
133
134
135  /**
136   * Represents an attached file that you may find on a private message.
137   *
138   * @author alockhart
139   * @since 1.6.12
140   */
141  public static class Attachment extends FacebookType {
142    private static final long serialVersionUID = 1L;
143    /**
144     * The attachment's filename, for example 121423423.jpg.
145     */
146    @Facebook
147    private String name;
148    /**
149     * The attachment's mime type, for example image/jpeg.
150     */
151    @Facebook("mime_type")
152    private String mimeType;
153    /**
154     * The size of the attachment in bytes.
155     */
156    @Facebook
157    private Long size;
158    @Facebook("file_url")
159    private String fileUrl;
160    /**
161     * When the attached file is an image, Facebook will also send information about its width, height and url.
162     */
163    @Facebook("image_data")
164    private ImageData imageData;
165    /**
166     * When the attached file is a video, Facebook will also send information about its width, height and url.
167     */
168    @Facebook("video_data")
169    private VideoData videoData;
170
171    /**
172     * returns if the attachment is an image
173     * 
174     * @return true if the attachment is an image, false otherwise
175     */
176    public boolean isImage() {
177      return null != imageData && null == videoData;
178    }
179
180    /**
181     * returns if the attachment is a video
182     * 
183     * @return true if the attachment is a video, false otherwise
184     */
185    public boolean isVideo() {
186      return null != videoData;
187    }
188
189    /**
190     * returns if the attachment is a placeholder for the real attachment, that is not accessible via API due to privacy
191     * rules in Europe
192     *
193     * check <a href="https://developers.facebook.com/docs/messenger-platform/europe-updates">at Facebook</a>
194     *
195     * @return true if not accessible in the EU
196     */
197    public boolean isRemovedInEurope() {
198      return "1234".equals(getId());
199    }
200
201    /**
202     * The attachment's filename, for example 121423423.jpg.
203     *
204     * @return The attachment's filename.
205     */
206    @java.lang.SuppressWarnings("all")
207    public String getName() {
208      return this.name;
209    }
210
211    /**
212     * The attachment's filename, for example 121423423.jpg.
213     */
214    @java.lang.SuppressWarnings("all")
215    public void setName(final String name) {
216      this.name = name;
217    }
218
219    /**
220     * The attachment's mime type, for example image/jpeg.
221     *
222     * @return The attachment's mime type.
223     */
224    @java.lang.SuppressWarnings("all")
225    public String getMimeType() {
226      return this.mimeType;
227    }
228
229    /**
230     * The attachment's mime type, for example image/jpeg.
231     */
232    @java.lang.SuppressWarnings("all")
233    public void setMimeType(final String mimeType) {
234      this.mimeType = mimeType;
235    }
236
237    /**
238     * The size of the attachment in bytes.
239     *
240     * @return The size of the attachment in bytes.
241     */
242    @java.lang.SuppressWarnings("all")
243    public Long getSize() {
244      return this.size;
245    }
246
247    /**
248     * The size of the attachment in bytes.
249     */
250    @java.lang.SuppressWarnings("all")
251    public void setSize(final Long size) {
252      this.size = size;
253    }
254
255    @java.lang.SuppressWarnings("all")
256    public String getFileUrl() {
257      return this.fileUrl;
258    }
259
260    @java.lang.SuppressWarnings("all")
261    public void setFileUrl(final String fileUrl) {
262      this.fileUrl = fileUrl;
263    }
264
265    /**
266     * When the attached file is an image, Facebook will also send information about its width, height and url.
267     *
268     * @return The attachment's image data.
269     */
270    @java.lang.SuppressWarnings("all")
271    public ImageData getImageData() {
272      return this.imageData;
273    }
274
275    /**
276     * When the attached file is an image, Facebook will also send information about its width, height and url.
277     */
278    @java.lang.SuppressWarnings("all")
279    public void setImageData(final ImageData imageData) {
280      this.imageData = imageData;
281    }
282
283    /**
284     * When the attached file is a video, Facebook will also send information about its width, height and url.
285     *
286     * @return The attachment's video data.
287     */
288    @java.lang.SuppressWarnings("all")
289    public VideoData getVideoData() {
290      return this.videoData;
291    }
292
293    /**
294     * When the attached file is a video, Facebook will also send information about its width, height and url.
295     */
296    @java.lang.SuppressWarnings("all")
297    public void setVideoData(final VideoData videoData) {
298      this.videoData = videoData;
299    }
300  }
301
302
303  /**
304   * Represents the <a href="https://developers.facebook.com/docs/graph-api/reference/message/shares/">Message Share
305   * Graph API type</a>.
306   */
307  public static class Share extends NamedFacebookType {
308    /**
309     * The URL to the shared item.
310     */
311    @Facebook
312    private String link;
313    /**
314     * The description of the shared item.
315     */
316    @Facebook
317    private String description;
318    @Facebook
319    private String picture;
320
321    /**
322     * The URL to the shared item.
323     *
324     * @return The URL to the shared item.
325     */
326    @java.lang.SuppressWarnings("all")
327    public String getLink() {
328      return this.link;
329    }
330
331    /**
332     * The URL to the shared item.
333     */
334    @java.lang.SuppressWarnings("all")
335    public void setLink(final String link) {
336      this.link = link;
337    }
338
339    /**
340     * The description of the shared item.
341     *
342     * @return The description of the shared item.
343     */
344    @java.lang.SuppressWarnings("all")
345    public String getDescription() {
346      return this.description;
347    }
348
349    /**
350     * The description of the shared item.
351     */
352    @java.lang.SuppressWarnings("all")
353    public void setDescription(final String description) {
354      this.description = description;
355    }
356
357    @java.lang.SuppressWarnings("all")
358    public String getPicture() {
359      return this.picture;
360    }
361
362    @java.lang.SuppressWarnings("all")
363    public void setPicture(final String picture) {
364      this.picture = picture;
365    }
366  }
367
368
369  /**
370   * Additional attachment information, only present when an attached file is an image.
371   *
372   * @author Felipe Kurkowski
373   */
374  public static class ImageData extends AttachmentData {
375    private static final long serialVersionUID = 1L;
376    /**
377     * The image's max width.
378     */
379    @Facebook("max_width")
380    private int maxWidth;
381    /**
382     * The image's max height.
383     */
384    @Facebook("max_height")
385    private int maxHeight;
386    @Facebook("render_as_sticker")
387    private Boolean renderAsSticker;
388    @Facebook("image_type")
389    private int imageType;
390    @Facebook("raw_gif_image")
391    private String rawGifImage;
392    @Facebook("raw_webp_image")
393    private String rawWebpImage;
394    @Facebook("animated_gif_url")
395    private String animatedGifUrl;
396    @Facebook("animated_gif_preview_url")
397    private String animatedGifPreviewUrl;
398    @Facebook("animated_webp_url")
399    private String animatedWebpUrl;
400    @Facebook("animated_webp_preview_url")
401    private String animatedWebpPreviewUrl;
402
403    /**
404     * The image's max width.
405     *
406     * @return The image's max width.
407     */
408    @java.lang.SuppressWarnings("all")
409    public int getMaxWidth() {
410      return this.maxWidth;
411    }
412
413    /**
414     * The image's max width.
415     */
416    @java.lang.SuppressWarnings("all")
417    public void setMaxWidth(final int maxWidth) {
418      this.maxWidth = maxWidth;
419    }
420
421    /**
422     * The image's max height.
423     *
424     * @return The image's max height.
425     */
426    @java.lang.SuppressWarnings("all")
427    public int getMaxHeight() {
428      return this.maxHeight;
429    }
430
431    /**
432     * The image's max height.
433     */
434    @java.lang.SuppressWarnings("all")
435    public void setMaxHeight(final int maxHeight) {
436      this.maxHeight = maxHeight;
437    }
438
439    @java.lang.SuppressWarnings("all")
440    public Boolean getRenderAsSticker() {
441      return this.renderAsSticker;
442    }
443
444    @java.lang.SuppressWarnings("all")
445    public void setRenderAsSticker(final Boolean renderAsSticker) {
446      this.renderAsSticker = renderAsSticker;
447    }
448
449    @java.lang.SuppressWarnings("all")
450    public int getImageType() {
451      return this.imageType;
452    }
453
454    @java.lang.SuppressWarnings("all")
455    public void setImageType(final int imageType) {
456      this.imageType = imageType;
457    }
458
459    @java.lang.SuppressWarnings("all")
460    public String getRawGifImage() {
461      return this.rawGifImage;
462    }
463
464    @java.lang.SuppressWarnings("all")
465    public void setRawGifImage(final String rawGifImage) {
466      this.rawGifImage = rawGifImage;
467    }
468
469    @java.lang.SuppressWarnings("all")
470    public String getRawWebpImage() {
471      return this.rawWebpImage;
472    }
473
474    @java.lang.SuppressWarnings("all")
475    public void setRawWebpImage(final String rawWebpImage) {
476      this.rawWebpImage = rawWebpImage;
477    }
478
479    @java.lang.SuppressWarnings("all")
480    public String getAnimatedGifUrl() {
481      return this.animatedGifUrl;
482    }
483
484    @java.lang.SuppressWarnings("all")
485    public void setAnimatedGifUrl(final String animatedGifUrl) {
486      this.animatedGifUrl = animatedGifUrl;
487    }
488
489    @java.lang.SuppressWarnings("all")
490    public String getAnimatedGifPreviewUrl() {
491      return this.animatedGifPreviewUrl;
492    }
493
494    @java.lang.SuppressWarnings("all")
495    public void setAnimatedGifPreviewUrl(final String animatedGifPreviewUrl) {
496      this.animatedGifPreviewUrl = animatedGifPreviewUrl;
497    }
498
499    @java.lang.SuppressWarnings("all")
500    public String getAnimatedWebpUrl() {
501      return this.animatedWebpUrl;
502    }
503
504    @java.lang.SuppressWarnings("all")
505    public void setAnimatedWebpUrl(final String animatedWebpUrl) {
506      this.animatedWebpUrl = animatedWebpUrl;
507    }
508
509    @java.lang.SuppressWarnings("all")
510    public String getAnimatedWebpPreviewUrl() {
511      return this.animatedWebpPreviewUrl;
512    }
513
514    @java.lang.SuppressWarnings("all")
515    public void setAnimatedWebpPreviewUrl(final String animatedWebpPreviewUrl) {
516      this.animatedWebpPreviewUrl = animatedWebpPreviewUrl;
517    }
518  }
519
520
521  /**
522   * Additional attachment information, only present when an attached file is a video.
523   */
524  public static class VideoData extends AttachmentData {
525    private static final long serialVersionUID = 1L;
526    @Facebook
527    private int length;
528    @Facebook("video_type")
529    private int videoType;
530    @Facebook
531    private int rotation;
532
533    @java.lang.SuppressWarnings("all")
534    public int getLength() {
535      return this.length;
536    }
537
538    @java.lang.SuppressWarnings("all")
539    public void setLength(final int length) {
540      this.length = length;
541    }
542
543    @java.lang.SuppressWarnings("all")
544    public int getVideoType() {
545      return this.videoType;
546    }
547
548    @java.lang.SuppressWarnings("all")
549    public void setVideoType(final int videoType) {
550      this.videoType = videoType;
551    }
552
553    @java.lang.SuppressWarnings("all")
554    public int getRotation() {
555      return this.rotation;
556    }
557
558    @java.lang.SuppressWarnings("all")
559    public void setRotation(final int rotation) {
560      this.rotation = rotation;
561    }
562  }
563
564
565  public static abstract class AttachmentData extends AbstractFacebookType {
566    private static final long serialVersionUID = 1L;
567    /**
568     * The image's width.
569     */
570    @Facebook
571    private int width;
572    /**
573     * The image's height.
574     */
575    @Facebook
576    private int height;
577    /**
578     * The image's url.
579     */
580    @Facebook
581    private String url;
582    /**
583     * The image's preview url.
584     */
585    @Facebook("preview_url")
586    private String previewUrl;
587
588    /**
589     * The image's width.
590     *
591     * @return The image's width.
592     */
593    @java.lang.SuppressWarnings("all")
594    public int getWidth() {
595      return this.width;
596    }
597
598    /**
599     * The image's width.
600     */
601    @java.lang.SuppressWarnings("all")
602    public void setWidth(final int width) {
603      this.width = width;
604    }
605
606    /**
607     * The image's height.
608     *
609     * @return The image's height.
610     */
611    @java.lang.SuppressWarnings("all")
612    public int getHeight() {
613      return this.height;
614    }
615
616    /**
617     * The image's height.
618     */
619    @java.lang.SuppressWarnings("all")
620    public void setHeight(final int height) {
621      this.height = height;
622    }
623
624    /**
625     * The image's url.
626     *
627     * @return The image's url.
628     */
629    @java.lang.SuppressWarnings("all")
630    public String getUrl() {
631      return this.url;
632    }
633
634    /**
635     * The image's url.
636     */
637    @java.lang.SuppressWarnings("all")
638    public void setUrl(final String url) {
639      this.url = url;
640    }
641
642    /**
643     * The image's preview url.
644     *
645     * @return The image's preview url.
646     */
647    @java.lang.SuppressWarnings("all")
648    public String getPreviewUrl() {
649      return this.previewUrl;
650    }
651
652    /**
653     * The image's preview url.
654     */
655    @java.lang.SuppressWarnings("all")
656    public void setPreviewUrl(final String previewUrl) {
657      this.previewUrl = previewUrl;
658    }
659  }
660
661
662  public static class Reaction extends AbstractFacebookType {
663    @Facebook
664    private String reaction;
665    @Facebook
666    private List<ExtendedReferenceType> users = new ArrayList<>();
667
668    public List<ExtendedReferenceType> getUsers() {
669      return users;
670    }
671
672    public boolean addUser(ExtendedReferenceType user) {
673      return users.add(user);
674    }
675
676    public boolean removeUser(ExtendedReferenceType user) {
677      return users.remove(user);
678    }
679
680    @java.lang.SuppressWarnings("all")
681    public String getReaction() {
682      return this.reaction;
683    }
684
685    @java.lang.SuppressWarnings("all")
686    public void setReaction(final String reaction) {
687      this.reaction = reaction;
688    }
689  }
690
691
692  public static class Story extends AbstractFacebookType {
693    @Facebook("reply_to")
694    StoryReply replyTo;
695    @Facebook
696    StoryMention mention;
697
698    @java.lang.SuppressWarnings("all")
699    public StoryReply getReplyTo() {
700      return this.replyTo;
701    }
702
703    @java.lang.SuppressWarnings("all")
704    public void setReplyTo(final StoryReply replyTo) {
705      this.replyTo = replyTo;
706    }
707
708    @java.lang.SuppressWarnings("all")
709    public StoryMention getMention() {
710      return this.mention;
711    }
712
713    @java.lang.SuppressWarnings("all")
714    public void setMention(final StoryMention mention) {
715      this.mention = mention;
716    }
717  }
718
719
720  public static class StoryReply extends FacebookType {
721    @Facebook
722    private String link;
723
724    @java.lang.SuppressWarnings("all")
725    public String getLink() {
726      return this.link;
727    }
728
729    @java.lang.SuppressWarnings("all")
730    public void setLink(final String link) {
731      this.link = link;
732    }
733  }
734
735
736  public static class StoryMention extends FacebookType {
737    @Facebook
738    private String link;
739
740    @java.lang.SuppressWarnings("all")
741    public String getLink() {
742      return this.link;
743    }
744
745    @java.lang.SuppressWarnings("all")
746    public void setLink(final String link) {
747      this.link = link;
748    }
749  }
750
751  @JsonMappingCompleted
752  void convertTags() {
753    if (rawTags != null) {
754      JsonValue parsedObject = Json.parse(rawTags);
755      if (parsedObject.isObject() && parsedObject.asObject().get("data").isArray()) {
756        for (JsonValue tagObject : parsedObject.asObject().get("data").asArray()) {
757          tags.add(tagObject.asObject().get("name").asString());
758        }
759      }
760    }
761  }
762
763  /**
764   * The attachments associated with the message.
765   *
766   * @return The attachments associated with the message.
767   */
768  public List<Attachment> getAttachments() {
769    return (attachments != null ? unmodifiableList(attachments) : null);
770  }
771
772  public boolean addAttachment(Attachment attachment) {
773    return attachments.add(attachment);
774  }
775
776  public boolean removeAttachment(Attachment attachment) {
777    return attachments.remove(attachment);
778  }
779
780  /**
781   * The shares associated with the message.
782   * <p>
783   * This is page only.
784   *
785   * @return The shares associated with the message.
786   */
787  public List<Share> getShares() {
788    return (shares != null ? unmodifiableList(shares) : null);
789  }
790
791  public boolean addShare(Share share) {
792    return shares.add(share);
793  }
794
795  public boolean removeShare(Share share) {
796    return shares.remove(share);
797  }
798
799  /**
800   * A list of recipients of the message.
801   *
802   * @return A list of the message recipients
803   */
804  public List<ExtendedReferenceType> getTo() {
805    return unmodifiableList(to);
806  }
807
808  public boolean addTo(ExtendedReferenceType receiver) {
809    return to.add(receiver);
810  }
811
812  public boolean removeTo(ExtendedReferenceType receiver) {
813    return to.remove(receiver);
814  }
815
816  /**
817   * A set of tags indicating the message folder and source of the message.
818   *
819   * @return A set of tags indicating the message folder and source of the message.
820   */
821  public List<String> getTags() {
822    return unmodifiableList(tags);
823  }
824
825  public boolean addTag(String tag) {
826    return tags.add(tag);
827  }
828
829  public boolean removeTag(String tag) {
830    return tags.remove(tag);
831  }
832
833  /**
834   * Reaction (like/love) on the existing message
835   *
836   * @return list of reactions
837   */
838  public List<Reaction> getReactions() {
839    return unmodifiableList(reactions);
840  }
841
842  public boolean addReaction(Reaction reaction) {
843    return reactions.add(reaction);
844  }
845
846  public boolean removeReaction(Reaction reaction) {
847    return reactions.remove(reaction);
848  }
849
850  /**
851   * The time the message was initially created.
852   *
853   * @return The time the message was initially created.
854   */
855  @Override
856  @java.lang.SuppressWarnings("all")
857  public Date getCreatedTime() {
858    return this.createdTime;
859  }
860
861  /**
862   * The time the message was initially created.
863   */
864  @java.lang.SuppressWarnings("all")
865  public void setCreatedTime(final Date createdTime) {
866    this.createdTime = createdTime;
867  }
868
869  /**
870   * The subject of the message.
871   *
872   * @return The subject of the message.
873   */
874  @java.lang.SuppressWarnings("all")
875  public String getSubject() {
876    return this.subject;
877  }
878
879  /**
880   * The subject of the message.
881   */
882  @java.lang.SuppressWarnings("all")
883  public void setSubject(final String subject) {
884    this.subject = subject;
885  }
886
887  /**
888   * The sender of this message
889   *
890   * @return The sender of this message
891   */
892  @Override
893  @java.lang.SuppressWarnings("all")
894  public ExtendedReferenceType getFrom() {
895    return this.from;
896  }
897
898  /**
899   * The sender of this message
900   */
901  @java.lang.SuppressWarnings("all")
902  public void setFrom(final ExtendedReferenceType from) {
903    this.from = from;
904  }
905
906  @java.lang.SuppressWarnings("all")
907  public boolean isUnsupported() {
908    return this.isUnsupported;
909  }
910
911  @java.lang.SuppressWarnings("all")
912  public void setUnsupported(final boolean isUnsupported) {
913    this.isUnsupported = isUnsupported;
914  }
915
916  /**
917   * The text of the message
918   *
919   * @return The text of the message
920   */
921  @Override
922  @java.lang.SuppressWarnings("all")
923  public String getMessage() {
924    return this.message;
925  }
926
927  /**
928   * The text of the message
929   */
930  @java.lang.SuppressWarnings("all")
931  public void setMessage(final String message) {
932    this.message = message;
933  }
934
935  /**
936   * Sticker contained in the message.
937   *
938   * @return The Sticker in that message
939   */
940  @java.lang.SuppressWarnings("all")
941  public String getSticker() {
942    return this.sticker;
943  }
944
945  /**
946   * Sticker contained in the message.
947   */
948  @java.lang.SuppressWarnings("all")
949  public void setSticker(final String sticker) {
950    this.sticker = sticker;
951  }
952
953  @java.lang.SuppressWarnings("all")
954  public Story getStory() {
955    return this.story;
956  }
957
958  @java.lang.SuppressWarnings("all")
959  public void setStory(final Story story) {
960    this.story = story;
961  }
962
963  /**
964   * The time of the last update to this message.
965   *
966   * @return The time of the last update to this message.
967   */
968  @java.lang.SuppressWarnings("all")
969  public Date getUpdatedTime() {
970    return this.updatedTime;
971  }
972
973  /**
974   * The time of the last update to this message.
975   */
976  @java.lang.SuppressWarnings("all")
977  public void setUpdatedTime(final Date updatedTime) {
978    this.updatedTime = updatedTime;
979  }
980
981  /**
982   * The "unread" count for this message.
983   *
984   * @return The "unread" count for this message.
985   */
986  @java.lang.SuppressWarnings("all")
987  public Integer getUnread() {
988    return this.unread;
989  }
990
991  /**
992   * The "unread" count for this message.
993   */
994  @java.lang.SuppressWarnings("all")
995  public void setUnread(final Integer unread) {
996    this.unread = unread;
997  }
998
999  /**
1000   * Whether this message has been seen.
1001   *
1002   * @return Whether this message has been seen.
1003   */
1004  @java.lang.SuppressWarnings("all")
1005  public Boolean getUnseen() {
1006    return this.unseen;
1007  }
1008
1009  /**
1010   * Whether this message has been seen.
1011   */
1012  @java.lang.SuppressWarnings("all")
1013  public void setUnseen(final Boolean unseen) {
1014    this.unseen = unseen;
1015  }
1016
1017  @java.lang.SuppressWarnings("all")
1018  public ReplyTo getReplyTo() {
1019    return this.replyTo;
1020  }
1021
1022  @java.lang.SuppressWarnings("all")
1023  public void setReplyTo(final ReplyTo replyTo) {
1024    this.replyTo = replyTo;
1025  }
1026}