001// Generated by delombok at Thu Aug 13 13:56:44 UTC 2026
002/*
003 * Copyright (c) 2010-2026 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.Connection;
030import com.restfb.Facebook;
031import com.restfb.JsonMapper;
032import com.restfb.JsonMapper.JsonMappingCompleted;
033import com.restfb.annotation.GraphAPI;
034import com.restfb.exception.FacebookJsonMappingException;
035import com.restfb.json.Json;
036import com.restfb.json.JsonObject;
037import com.restfb.json.JsonValue;
038import com.restfb.types.features.HasComments;
039import com.restfb.types.features.HasCreatedTime;
040import com.restfb.types.features.HasMessage;
041import com.restfb.util.MessageTagUtils;
042
043/**
044 * Represents the <a href="https://developers.facebook.com/docs/graph-api/reference/post/">Post Graph API type</a>.
045 *
046 * @author <a href="http://restfb.com">Mark Allen</a>
047 * @since 1.5
048 */
049@SuppressWarnings("deprecation")
050public class Post extends FacebookType implements HasComments, HasCreatedTime, HasMessage {
051  /**
052   * An object containing the ID and name of the user who posted the message.
053   */
054  @Facebook
055  private From from;
056  /**
057   * Objectives under which this post can be advertised
058   */
059  @Facebook("allowed_advertising_objects")
060  private String allowedAdvertisingObjects;
061  /**
062   * Objectives under which this post can be advertised
063   */
064  @Facebook("allowed_advertising_objectives")
065  private List<String> allowedAdvertisingObjectives = new ArrayList<>();
066  /**
067   * The call to action type used in any Page posts for mobile app engagement ads
068   */
069  @Facebook("call_to_action")
070  private PostCallToAction callToAction;
071  @Facebook("child_attachments")
072  private List<Post> childAttachments = new ArrayList<>();
073  /**
074   * If comments are being mirrored to an external site, this function returns the domain of that external site.
075   */
076  @Facebook("comments_mirroring_domain")
077  private String commentsMirroringDomain;
078  /**
079   * The message.
080   */
081  @Facebook
082  private String message;
083  /**
084   * ID of the parent post
085   */
086  @Facebook("parent_id")
087  private String parentId;
088  /**
089   * The permanent static URL to the post on www.facebook.com.
090   * <p>
091   * Example: https://www.facebook.com/FacebookforDevelopers/posts/10153449196353553
092   * </p>
093   */
094  @Facebook("permalink_url")
095  private String permalinkUrl;
096  /**
097   * If available, a link to the picture included with this post.
098   */
099  @Facebook
100  private String picture;
101  /**
102   * The link attached to this post.
103   *
104   * Hint for Graph API 3.3: Use <code>attachment/url_unshimmed</code> instead
105   */
106  @Facebook
107  @GraphAPI(until = "3.2")
108  private String link;
109  /**
110   * The name of the link.
111   *
112   * Hint for Graph API 3.3: Use <code>attachment/title</code> instead
113   */
114  @Facebook
115  @GraphAPI(until = "3.2")
116  private String name;
117  /**
118   * The caption of the link (appears beneath the link name).
119   *
120   * Hint for Graph API 3.3: Use <code>attachment/title</code> instead
121   */
122  @Facebook
123  @GraphAPI(until = "3.2")
124  private String caption;
125  /**
126   * A description of the link (appears beneath the link caption).
127   *
128   * Hint for Graph API 3.3: Use <code>attachment/description</code> instead
129   */
130  @Facebook
131  @GraphAPI(until = "3.2")
132  private String description;
133  /**
134   * If this Post has a place, the event associated with the place
135   */
136  @Facebook
137  @GraphAPI(since = "2.5")
138  private Event event;
139  @Facebook("expanded_height")
140  private Long expandedHeight;
141  @Facebook
142  private Long height;
143  @Facebook("expanded_width")
144  private Long expandedWidth;
145  @Facebook
146  private Long width;
147  @Facebook("video_buying_eligibility")
148  private List<String> videoBuyingEligibility;
149  /**
150   * If available, the source link attached to this post (for example, a flash or video file).
151   *
152   * Hint for Graph API 3.3: Use <code>attachment/media/source</code> instead
153   */
154  @Facebook
155  @GraphAPI(until = "3.2")
156  private String source;
157  /**
158   * The application used to create this post.
159   */
160  @Facebook
161  private NamedFacebookType application;
162  /**
163   * The backdated time for backdate post. For regular post, this field will be set to null.
164   */
165  @Facebook("backdated_time")
166  private Date backdatedTime;
167  /**
168   * Information about the attachment to the post.
169   */
170  @Facebook
171  private Coordinates coordinates;
172  /**
173   * A link to an icon representing the type of this post.
174   */
175  @Facebook
176  private String icon;
177  /**
178   * The privacy settings for this post.
179   */
180  @Facebook
181  private Privacy privacy;
182  /**
183   * ID of post to use for promotion for stories that cannot be promoted directly
184   */
185  @Facebook("promotable_id")
186  private String promotableId;
187  /**
188   * Status of the promotion, if the post was promoted.
189   */
190  @Facebook("promotion_status")
191  private String promotionStatus;
192  /**
193   * Object that controls news feed targeting for this post.
194   *
195   * To force Facebook to fill the <code>feed_targeting</code> field you have to fetch the post with the
196   * <code>fields=feed_targeting</code> parameter, otherwise the feedTargeting is <code>null</code>.
197   *
198   *
199   * @since 1.11.0
200   */
201  @Facebook("feed_targeting")
202  private FeedTargeting feedTargeting;
203  /**
204   * Whether the viewer can send a private reply to this post (Page viewers only)
205   */
206  @Facebook("can_reply_privately")
207  @GraphAPI(since = "2.5")
208  private Boolean canReplyPrivately;
209  /**
210   * The profile this was posted on if different from the author.
211   */
212  @Facebook
213  @GraphAPI(since = "2.5")
214  private NamedFacebookType target;
215  /**
216   * Ads targeting information of the post.
217   */
218  @Facebook
219  private Targeting targeting;
220  /**
221   * Timeline visibility information of the post.
222   */
223  @Facebook("timeline_visibility")
224  private String timelineVisibility;
225  /**
226   * Duplicate mapping for "likes" since FB can return it differently in different situations.
227   */
228  @Facebook("likes")
229  private Long likesCount = 0L;
230  /**
231   * Duplicate mapping for "likes" since FB can return it differently in different situations.
232   *
233   * -- GETTER -- The likes on this post.
234   * <p>
235   * Sometimes this can be {@code null} - check {@link #getLikesCount()} instead in that case.
236   */
237  @Facebook
238  private Likes likes;
239  /**
240   * The time the post was initially published.
241   */
242  @Facebook("created_time")
243  private Date createdTime;
244  /**
245   * The time of the last comment on this post.
246   */
247  @Facebook("updated_time")
248  private Date updatedTime;
249  /**
250   * This field is available on tagged Posts.
251   */
252  @Facebook("tagged_time")
253  private Date taggedTime;
254  /**
255   * The Facebook object id for an uploaded photo or video.
256   *
257   * Hint for Graph API 3.3: Use <code>attachment/target/id</code> instead
258   *
259   * @since 1.6.5
260   */
261  @Facebook("object_id")
262  @GraphAPI(until = "3.2")
263  private String objectId;
264  /**
265   * The {@code status_type} of post this is, for example {@code "approved_friend"}.
266   *
267   * @since 1.6.12
268   */
269  @Facebook("status_type")
270  private String statusType;
271  /**
272   * Text from stories not intentionally generated by users
273   *
274   * @since 1.6.16
275   */
276  @Facebook
277  private String story;
278  /**
279   * The comments for this post.
280   */
281  @Facebook
282  private Comments comments;
283  /**
284   * The reactions for this post.
285   */
286  @Facebook
287  private Reactions reactions;
288  /**
289   * The place where this post occurred.
290   *
291   * @since 1.6.8
292   */
293  @Facebook
294  private Place place;
295  @Facebook
296  private List<NamedFacebookType> to = new ArrayList<>();
297  @Facebook
298  private List<Action> actions = new ArrayList<>();
299  @Facebook
300  private List<Property> properties = new ArrayList<>();
301  @Facebook("message_tags")
302  private transient String rawMessageTags;
303  private List<MessageTag> messageTags = new ArrayList<>();
304  @Facebook("story_tags")
305  private transient String rawStoryTags;
306  private List<MessageTag> storyTags = new ArrayList<>();
307  @Facebook("sponsor_tags")
308  private List<NamedFacebookType> sponsorTags = new ArrayList<>();
309  @Facebook
310  private Connection<Insight> insights;
311  /**
312   * UNIX timestamp of the scheduled publish time for the post.
313   */
314  @Facebook("scheduled_publish_time")
315  private Date scheduledPublishTime;
316  /**
317   * Number of times the post has been shared.
318   */
319  @Facebook
320  private Shares shares;
321  /**
322   * ID of admin who created the post.
323   *
324   * Applies to pages only
325   *
326   * @since 1.10.0
327   */
328  @Facebook("admin_creator")
329  private NamedFacebookType adminCreator;
330  /**
331   * Whether the post can be promoted on Instagram.
332   * <p>
333   * It returns the enum <code>eligible</code> if it can be promoted. Otherwise it returns an enum for why it cannot be
334   * promoted
335   * </p>
336   */
337  @Facebook("instagram_eligibility")
338  private String instagramEligibility;
339  /**
340   * Whether or not the post references an app.
341   */
342  @Facebook("is_app_share")
343  private Boolean isAppShare;
344  @Facebook("is_eligible_for_promotion")
345  private Boolean isEligibleForPromotion;
346  /**
347   * Whether the post has expiration time that has passed
348   */
349  @Facebook("is_expired")
350  private Boolean isExpired;
351  @Facebook("is_fb_live_videos")
352  private Boolean isFbLiveVideos;
353  /**
354   * If this post is marked as hidden (applies to Pages only).
355   *
356   * @since 1.10.0
357   */
358  @Facebook("is_hidden")
359  private Boolean isHidden;
360  /**
361   * Returns True if the post was created inline when creating ads.
362   */
363  @Facebook("is_inline_created")
364  private Boolean isInlineCreated;
365  /**
366   * Whether this post can be promoted in Instagram.
367   */
368  @Facebook("is_instagram_eligible")
369  private Boolean isInstagramEligible;
370  /**
371   * Whether the post is currently popular.
372   *
373   * Based on whether the total actions as a percentage of reach exceeds a certain threshold
374   */
375  @Facebook("is_popular")
376  private Boolean isPopular;
377  /**
378   * Indicates whether a scheduled post was published. (applies to scheduled Page Post only, for users post and
379   * instantly published posts this value is always <code>true</code>)
380   *
381   * @since 1.10.0
382   */
383  @Facebook("is_published")
384  private Boolean isPublished;
385  /**
386   * Whether the post is a spherical video post.
387   */
388  @Facebook("is_spherical")
389  private Boolean isSpherical;
390  /**
391   * Whether user is subscribed to the post.
392   */
393  @Facebook
394  private Boolean subscribed;
395  /**
396   * Whether display the end card for a multi-link share post
397   */
398  @Facebook("multi_share_end_card")
399  private Boolean multiShareEndCard;
400  /**
401   * Whether automatically select the order of the links in multi-link share post when used in an ad
402   */
403  @Facebook("multi_share_optimized")
404  private Boolean multiShareOptimized;
405  /**
406   * Attachments added to a post.
407   *
408   * To force Facebook to fill the <code>attachments</code> field you have to fetch the post with the
409   * <code>fields=attachments</code> parameter, otherwise the attachments are <code>null</code>.
410   */
411  @Facebook
412  private Attachments attachments;
413  /**
414   * Full picture URL.
415   *
416   * you get the url to this posts full picture.
417   *
418   * To force Facebook to fill the <code>full_picture</code> field you have to fetch the post with the
419   * <code>fields=full_picture</code> parameter, otherwise the full_picture is <code>null</code>.
420   */
421  @Facebook("full_picture")
422  private String fullPicture;
423  /**
424   * ID of the user or Page the post was shared from
425   */
426  @Facebook
427  private String via;
428
429  /**
430   * A string indicating the object type of this post.
431   *
432   * Hint for Graph API 3.3: <code>attachment/media_type</code> If there is no <code>attachment</code> or
433   * <code>media_type=link</code>, the value is the same as <code>type=status</code>.
434   *
435   * @return A string indicating the object type of this post.
436   */
437  @Override
438  @GraphAPI(until = "3.2")
439  public String getType() {
440    return super.getType();
441  }
442
443  private static final long serialVersionUID = 3L;
444
445  /**
446   * Post-JSON-mapping operation that populates the {@code messageTags} field "by hand".
447   * <p>
448   * This is a temporary hack until we have formal public support for it/improved {@code JsonMapper} capabilities so it
449   * can handle arbitrary Map types.
450   *
451   * @param jsonMapper
452   *          The {@code JsonMapper} that was used to map to this type.
453   * @since 1.6.11
454   */
455  @JsonMappingCompleted
456  protected void jsonMappingCompleted(JsonMapper jsonMapper) {
457    if (rawMessageTags != null) {
458      messageTags = createTags(rawMessageTags, jsonMapper);
459    }
460    if (rawStoryTags != null) {
461      storyTags = createTags(rawStoryTags, jsonMapper);
462    }
463  }
464
465  private List<MessageTag> createTags(String rawTags, JsonMapper jsonMapper) {
466    try {
467      return jsonMapper.toJavaList(rawTags, MessageTag.class);
468    } catch (FacebookJsonMappingException je) {
469    }
470    // message tags not in Graph API 2.5 format, ignore this exception and try another way
471    try {
472      List<MessageTag> resultList = new ArrayList<>();
473      JsonObject rawMessageTagsObject = jsonMapper.toJavaObject(rawTags, JsonObject.class);
474      for (String key : rawMessageTagsObject.names()) {
475        String tagArrayString = rawMessageTagsObject.get(key).toString();
476        resultList.addAll(jsonMapper.toJavaList(tagArrayString, MessageTag.class));
477      }
478      return resultList;
479    } catch (FacebookJsonMappingException je) {
480      return new ArrayList<>();
481    }
482  }
483
484
485  /**
486   * Represents the undocumented {@code Property} type.
487   *
488   * @author <a href="http://restfb.com">Mark Allen</a>
489   * @since 1.6.4
490   */
491  public static class Property extends AbstractFacebookType {
492    /**
493     * The name of the property.
494     */
495    @Facebook
496    private String name;
497    /**
498     * The text of the property.
499     */
500    @Facebook
501    private String text;
502    /**
503     * The URL of the property.
504     */
505    @Facebook
506    private String href;
507    private static final long serialVersionUID = 1L;
508
509    /**
510     * The name of the property.
511     *
512     * @return The name of the property.
513     */
514    @java.lang.SuppressWarnings("all")
515    @lombok.Generated
516    public String getName() {
517      return this.name;
518    }
519
520    /**
521     * The name of the property.
522     */
523    @java.lang.SuppressWarnings("all")
524    @lombok.Generated
525    public void setName(final String name) {
526      this.name = name;
527    }
528
529    /**
530     * The text of the property.
531     *
532     * @return The text of the property.
533     */
534    @java.lang.SuppressWarnings("all")
535    @lombok.Generated
536    public String getText() {
537      return this.text;
538    }
539
540    /**
541     * The text of the property.
542     */
543    @java.lang.SuppressWarnings("all")
544    @lombok.Generated
545    public void setText(final String text) {
546      this.text = text;
547    }
548
549    /**
550     * The URL of the property.
551     *
552     * @return The URL of the property.
553     */
554    @java.lang.SuppressWarnings("all")
555    @lombok.Generated
556    public String getHref() {
557      return this.href;
558    }
559
560    /**
561     * The URL of the property.
562     */
563    @java.lang.SuppressWarnings("all")
564    @lombok.Generated
565    public void setHref(final String href) {
566      this.href = href;
567    }
568  }
569
570
571  /**
572   * Represents the <a href="http://developers.facebook.com/docs/reference/api/post">Action Graph API type</a>.
573   *
574   * @author <a href="http://restfb.com">Mark Allen</a>
575   * @since 1.5
576   */
577  public static class Action extends AbstractFacebookType {
578    /**
579     * Gets the name of the action.
580     */
581    @Facebook
582    private String name;
583    /**
584     * The link for the action.
585     */
586    @Facebook
587    private String link;
588    private static final long serialVersionUID = 1L;
589
590    /**
591     * Gets the name of the action.
592     *
593     * @return Gets the name of the action.
594     */
595    @java.lang.SuppressWarnings("all")
596    @lombok.Generated
597    public String getName() {
598      return this.name;
599    }
600
601    /**
602     * Gets the name of the action.
603     */
604    @java.lang.SuppressWarnings("all")
605    @lombok.Generated
606    public void setName(final String name) {
607      this.name = name;
608    }
609
610    /**
611     * The link for the action.
612     *
613     * @return The link for the action.
614     */
615    @java.lang.SuppressWarnings("all")
616    @lombok.Generated
617    public String getLink() {
618      return this.link;
619    }
620
621    /**
622     * The link for the action.
623     */
624    @java.lang.SuppressWarnings("all")
625    @lombok.Generated
626    public void setLink(final String link) {
627      this.link = link;
628    }
629  }
630
631
632  /**
633   * Represents the coordinates information attached to a Post.
634   */
635  public static class Coordinates extends AbstractFacebookType {
636    @Facebook("checkin_id")
637    private String checkinId;
638    @Facebook("author_uid")
639    private String authorUid;
640    @Facebook("page_id")
641    private String pageId;
642    @Facebook("target_id")
643    private String targetId;
644    @Facebook("target_href")
645    private String targetHref;
646    @Facebook
647    private JsonObject coords;
648    @Facebook("tagged_uids")
649    private List<String> taggedUids = new ArrayList<>();
650    @Facebook
651    private Date timestamp;
652    @Facebook
653    private String message;
654    @Facebook("target_type")
655    private String targetType;
656    private static final long serialVersionUID = 1L;
657
658    @java.lang.SuppressWarnings("all")
659    @lombok.Generated
660    public String getCheckinId() {
661      return this.checkinId;
662    }
663
664    @java.lang.SuppressWarnings("all")
665    @lombok.Generated
666    public void setCheckinId(final String checkinId) {
667      this.checkinId = checkinId;
668    }
669
670    @java.lang.SuppressWarnings("all")
671    @lombok.Generated
672    public String getAuthorUid() {
673      return this.authorUid;
674    }
675
676    @java.lang.SuppressWarnings("all")
677    @lombok.Generated
678    public void setAuthorUid(final String authorUid) {
679      this.authorUid = authorUid;
680    }
681
682    @java.lang.SuppressWarnings("all")
683    @lombok.Generated
684    public String getPageId() {
685      return this.pageId;
686    }
687
688    @java.lang.SuppressWarnings("all")
689    @lombok.Generated
690    public void setPageId(final String pageId) {
691      this.pageId = pageId;
692    }
693
694    @java.lang.SuppressWarnings("all")
695    @lombok.Generated
696    public String getTargetId() {
697      return this.targetId;
698    }
699
700    @java.lang.SuppressWarnings("all")
701    @lombok.Generated
702    public void setTargetId(final String targetId) {
703      this.targetId = targetId;
704    }
705
706    @java.lang.SuppressWarnings("all")
707    @lombok.Generated
708    public String getTargetHref() {
709      return this.targetHref;
710    }
711
712    @java.lang.SuppressWarnings("all")
713    @lombok.Generated
714    public void setTargetHref(final String targetHref) {
715      this.targetHref = targetHref;
716    }
717
718    @java.lang.SuppressWarnings("all")
719    @lombok.Generated
720    public JsonObject getCoords() {
721      return this.coords;
722    }
723
724    @java.lang.SuppressWarnings("all")
725    @lombok.Generated
726    public void setCoords(final JsonObject coords) {
727      this.coords = coords;
728    }
729
730    @java.lang.SuppressWarnings("all")
731    @lombok.Generated
732    public List<String> getTaggedUids() {
733      return this.taggedUids;
734    }
735
736    @java.lang.SuppressWarnings("all")
737    @lombok.Generated
738    public void setTaggedUids(final List<String> taggedUids) {
739      this.taggedUids = taggedUids;
740    }
741
742    @java.lang.SuppressWarnings("all")
743    @lombok.Generated
744    public Date getTimestamp() {
745      return this.timestamp;
746    }
747
748    @java.lang.SuppressWarnings("all")
749    @lombok.Generated
750    public void setTimestamp(final Date timestamp) {
751      this.timestamp = timestamp;
752    }
753
754    @java.lang.SuppressWarnings("all")
755    @lombok.Generated
756    public String getMessage() {
757      return this.message;
758    }
759
760    @java.lang.SuppressWarnings("all")
761    @lombok.Generated
762    public void setMessage(final String message) {
763      this.message = message;
764    }
765
766    @java.lang.SuppressWarnings("all")
767    @lombok.Generated
768    public String getTargetType() {
769      return this.targetType;
770    }
771
772    @java.lang.SuppressWarnings("all")
773    @lombok.Generated
774    public void setTargetType(final String targetType) {
775      this.targetType = targetType;
776    }
777  }
778
779
780  public static class KeyedType extends NamedFacebookType {
781    private static final long serialVersionUID = 1L;
782    @Facebook
783    private String key;
784
785    @JsonMappingCompleted
786    private void replaceId() {
787      if (getId() == null && key != null) {
788        setId(key);
789      }
790      if (key == null && getId() != null) {
791        setKey(getId());
792      }
793    }
794
795    @java.lang.SuppressWarnings("all")
796    @lombok.Generated
797    public String getKey() {
798      return this.key;
799    }
800
801    @java.lang.SuppressWarnings("all")
802    @lombok.Generated
803    public void setKey(final String key) {
804      this.key = key;
805    }
806  }
807
808
809  public static class Targeting extends AbstractFacebookType {
810    private static final long serialVersionUID = 1L;
811    @Facebook("geo_locations")
812    @GraphAPI(since = "2.8")
813    FeedTargeting geoLocations;
814    @Facebook
815    protected List<KeyedType> cities = new ArrayList<>();
816    @Facebook
817    protected List<String> countries = new ArrayList<>();
818    @Facebook
819    protected List<KeyedType> regions = new ArrayList<>();
820    @Facebook("regions")
821    private transient String rawRegionsString;
822
823    @JsonMappingCompleted
824    private void convertList(JsonMapper mapper) {
825      if (rawRegionsString != null) {
826        JsonValue jsonValue = Json.parse(rawRegionsString);
827        if (jsonValue.isObject()) {
828          JsonObject rawRegions = jsonValue.asObject();
829          for (String key : rawRegions.names()) {
830            String region = rawRegions.get(key).toString();
831            regions.add(mapper.toJavaObject(region, KeyedType.class));
832          }
833        }
834      }
835    }
836
837    @Facebook
838    protected List<Integer> locales = new ArrayList<>();
839
840    public boolean addCity(KeyedType city) {
841      if (geoLocations != null) {
842        return geoLocations.addCity(city);
843      }
844      return cities.add(city);
845    }
846
847    public boolean addCountry(String country) {
848      if (geoLocations != null) {
849        return geoLocations.addCountry(country);
850      }
851      return countries.add(country);
852    }
853
854    public boolean addLocale(Integer locale) {
855      if (geoLocations != null) {
856        return geoLocations.addLocale(locale);
857      }
858      return locales.add(locale);
859    }
860
861    public boolean addRegion(KeyedType region) {
862      if (geoLocations != null) {
863        return geoLocations.addRegion(region);
864      }
865      return regions.add(region);
866    }
867
868    /**
869     * Values of targeting cities.
870     *
871     * Use type of adcity to find Targeting Options and use the returned key to specify.
872     *
873     * @return list of cities
874     */
875    public List<KeyedType> getCities() {
876      if (geoLocations != null) {
877        return geoLocations.getCities();
878      }
879      return unmodifiableList(cities);
880    }
881
882    /**
883     * Values of targeting countries.
884     *
885     * You can specify up to 25 countries. Use ISO 3166 format codes.
886     *
887     * @return list of targeting countries.
888     */
889    public List<String> getCountries() {
890      if (geoLocations != null) {
891        return geoLocations.getCountries();
892      }
893      return unmodifiableList(countries);
894    }
895
896    /**
897     * Targeted locales.
898     *
899     * Use type of adlocale to find Targeting Options and use the returned key to specify.
900     *
901     * @return list of locales
902     */
903    public List<Integer> getLocales() {
904      if (geoLocations != null && !geoLocations.getLocales().isEmpty()) {
905        return geoLocations.getLocales();
906      }
907      return unmodifiableList(locales);
908    }
909
910    /**
911     * Values of targeting regions.
912     *
913     * Use type of {@code adregion} to find Targeting Options and use the returned key to specify.
914     *
915     * @return list of regions
916     */
917    public List<KeyedType> getRegions() {
918      if (geoLocations != null) {
919        return geoLocations.getRegions();
920      }
921      return unmodifiableList(regions);
922    }
923
924    public boolean removeCity(NamedFacebookType city) {
925      if (geoLocations != null) {
926        return geoLocations.removeCity(city);
927      }
928      return cities.remove(city);
929    }
930
931    public boolean removeCountry(String country) {
932      if (geoLocations != null) {
933        return geoLocations.removeCountry(country);
934      }
935      return countries.remove(country);
936    }
937
938    public boolean removeLocale(Integer locale) {
939      if (geoLocations != null) {
940        return geoLocations.removeLocale(locale);
941      }
942      return locales.remove(locale);
943    }
944
945    public boolean removeRegion(NamedFacebookType region) {
946      if (geoLocations != null) {
947        return geoLocations.removeRegion(region);
948      }
949      return regions.remove(region);
950    }
951
952    @GraphAPI(since = "2.8")
953    @java.lang.SuppressWarnings("all")
954    @lombok.Generated
955    public FeedTargeting getGeoLocations() {
956      return this.geoLocations;
957    }
958
959    @java.lang.SuppressWarnings("all")
960    @lombok.Generated
961    public void setGeoLocations(final FeedTargeting geoLocations) {
962      this.geoLocations = geoLocations;
963    }
964  }
965
966
967  /**
968   * Object that controls news feed targeting for this post.
969   *
970   * Anyone in these groups will be more likely to see this post, others will be less likely, but may still see it
971   * anyway. Any of the targeting fields shown here can be used, none are required (applies to Pages only).
972   *
973   * Represents the <a href="http://developers.facebook.com/docs/reference/api/post#fields">Feed Targeting API type</a>.
974   */
975  public static class FeedTargeting extends Targeting {
976    private static final long serialVersionUID = 1L;
977    /**
978     * Maximum age.
979     */
980    @Facebook("age_max")
981    private Integer ageMax;
982    /**
983     * Must be 13 or higher. Default is 0
984     */
985    @Facebook("age_min")
986    private Integer ageMin;
987    @Facebook("relevant_until_ts")
988    private Date relevantUntilTs;
989    @Facebook("college_majors")
990    private List<String> collegeMajors = new ArrayList<>();
991    @Facebook("college_networks")
992    private List<FacebookType> collegeNetworks = new ArrayList<>();
993    @Facebook("college_years")
994    private List<Integer> collegeYears = new ArrayList<>();
995    @Facebook("education_statuses")
996    private List<Integer> educationStatuses = new ArrayList<>();
997    @Facebook("fan_of")
998    private List<String> fanOf = new ArrayList<>();
999    @Facebook
1000    private List<Integer> genders = new ArrayList<>();
1001    @Facebook("interested_in")
1002    private List<Integer> interestedIn = new ArrayList<>();
1003    @Facebook
1004    private List<String> interests = new ArrayList<>();
1005    @Facebook("relationship_statuses")
1006    private List<Integer> relationshipStatuses = new ArrayList<>();
1007    @Facebook("work_networks")
1008    private List<NamedFacebookType> workNetworks = new ArrayList<>();
1009
1010    /**
1011     * Target people who majored in these college subjects.
1012     *
1013     * Limited to 200 college major values. Use type of adcollegemajor to find Targeting Options and use the returned
1014     * name to specify.
1015     *
1016     * @return list of college majors
1017     */
1018    public List<String> getCollegeMajors() {
1019      return unmodifiableList(collegeMajors);
1020    }
1021
1022    public boolean addCollegeMajor(String collegeMajor) {
1023      return collegeMajors.add(collegeMajor);
1024    }
1025
1026    public boolean removeCollegeMajor(String collegeMajor) {
1027      return collegeMajors.remove(collegeMajor);
1028    }
1029
1030    /**
1031     * Colleges, for college graduates.
1032     *
1033     * Limit is 200 values.
1034     *
1035     * @return list of colleges
1036     */
1037    public List<FacebookType> getCollegeNetworks() {
1038      return unmodifiableList(collegeNetworks);
1039    }
1040
1041    public boolean addCollegeNetwork(FacebookType collegeNetwork) {
1042      return collegeNetworks.add(collegeNetwork);
1043    }
1044
1045    public boolean removeCollegeNetwork(FacebookType collegeNetwork) {
1046      return collegeNetworks.remove(collegeNetwork);
1047    }
1048
1049    /**
1050     * Array of integers for graduation year from college.
1051     *
1052     * @return graduation year list
1053     */
1054    public List<Integer> getCollegeYears() {
1055      return unmodifiableList(collegeYears);
1056    }
1057
1058    public boolean addCollegeYear(Integer collegeYear) {
1059      return collegeYears.add(collegeYear);
1060    }
1061
1062    public boolean removeCollegeYear(Integer collegeYear) {
1063      return collegeYears.remove(collegeYear);
1064    }
1065
1066    /**
1067     * Array of integers for targeting based on education level.
1068     *
1069     * Use 1 for high school, 2 for undergraduate, and 3 for alum (or localized equivalents).
1070     *
1071     * @return list of education levels
1072     */
1073    public List<Integer> getEducationStatuses() {
1074      return unmodifiableList(educationStatuses);
1075    }
1076
1077    public boolean addEducationStatus(Integer educationStatus) {
1078      return educationStatuses.add(educationStatus);
1079    }
1080
1081    public boolean removeEducationStatus(Integer educationStatus) {
1082      return educationStatuses.remove(educationStatus);
1083    }
1084
1085    /**
1086     * List of object ids.
1087     *
1088     * the user should be fan of these objects (interests).
1089     *
1090     * @return list of object ids
1091     */
1092    public List<String> getFanOf() {
1093      return unmodifiableList(fanOf);
1094    }
1095
1096    public boolean addFanOf(String interestId) {
1097      return fanOf.add(interestId);
1098    }
1099
1100    public boolean removeFanOf(String interestId) {
1101      return fanOf.remove(interestId);
1102    }
1103
1104    /**
1105     * Target specific genders.
1106     *
1107     * 1 targets all male viewers and 2 females. Default is to target both.
1108     *
1109     * @return list of genders
1110     */
1111    public List<Integer> getGenders() {
1112      return unmodifiableList(genders);
1113    }
1114
1115    public boolean addGender(Integer gender) {
1116      return genders.add(gender);
1117    }
1118
1119    public boolean removeGender(Integer gender) {
1120      return genders.remove(gender);
1121    }
1122
1123    /**
1124     * Indicates targeting based on the 'interested in' field of the user profile.
1125     *
1126     * You can specify an integer of 1 to indicate male, 2 indicates female. Default is all types.
1127     *
1128     * Please note 'interested in' targeting is not available in France due to local laws.
1129     *
1130     * @return list of 'interested in' types
1131     */
1132    public List<Integer> getInterestedIn() {
1133      return unmodifiableList(interestedIn);
1134    }
1135
1136    public boolean addInterestedIn(Integer interest) {
1137      return interestedIn.add(interest);
1138    }
1139
1140    public boolean removeInterestedIn(Integer interest) {
1141      return interestedIn.remove(interest);
1142    }
1143
1144    /**
1145     * Indicates targeting based on the 'interests' field of the user profile.
1146     *
1147     * @return list of 'interests' types
1148     */
1149    public List<String> getInterests() {
1150      return unmodifiableList(interests);
1151    }
1152
1153    public boolean addInterests(String interest) {
1154      return interests.add(interest);
1155    }
1156
1157    public boolean removeInterests(String interest) {
1158      return interests.remove(interest);
1159    }
1160
1161    /**
1162     * Array of integers for targeting based on relationship status.
1163     *
1164     * Use 1 for single, 2 for 'in a relationship', 3 for married, and 4 for engaged. Default is all types.
1165     *
1166     * @return list of relationship statuses
1167     */
1168    public List<Integer> getRelationshipStatuses() {
1169      return unmodifiableList(relationshipStatuses);
1170    }
1171
1172    public boolean addRelationshipStatus(Integer relationshipStatus) {
1173      return relationshipStatuses.add(relationshipStatus);
1174    }
1175
1176    public boolean removeRelationshipStatus(Integer relationshipStatus) {
1177      return relationshipStatuses.remove(relationshipStatus);
1178    }
1179
1180    /**
1181     * Company, organization, or other workplace.
1182     *
1183     * <b>Name</b>: Name of targeted workplace. Use type of adworkplace to find Targeting Options and use the returned
1184     * name to specify this.
1185     *
1186     * <b>Id</b>: Unique ID of targeted workplace. Use type of adworkplace to find Targeting Options and use the
1187     * returned key to specify this (must match paired name value).
1188     *
1189     * @return list of work networks
1190     */
1191    public List<NamedFacebookType> getWorkNetworks() {
1192      return unmodifiableList(workNetworks);
1193    }
1194
1195    public boolean addWorkNetwork(NamedFacebookType workNetwork) {
1196      return workNetworks.add(workNetwork);
1197    }
1198
1199    public boolean removeWorkNetwork(NamedFacebookType workNetwork) {
1200      return workNetworks.remove(workNetwork);
1201    }
1202
1203    /**
1204     * Maximum age.
1205     */
1206    @java.lang.SuppressWarnings("all")
1207    @lombok.Generated
1208    public Integer getAgeMax() {
1209      return this.ageMax;
1210    }
1211
1212    /**
1213     * Maximum age.
1214     */
1215    @java.lang.SuppressWarnings("all")
1216    @lombok.Generated
1217    public void setAgeMax(final Integer ageMax) {
1218      this.ageMax = ageMax;
1219    }
1220
1221    /**
1222     * Must be 13 or higher. Default is 0
1223     */
1224    @java.lang.SuppressWarnings("all")
1225    @lombok.Generated
1226    public Integer getAgeMin() {
1227      return this.ageMin;
1228    }
1229
1230    /**
1231     * Must be 13 or higher. Default is 0
1232     */
1233    @java.lang.SuppressWarnings("all")
1234    @lombok.Generated
1235    public void setAgeMin(final Integer ageMin) {
1236      this.ageMin = ageMin;
1237    }
1238
1239    @java.lang.SuppressWarnings("all")
1240    @lombok.Generated
1241    public Date getRelevantUntilTs() {
1242      return this.relevantUntilTs;
1243    }
1244
1245    @java.lang.SuppressWarnings("all")
1246    @lombok.Generated
1247    public void setRelevantUntilTs(final Date relevantUntilTs) {
1248      this.relevantUntilTs = relevantUntilTs;
1249    }
1250  }
1251
1252
1253  /**
1254   * Represents the Shares included the <a href="http://developers.facebook.com/docs/reference/api/post">Post</a>
1255   * response. Presently only supports count.
1256   *
1257   * @since 1.6.11
1258   */
1259  public static class Shares extends AbstractFacebookType {
1260    /**
1261     * The number of shares.
1262     */
1263    @Facebook
1264    private Long count = 0L;
1265    private static final long serialVersionUID = 1L;
1266
1267    /**
1268     * The number of shares.
1269     *
1270     * @return The number of shares.
1271     */
1272    @java.lang.SuppressWarnings("all")
1273    @lombok.Generated
1274    public Long getCount() {
1275      return this.count;
1276    }
1277
1278    /**
1279     * The number of shares.
1280     */
1281    @java.lang.SuppressWarnings("all")
1282    @lombok.Generated
1283    public void setCount(final Long count) {
1284      this.count = count;
1285    }
1286  }
1287
1288
1289  /**
1290   * Represents the attachments included in<a href="http://developers.facebook.com/docs/reference/api/post">Graph API
1291   * Post type</a>.
1292   *
1293   * @author <a href="https://github.com/kevinleturc/">Kevin Leturc</a>
1294   * @since 1.12.0
1295   */
1296  public static class Attachments extends AbstractFacebookType {
1297    /**
1298     * All media attachments associated with this post.
1299     *
1300     * @return All media attachments associated with this post.
1301     */
1302    @Facebook
1303    private List<StoryAttachment> data = new ArrayList<>();
1304    private static final long serialVersionUID = 1L;
1305
1306    /**
1307     * The attachments.
1308     *
1309     * @return The attachments.
1310     */
1311    public List<StoryAttachment> getData() {
1312      return unmodifiableList(data);
1313    }
1314
1315    public boolean addData(StoryAttachment attachment) {
1316      return data.add(attachment);
1317    }
1318
1319    public boolean removeData(StoryAttachment attachment) {
1320      return data.remove(attachment);
1321    }
1322  }
1323
1324  /**
1325   * The number of likes on this post.
1326   *
1327   * @return The number of likes on this post.
1328   */
1329  public Long getLikesCount() {
1330    if (getLikes() != null) {
1331      return getLikes().getTotalCount();
1332    }
1333    return likesCount;
1334  }
1335
1336  /**
1337   * The number of reactions on this post.
1338   *
1339   * @return The number of reactions on this post.
1340   */
1341  public Long getReactionsCount() {
1342    if (getReactions() != null) {
1343      return getReactions().getTotalCount();
1344    }
1345    return 0L;
1346  }
1347
1348  /**
1349   * The number of shares of this post.
1350   *
1351   * @return The number of shares of this post.
1352   */
1353  public Long getSharesCount() {
1354    if (shares != null) {
1355      return shares.getCount();
1356    }
1357    return 0L;
1358  }
1359
1360  /**
1361   * The number of comments of this post.
1362   *
1363   * @return The number of comments of this post.
1364   */
1365  public Long getCommentsCount() {
1366    if (comments != null) {
1367      return comments.getTotalCount();
1368    }
1369    return 0L;
1370  }
1371
1372  /**
1373   * A list of the profiles mentioned or targeted in this post.
1374   *
1375   * @return A list of the profiles mentioned or targeted in this post.
1376   */
1377  public List<NamedFacebookType> getTo() {
1378    return unmodifiableList(to);
1379  }
1380
1381  public boolean addTo(NamedFacebookType profile) {
1382    return to.add(profile);
1383  }
1384
1385  public boolean removeTo(NamedFacebookType profile) {
1386    return to.remove(profile);
1387  }
1388
1389  /**
1390   * A list of available action names and links (including commenting, liking, and an optional app-specified action).
1391   *
1392   * @return A list of available action names and links (including commenting, liking, and an optional app-specified
1393   *         action).
1394   */
1395  public List<Action> getActions() {
1396    return unmodifiableList(actions);
1397  }
1398
1399  public boolean addAction(Action action) {
1400    return actions.add(action);
1401  }
1402
1403  public boolean removeAction(Action action) {
1404    return actions.remove(action);
1405  }
1406
1407  /**
1408   * A list of properties for this post.
1409   * <p>
1410   * This field is undocumented.
1411   *
1412   * @return A list of properties for this post.
1413   */
1414  public List<Property> getProperties() {
1415    return unmodifiableList(properties);
1416  }
1417
1418  public boolean addProperty(Property property) {
1419    return properties.add(property);
1420  }
1421
1422  public boolean removeProperty(Property property) {
1423    return properties.remove(property);
1424  }
1425
1426  /**
1427   * Objects tagged in the message (Users, Pages, etc).
1428   *
1429   * @return Objects tagged in the message (Users, Pages, etc).
1430   * @since 1.6.10
1431   */
1432  public List<MessageTag> getMessageTags() {
1433    return unmodifiableList(messageTags);
1434  }
1435
1436  public void addMessageTag(MessageTag messageTag) {
1437    messageTags.add(messageTag);
1438  }
1439
1440  public void removeMessageTag(MessageTag messageTag) {
1441    messageTags.remove(messageTag);
1442  }
1443
1444  /**
1445   * Returns the {@link #getMessage() message} where tagged segments have been replaced with their mention syntax.
1446   *
1447   * @return normalized message text or the original message if it cannot be normalized
1448   */
1449  public String getNormalizedMessage() {
1450    return MessageTagUtils.normalizeMessage(message, messageTags);
1451  }
1452
1453  /**
1454   * Objects tagged in the story (Users, Pages, etc).
1455   *
1456   * @return Objects tagged in the story (Users, Pages, etc).
1457   */
1458  public List<MessageTag> getStoryTags() {
1459    return unmodifiableList(storyTags);
1460  }
1461
1462  public void addStoryTag(MessageTag messageTag) {
1463    storyTags.add(messageTag);
1464  }
1465
1466  public void removeStoryTag(MessageTag messageTag) {
1467    storyTags.remove(messageTag);
1468  }
1469
1470  /**
1471   * Sub-shares of a multi-link share post
1472   *
1473   * @return Sub-shares of a multi-link share post
1474   */
1475  public List<Post> getChildAttachments() {
1476    return unmodifiableList(childAttachments);
1477  }
1478
1479  public void addChildAttachment(Post childAttachment) {
1480    childAttachments.add(childAttachment);
1481  }
1482
1483  public void removeChildAttachment(Post childAttachment) {
1484    childAttachments.remove(childAttachment);
1485  }
1486
1487  /**
1488   * A sponsor tag points to a Facebook Page.
1489   *
1490   * (Page owners can allow their business partners to directly boost their posts.)
1491   */
1492  public List<NamedFacebookType> getSponsorTags() {
1493    return unmodifiableList(sponsorTags);
1494  }
1495
1496  public boolean addSponsorTag(NamedFacebookType sponsorTag) {
1497    return sponsorTags.add(sponsorTag);
1498  }
1499
1500  public boolean removeSponsorTag(NamedFacebookType sponsorTag) {
1501    return sponsorTags.remove(sponsorTag);
1502  }
1503
1504  /**
1505   * An object containing the ID and name of the user who posted the message.
1506   *
1507   * @return An object containing the ID and name of the user who posted the message.
1508   */
1509  @java.lang.SuppressWarnings("all")
1510  @lombok.Generated
1511  public From getFrom() {
1512    return this.from;
1513  }
1514
1515  /**
1516   * An object containing the ID and name of the user who posted the message.
1517   */
1518  @java.lang.SuppressWarnings("all")
1519  @lombok.Generated
1520  public void setFrom(final From from) {
1521    this.from = from;
1522  }
1523
1524  /**
1525   * Objectives under which this post can be advertised
1526   *
1527   * @return Objectives under which this post can be advertised
1528   */
1529  @java.lang.SuppressWarnings("all")
1530  @lombok.Generated
1531  public String getAllowedAdvertisingObjects() {
1532    return this.allowedAdvertisingObjects;
1533  }
1534
1535  /**
1536   * Objectives under which this post can be advertised
1537   */
1538  @java.lang.SuppressWarnings("all")
1539  @lombok.Generated
1540  public void setAllowedAdvertisingObjects(final String allowedAdvertisingObjects) {
1541    this.allowedAdvertisingObjects = allowedAdvertisingObjects;
1542  }
1543
1544  /**
1545   * Objectives under which this post can be advertised
1546   *
1547   * @return Objectives under which this post can be advertised
1548   */
1549  @java.lang.SuppressWarnings("all")
1550  @lombok.Generated
1551  public List<String> getAllowedAdvertisingObjectives() {
1552    return this.allowedAdvertisingObjectives;
1553  }
1554
1555  /**
1556   * Objectives under which this post can be advertised
1557   */
1558  @java.lang.SuppressWarnings("all")
1559  @lombok.Generated
1560  public void setAllowedAdvertisingObjectives(final List<String> allowedAdvertisingObjectives) {
1561    this.allowedAdvertisingObjectives = allowedAdvertisingObjectives;
1562  }
1563
1564  /**
1565   * The call to action type used in any Page posts for mobile app engagement ads
1566   */
1567  @java.lang.SuppressWarnings("all")
1568  @lombok.Generated
1569  public PostCallToAction getCallToAction() {
1570    return this.callToAction;
1571  }
1572
1573  /**
1574   * The call to action type used in any Page posts for mobile app engagement ads
1575   */
1576  @java.lang.SuppressWarnings("all")
1577  @lombok.Generated
1578  public void setCallToAction(final PostCallToAction callToAction) {
1579    this.callToAction = callToAction;
1580  }
1581
1582  /**
1583   * If comments are being mirrored to an external site, this function returns the domain of that external site.
1584   *
1585   * @return If comments are being mirrored to an external site, this function returns the domain of that external site.
1586   */
1587  @java.lang.SuppressWarnings("all")
1588  @lombok.Generated
1589  public String getCommentsMirroringDomain() {
1590    return this.commentsMirroringDomain;
1591  }
1592
1593  /**
1594   * If comments are being mirrored to an external site, this function returns the domain of that external site.
1595   */
1596  @java.lang.SuppressWarnings("all")
1597  @lombok.Generated
1598  public void setCommentsMirroringDomain(final String commentsMirroringDomain) {
1599    this.commentsMirroringDomain = commentsMirroringDomain;
1600  }
1601
1602  /**
1603   * The message.
1604   *
1605   * @return The message.
1606   */
1607  @Override
1608  @java.lang.SuppressWarnings("all")
1609  @lombok.Generated
1610  public String getMessage() {
1611    return this.message;
1612  }
1613
1614  /**
1615   * The message.
1616   */
1617  @java.lang.SuppressWarnings("all")
1618  @lombok.Generated
1619  public void setMessage(final String message) {
1620    this.message = message;
1621  }
1622
1623  /**
1624   * ID of the parent post
1625   *
1626   * @return ID of the parent post
1627   */
1628  @java.lang.SuppressWarnings("all")
1629  @lombok.Generated
1630  public String getParentId() {
1631    return this.parentId;
1632  }
1633
1634  /**
1635   * ID of the parent post
1636   */
1637  @java.lang.SuppressWarnings("all")
1638  @lombok.Generated
1639  public void setParentId(final String parentId) {
1640    this.parentId = parentId;
1641  }
1642
1643  /**
1644   * The permanent static URL to the post on www.facebook.com.
1645   * <p>
1646   * Example: https://www.facebook.com/FacebookforDevelopers/posts/10153449196353553
1647   * </p>
1648   *
1649   * @return The permanent static URL to the post on www.facebook.com.
1650   */
1651  @java.lang.SuppressWarnings("all")
1652  @lombok.Generated
1653  public String getPermalinkUrl() {
1654    return this.permalinkUrl;
1655  }
1656
1657  /**
1658   * The permanent static URL to the post on www.facebook.com.
1659   * <p>
1660   * Example: https://www.facebook.com/FacebookforDevelopers/posts/10153449196353553
1661   * </p>
1662   */
1663  @java.lang.SuppressWarnings("all")
1664  @lombok.Generated
1665  public void setPermalinkUrl(final String permalinkUrl) {
1666    this.permalinkUrl = permalinkUrl;
1667  }
1668
1669  /**
1670   * If available, a link to the picture included with this post.
1671   *
1672   * @return If available, a link to the picture included with this post.
1673   */
1674  @java.lang.SuppressWarnings("all")
1675  @lombok.Generated
1676  public String getPicture() {
1677    return this.picture;
1678  }
1679
1680  /**
1681   * If available, a link to the picture included with this post.
1682   */
1683  @java.lang.SuppressWarnings("all")
1684  @lombok.Generated
1685  public void setPicture(final String picture) {
1686    this.picture = picture;
1687  }
1688
1689  /**
1690   * The link attached to this post.
1691   *
1692   * Hint for Graph API 3.3: Use <code>attachment/url_unshimmed</code> instead
1693   *
1694   * @return The link attached to this post.
1695   */
1696  @GraphAPI(until = "3.2")
1697  @java.lang.SuppressWarnings("all")
1698  @lombok.Generated
1699  public String getLink() {
1700    return this.link;
1701  }
1702
1703  /**
1704   * The link attached to this post.
1705   *
1706   * Hint for Graph API 3.3: Use <code>attachment/url_unshimmed</code> instead
1707   */
1708  @java.lang.SuppressWarnings("all")
1709  @lombok.Generated
1710  public void setLink(final String link) {
1711    this.link = link;
1712  }
1713
1714  /**
1715   * The name of the link.
1716   *
1717   * Hint for Graph API 3.3: Use <code>attachment/title</code> instead
1718   *
1719   * @return The name of the link.
1720   */
1721  @GraphAPI(until = "3.2")
1722  @java.lang.SuppressWarnings("all")
1723  @lombok.Generated
1724  public String getName() {
1725    return this.name;
1726  }
1727
1728  /**
1729   * The name of the link.
1730   *
1731   * Hint for Graph API 3.3: Use <code>attachment/title</code> instead
1732   */
1733  @java.lang.SuppressWarnings("all")
1734  @lombok.Generated
1735  public void setName(final String name) {
1736    this.name = name;
1737  }
1738
1739  /**
1740   * The caption of the link (appears beneath the link name).
1741   *
1742   * Hint for Graph API 3.3: Use <code>attachment/title</code> instead
1743   *
1744   * @return The caption of the link (appears beneath the link name).
1745   */
1746  @GraphAPI(until = "3.2")
1747  @java.lang.SuppressWarnings("all")
1748  @lombok.Generated
1749  public String getCaption() {
1750    return this.caption;
1751  }
1752
1753  /**
1754   * The caption of the link (appears beneath the link name).
1755   *
1756   * Hint for Graph API 3.3: Use <code>attachment/title</code> instead
1757   */
1758  @java.lang.SuppressWarnings("all")
1759  @lombok.Generated
1760  public void setCaption(final String caption) {
1761    this.caption = caption;
1762  }
1763
1764  /**
1765   * A description of the link (appears beneath the link caption).
1766   *
1767   * Hint for Graph API 3.3: Use <code>attachment/description</code> instead
1768   *
1769   * @return A description of the link (appears beneath the link caption).
1770   */
1771  @GraphAPI(until = "3.2")
1772  @java.lang.SuppressWarnings("all")
1773  @lombok.Generated
1774  public String getDescription() {
1775    return this.description;
1776  }
1777
1778  /**
1779   * A description of the link (appears beneath the link caption).
1780   *
1781   * Hint for Graph API 3.3: Use <code>attachment/description</code> instead
1782   */
1783  @java.lang.SuppressWarnings("all")
1784  @lombok.Generated
1785  public void setDescription(final String description) {
1786    this.description = description;
1787  }
1788
1789  /**
1790   * If this Post has a place, the event associated with the place
1791   */
1792  @java.lang.SuppressWarnings("all")
1793  @lombok.Generated
1794  public Event getEvent() {
1795    return this.event;
1796  }
1797
1798  /**
1799   * If this Post has a place, the event associated with the place
1800   */
1801  @java.lang.SuppressWarnings("all")
1802  @lombok.Generated
1803  public void setEvent(final Event event) {
1804    this.event = event;
1805  }
1806
1807  @java.lang.SuppressWarnings("all")
1808  @lombok.Generated
1809  public Long getExpandedHeight() {
1810    return this.expandedHeight;
1811  }
1812
1813  @java.lang.SuppressWarnings("all")
1814  @lombok.Generated
1815  public void setExpandedHeight(final Long expandedHeight) {
1816    this.expandedHeight = expandedHeight;
1817  }
1818
1819  @java.lang.SuppressWarnings("all")
1820  @lombok.Generated
1821  public Long getHeight() {
1822    return this.height;
1823  }
1824
1825  @java.lang.SuppressWarnings("all")
1826  @lombok.Generated
1827  public void setHeight(final Long height) {
1828    this.height = height;
1829  }
1830
1831  @java.lang.SuppressWarnings("all")
1832  @lombok.Generated
1833  public Long getExpandedWidth() {
1834    return this.expandedWidth;
1835  }
1836
1837  @java.lang.SuppressWarnings("all")
1838  @lombok.Generated
1839  public void setExpandedWidth(final Long expandedWidth) {
1840    this.expandedWidth = expandedWidth;
1841  }
1842
1843  @java.lang.SuppressWarnings("all")
1844  @lombok.Generated
1845  public Long getWidth() {
1846    return this.width;
1847  }
1848
1849  @java.lang.SuppressWarnings("all")
1850  @lombok.Generated
1851  public void setWidth(final Long width) {
1852    this.width = width;
1853  }
1854
1855  @java.lang.SuppressWarnings("all")
1856  @lombok.Generated
1857  public List<String> getVideoBuyingEligibility() {
1858    return this.videoBuyingEligibility;
1859  }
1860
1861  @java.lang.SuppressWarnings("all")
1862  @lombok.Generated
1863  public void setVideoBuyingEligibility(final List<String> videoBuyingEligibility) {
1864    this.videoBuyingEligibility = videoBuyingEligibility;
1865  }
1866
1867  /**
1868   * If available, the source link attached to this post (for example, a flash or video file).
1869   *
1870   * Hint for Graph API 3.3: Use <code>attachment/media/source</code> instead
1871   *
1872   * @return If available, the source link attached to this post (for example, a flash or video file).
1873   */
1874  @GraphAPI(until = "3.2")
1875  @java.lang.SuppressWarnings("all")
1876  @lombok.Generated
1877  public String getSource() {
1878    return this.source;
1879  }
1880
1881  /**
1882   * If available, the source link attached to this post (for example, a flash or video file).
1883   *
1884   * Hint for Graph API 3.3: Use <code>attachment/media/source</code> instead
1885   */
1886  @java.lang.SuppressWarnings("all")
1887  @lombok.Generated
1888  public void setSource(final String source) {
1889    this.source = source;
1890  }
1891
1892  /**
1893   * The application used to create this post.
1894   *
1895   * @return The application used to create this post.
1896   */
1897  @java.lang.SuppressWarnings("all")
1898  @lombok.Generated
1899  public NamedFacebookType getApplication() {
1900    return this.application;
1901  }
1902
1903  /**
1904   * The application used to create this post.
1905   */
1906  @java.lang.SuppressWarnings("all")
1907  @lombok.Generated
1908  public void setApplication(final NamedFacebookType application) {
1909    this.application = application;
1910  }
1911
1912  /**
1913   * The backdated time for backdate post. For regular post, this field will be set to null.
1914   */
1915  @java.lang.SuppressWarnings("all")
1916  @lombok.Generated
1917  public Date getBackdatedTime() {
1918    return this.backdatedTime;
1919  }
1920
1921  /**
1922   * The backdated time for backdate post. For regular post, this field will be set to null.
1923   */
1924  @java.lang.SuppressWarnings("all")
1925  @lombok.Generated
1926  public void setBackdatedTime(final Date backdatedTime) {
1927    this.backdatedTime = backdatedTime;
1928  }
1929
1930  /**
1931   * Information about the attachment to the post.
1932   */
1933  @java.lang.SuppressWarnings("all")
1934  @lombok.Generated
1935  public Coordinates getCoordinates() {
1936    return this.coordinates;
1937  }
1938
1939  /**
1940   * Information about the attachment to the post.
1941   */
1942  @java.lang.SuppressWarnings("all")
1943  @lombok.Generated
1944  public void setCoordinates(final Coordinates coordinates) {
1945    this.coordinates = coordinates;
1946  }
1947
1948  /**
1949   * A link to an icon representing the type of this post.
1950   *
1951   * @return A link to an icon representing the type of this post.
1952   */
1953  @java.lang.SuppressWarnings("all")
1954  @lombok.Generated
1955  public String getIcon() {
1956    return this.icon;
1957  }
1958
1959  /**
1960   * A link to an icon representing the type of this post.
1961   */
1962  @java.lang.SuppressWarnings("all")
1963  @lombok.Generated
1964  public void setIcon(final String icon) {
1965    this.icon = icon;
1966  }
1967
1968  /**
1969   * The privacy settings for this post.
1970   *
1971   * @return The privacy settings for this post.
1972   */
1973  @java.lang.SuppressWarnings("all")
1974  @lombok.Generated
1975  public Privacy getPrivacy() {
1976    return this.privacy;
1977  }
1978
1979  /**
1980   * The privacy settings for this post.
1981   */
1982  @java.lang.SuppressWarnings("all")
1983  @lombok.Generated
1984  public void setPrivacy(final Privacy privacy) {
1985    this.privacy = privacy;
1986  }
1987
1988  /**
1989   * ID of post to use for promotion for stories that cannot be promoted directly
1990   */
1991  @java.lang.SuppressWarnings("all")
1992  @lombok.Generated
1993  public String getPromotableId() {
1994    return this.promotableId;
1995  }
1996
1997  /**
1998   * ID of post to use for promotion for stories that cannot be promoted directly
1999   */
2000  @java.lang.SuppressWarnings("all")
2001  @lombok.Generated
2002  public void setPromotableId(final String promotableId) {
2003    this.promotableId = promotableId;
2004  }
2005
2006  /**
2007   * Status of the promotion, if the post was promoted.
2008   *
2009   * @return Status of the promotion, if the post was promoted
2010   */
2011  @java.lang.SuppressWarnings("all")
2012  @lombok.Generated
2013  public String getPromotionStatus() {
2014    return this.promotionStatus;
2015  }
2016
2017  /**
2018   * Status of the promotion, if the post was promoted.
2019   */
2020  @java.lang.SuppressWarnings("all")
2021  @lombok.Generated
2022  public void setPromotionStatus(final String promotionStatus) {
2023    this.promotionStatus = promotionStatus;
2024  }
2025
2026  /**
2027   * Object that controls news feed targeting for this post.
2028   *
2029   * To force Facebook to fill the <code>feed_targeting</code> field you have to fetch the post with the
2030   * <code>fields=feed_targeting</code> parameter, otherwise the feedTargeting is <code>null</code>.
2031   *
2032   *
2033   * @since 1.11.0
2034   */
2035  @java.lang.SuppressWarnings("all")
2036  @lombok.Generated
2037  public FeedTargeting getFeedTargeting() {
2038    return this.feedTargeting;
2039  }
2040
2041  /**
2042   * Object that controls news feed targeting for this post.
2043   *
2044   * To force Facebook to fill the <code>feed_targeting</code> field you have to fetch the post with the
2045   * <code>fields=feed_targeting</code> parameter, otherwise the feedTargeting is <code>null</code>.
2046   *
2047   *
2048   * @since 1.11.0
2049   */
2050  @java.lang.SuppressWarnings("all")
2051  @lombok.Generated
2052  public void setFeedTargeting(final FeedTargeting feedTargeting) {
2053    this.feedTargeting = feedTargeting;
2054  }
2055
2056  /**
2057   * Whether the viewer can send a private reply to this post (Page viewers only)
2058   *
2059   * @return Whether the viewer can send a private reply to this post
2060   */
2061  @GraphAPI(since = "2.5")
2062  @java.lang.SuppressWarnings("all")
2063  @lombok.Generated
2064  public Boolean getCanReplyPrivately() {
2065    return this.canReplyPrivately;
2066  }
2067
2068  /**
2069   * Whether the viewer can send a private reply to this post (Page viewers only)
2070   */
2071  @java.lang.SuppressWarnings("all")
2072  @lombok.Generated
2073  public void setCanReplyPrivately(final Boolean canReplyPrivately) {
2074    this.canReplyPrivately = canReplyPrivately;
2075  }
2076
2077  /**
2078   * The profile this was posted on if different from the author.
2079   *
2080   * @return The profile this was posted on if different from the author
2081   */
2082  @GraphAPI(since = "2.5")
2083  @java.lang.SuppressWarnings("all")
2084  @lombok.Generated
2085  public NamedFacebookType getTarget() {
2086    return this.target;
2087  }
2088
2089  /**
2090   * The profile this was posted on if different from the author.
2091   */
2092  @java.lang.SuppressWarnings("all")
2093  @lombok.Generated
2094  public void setTarget(final NamedFacebookType target) {
2095    this.target = target;
2096  }
2097
2098  /**
2099   * Ads targeting information of the post.
2100   *
2101   * @return Ads targeting information of the post
2102   */
2103  @java.lang.SuppressWarnings("all")
2104  @lombok.Generated
2105  public Targeting getTargeting() {
2106    return this.targeting;
2107  }
2108
2109  /**
2110   * Ads targeting information of the post.
2111   */
2112  @java.lang.SuppressWarnings("all")
2113  @lombok.Generated
2114  public void setTargeting(final Targeting targeting) {
2115    this.targeting = targeting;
2116  }
2117
2118  /**
2119   * Timeline visibility information of the post.
2120   *
2121   * @return timeline visibility information of the post
2122   */
2123  @java.lang.SuppressWarnings("all")
2124  @lombok.Generated
2125  public String getTimelineVisibility() {
2126    return this.timelineVisibility;
2127  }
2128
2129  /**
2130   * Timeline visibility information of the post.
2131   */
2132  @java.lang.SuppressWarnings("all")
2133  @lombok.Generated
2134  public void setTimelineVisibility(final String timelineVisibility) {
2135    this.timelineVisibility = timelineVisibility;
2136  }
2137
2138  /**
2139   * Duplicate mapping for "likes" since FB can return it differently in different situations.
2140   *
2141   * -- GETTER -- The likes on this post.
2142   * <p>
2143   * Sometimes this can be {@code null} - check {@link #getLikesCount()} instead in that case.
2144   *
2145   * @return The likes on this post.
2146   */
2147  @java.lang.SuppressWarnings("all")
2148  @lombok.Generated
2149  public Likes getLikes() {
2150    return this.likes;
2151  }
2152
2153  /**
2154   * Duplicate mapping for "likes" since FB can return it differently in different situations.
2155   *
2156   * -- GETTER -- The likes on this post.
2157   * <p>
2158   * Sometimes this can be {@code null} - check {@link #getLikesCount()} instead in that case.
2159   */
2160  @java.lang.SuppressWarnings("all")
2161  @lombok.Generated
2162  public void setLikes(final Likes likes) {
2163    this.likes = likes;
2164  }
2165
2166  /**
2167   * The time the post was initially published.
2168   *
2169   * @return The time the post was initially published.
2170   */
2171  @Override
2172  @java.lang.SuppressWarnings("all")
2173  @lombok.Generated
2174  public Date getCreatedTime() {
2175    return this.createdTime;
2176  }
2177
2178  /**
2179   * The time the post was initially published.
2180   */
2181  @java.lang.SuppressWarnings("all")
2182  @lombok.Generated
2183  public void setCreatedTime(final Date createdTime) {
2184    this.createdTime = createdTime;
2185  }
2186
2187  /**
2188   * The time of the last comment on this post.
2189   *
2190   * @return The time of the last comment on this post.
2191   */
2192  @java.lang.SuppressWarnings("all")
2193  @lombok.Generated
2194  public Date getUpdatedTime() {
2195    return this.updatedTime;
2196  }
2197
2198  /**
2199   * The time of the last comment on this post.
2200   */
2201  @java.lang.SuppressWarnings("all")
2202  @lombok.Generated
2203  public void setUpdatedTime(final Date updatedTime) {
2204    this.updatedTime = updatedTime;
2205  }
2206
2207  /**
2208   * This field is available on tagged Posts.
2209   *
2210   * @return The tagging Date of the Post
2211   */
2212  @java.lang.SuppressWarnings("all")
2213  @lombok.Generated
2214  public Date getTaggedTime() {
2215    return this.taggedTime;
2216  }
2217
2218  /**
2219   * This field is available on tagged Posts.
2220   */
2221  @java.lang.SuppressWarnings("all")
2222  @lombok.Generated
2223  public void setTaggedTime(final Date taggedTime) {
2224    this.taggedTime = taggedTime;
2225  }
2226
2227  /**
2228   * The Facebook object id for an uploaded photo or video.
2229   *
2230   * Hint for Graph API 3.3: Use <code>attachment/target/id</code> instead
2231   *
2232   * @return The Facebook object id for an uploaded photo or video.
2233   * @since 1.6.5
2234   */
2235  @GraphAPI(until = "3.2")
2236  @java.lang.SuppressWarnings("all")
2237  @lombok.Generated
2238  public String getObjectId() {
2239    return this.objectId;
2240  }
2241
2242  /**
2243   * The Facebook object id for an uploaded photo or video.
2244   *
2245   * Hint for Graph API 3.3: Use <code>attachment/target/id</code> instead
2246   *
2247   * @since 1.6.5
2248   */
2249  @java.lang.SuppressWarnings("all")
2250  @lombok.Generated
2251  public void setObjectId(final String objectId) {
2252    this.objectId = objectId;
2253  }
2254
2255  /**
2256   * The {@code status_type} of post this is, for example {@code "approved_friend"}.
2257   *
2258   * @return The {@code status_type} of post this is, for example {@code "approved_friend"}.
2259   * @since 1.6.12
2260   */
2261  @java.lang.SuppressWarnings("all")
2262  @lombok.Generated
2263  public String getStatusType() {
2264    return this.statusType;
2265  }
2266
2267  /**
2268   * The {@code status_type} of post this is, for example {@code "approved_friend"}.
2269   *
2270   * @since 1.6.12
2271   */
2272  @java.lang.SuppressWarnings("all")
2273  @lombok.Generated
2274  public void setStatusType(final String statusType) {
2275    this.statusType = statusType;
2276  }
2277
2278  /**
2279   * Text from stories not intentionally generated by users
2280   *
2281   * @return Text from stories not intentionally generated by users
2282   * @since 1.6.16
2283   */
2284  @java.lang.SuppressWarnings("all")
2285  @lombok.Generated
2286  public String getStory() {
2287    return this.story;
2288  }
2289
2290  /**
2291   * Text from stories not intentionally generated by users
2292   *
2293   * @since 1.6.16
2294   */
2295  @java.lang.SuppressWarnings("all")
2296  @lombok.Generated
2297  public void setStory(final String story) {
2298    this.story = story;
2299  }
2300
2301  /**
2302   * The comments for this post.
2303   *
2304   * @return The comments for this post.
2305   */
2306  @Override
2307  @java.lang.SuppressWarnings("all")
2308  @lombok.Generated
2309  public Comments getComments() {
2310    return this.comments;
2311  }
2312
2313  /**
2314   * The comments for this post.
2315   */
2316  @java.lang.SuppressWarnings("all")
2317  @lombok.Generated
2318  public void setComments(final Comments comments) {
2319    this.comments = comments;
2320  }
2321
2322  /**
2323   * The reactions for this post.
2324   *
2325   * @return The reactions for this post.
2326   */
2327  @java.lang.SuppressWarnings("all")
2328  @lombok.Generated
2329  public Reactions getReactions() {
2330    return this.reactions;
2331  }
2332
2333  /**
2334   * The reactions for this post.
2335   */
2336  @java.lang.SuppressWarnings("all")
2337  @lombok.Generated
2338  public void setReactions(final Reactions reactions) {
2339    this.reactions = reactions;
2340  }
2341
2342  /**
2343   * The place where this post occurred.
2344   *
2345   * @return The place where this post occurred.
2346   * @since 1.6.8
2347   */
2348  @java.lang.SuppressWarnings("all")
2349  @lombok.Generated
2350  public Place getPlace() {
2351    return this.place;
2352  }
2353
2354  /**
2355   * The place where this post occurred.
2356   *
2357   * @since 1.6.8
2358   */
2359  @java.lang.SuppressWarnings("all")
2360  @lombok.Generated
2361  public void setPlace(final Place place) {
2362    this.place = place;
2363  }
2364
2365  @java.lang.SuppressWarnings("all")
2366  @lombok.Generated
2367  public Connection<Insight> getInsights() {
2368    return this.insights;
2369  }
2370
2371  @java.lang.SuppressWarnings("all")
2372  @lombok.Generated
2373  public void setInsights(final Connection<Insight> insights) {
2374    this.insights = insights;
2375  }
2376
2377  /**
2378   * UNIX timestamp of the scheduled publish time for the post.
2379   *
2380   * @return UNIX timestamp of the scheduled publish time for the post
2381   */
2382  @java.lang.SuppressWarnings("all")
2383  @lombok.Generated
2384  public Date getScheduledPublishTime() {
2385    return this.scheduledPublishTime;
2386  }
2387
2388  /**
2389   * UNIX timestamp of the scheduled publish time for the post.
2390   */
2391  @java.lang.SuppressWarnings("all")
2392  @lombok.Generated
2393  public void setScheduledPublishTime(final Date scheduledPublishTime) {
2394    this.scheduledPublishTime = scheduledPublishTime;
2395  }
2396
2397  /**
2398   * Number of times the post has been shared.
2399   *
2400   * @return Number of times the post has been shared
2401   */
2402  @java.lang.SuppressWarnings("all")
2403  @lombok.Generated
2404  public Shares getShares() {
2405    return this.shares;
2406  }
2407
2408  /**
2409   * Number of times the post has been shared.
2410   */
2411  @java.lang.SuppressWarnings("all")
2412  @lombok.Generated
2413  public void setShares(final Shares shares) {
2414    this.shares = shares;
2415  }
2416
2417  /**
2418   * ID of admin who created the post.
2419   *
2420   * Applies to pages only
2421   *
2422   * @return ID of admin who created the post.
2423   * @since 1.10.0
2424   */
2425  @java.lang.SuppressWarnings("all")
2426  @lombok.Generated
2427  public NamedFacebookType getAdminCreator() {
2428    return this.adminCreator;
2429  }
2430
2431  /**
2432   * ID of admin who created the post.
2433   *
2434   * Applies to pages only
2435   *
2436   * @since 1.10.0
2437   */
2438  @java.lang.SuppressWarnings("all")
2439  @lombok.Generated
2440  public void setAdminCreator(final NamedFacebookType adminCreator) {
2441    this.adminCreator = adminCreator;
2442  }
2443
2444  /**
2445   * Whether the post can be promoted on Instagram.
2446   * <p>
2447   * It returns the enum <code>eligible</code> if it can be promoted. Otherwise it returns an enum for why it cannot be
2448   * promoted
2449   * </p>
2450   *
2451   * @return Whether the post can be promoted on Instagram
2452   */
2453  @java.lang.SuppressWarnings("all")
2454  @lombok.Generated
2455  public String getInstagramEligibility() {
2456    return this.instagramEligibility;
2457  }
2458
2459  /**
2460   * Whether the post can be promoted on Instagram.
2461   * <p>
2462   * It returns the enum <code>eligible</code> if it can be promoted. Otherwise it returns an enum for why it cannot be
2463   * promoted
2464   * </p>
2465   */
2466  @java.lang.SuppressWarnings("all")
2467  @lombok.Generated
2468  public void setInstagramEligibility(final String instagramEligibility) {
2469    this.instagramEligibility = instagramEligibility;
2470  }
2471
2472  /**
2473   * Whether or not the post references an app.
2474   *
2475   * @return Whether or not the post references an app
2476   */
2477  @java.lang.SuppressWarnings("all")
2478  @lombok.Generated
2479  public Boolean getIsAppShare() {
2480    return this.isAppShare;
2481  }
2482
2483  /**
2484   * Whether or not the post references an app.
2485   */
2486  @java.lang.SuppressWarnings("all")
2487  @lombok.Generated
2488  public void setIsAppShare(final Boolean isAppShare) {
2489    this.isAppShare = isAppShare;
2490  }
2491
2492  @java.lang.SuppressWarnings("all")
2493  @lombok.Generated
2494  public Boolean getIsEligibleForPromotion() {
2495    return this.isEligibleForPromotion;
2496  }
2497
2498  @java.lang.SuppressWarnings("all")
2499  @lombok.Generated
2500  public void setIsEligibleForPromotion(final Boolean isEligibleForPromotion) {
2501    this.isEligibleForPromotion = isEligibleForPromotion;
2502  }
2503
2504  /**
2505   * Whether the post has expiration time that has passed
2506   *
2507   * @return Whether the post has expiration time that has passed
2508   */
2509  @java.lang.SuppressWarnings("all")
2510  @lombok.Generated
2511  public Boolean getIsExpired() {
2512    return this.isExpired;
2513  }
2514
2515  /**
2516   * Whether the post has expiration time that has passed
2517   */
2518  @java.lang.SuppressWarnings("all")
2519  @lombok.Generated
2520  public void setIsExpired(final Boolean isExpired) {
2521    this.isExpired = isExpired;
2522  }
2523
2524  @java.lang.SuppressWarnings("all")
2525  @lombok.Generated
2526  public Boolean getIsFbLiveVideos() {
2527    return this.isFbLiveVideos;
2528  }
2529
2530  @java.lang.SuppressWarnings("all")
2531  @lombok.Generated
2532  public void setIsFbLiveVideos(final Boolean isFbLiveVideos) {
2533    this.isFbLiveVideos = isFbLiveVideos;
2534  }
2535
2536  /**
2537   * If this post is marked as hidden (applies to Pages only).
2538   *
2539   * @since 1.10.0
2540   * @return if this post is marked as hidden
2541   */
2542  @java.lang.SuppressWarnings("all")
2543  @lombok.Generated
2544  public Boolean getIsHidden() {
2545    return this.isHidden;
2546  }
2547
2548  /**
2549   * If this post is marked as hidden (applies to Pages only).
2550   *
2551   * @since 1.10.0
2552   */
2553  @java.lang.SuppressWarnings("all")
2554  @lombok.Generated
2555  public void setIsHidden(final Boolean isHidden) {
2556    this.isHidden = isHidden;
2557  }
2558
2559  /**
2560   * Returns True if the post was created inline when creating ads.
2561   */
2562  @java.lang.SuppressWarnings("all")
2563  @lombok.Generated
2564  public Boolean getIsInlineCreated() {
2565    return this.isInlineCreated;
2566  }
2567
2568  /**
2569   * Returns True if the post was created inline when creating ads.
2570   */
2571  @java.lang.SuppressWarnings("all")
2572  @lombok.Generated
2573  public void setIsInlineCreated(final Boolean isInlineCreated) {
2574    this.isInlineCreated = isInlineCreated;
2575  }
2576
2577  /**
2578   * Whether this post can be promoted in Instagram.
2579   *
2580   * @return Whether this post can be promoted in Instagram
2581   */
2582  @java.lang.SuppressWarnings("all")
2583  @lombok.Generated
2584  public Boolean getIsInstagramEligible() {
2585    return this.isInstagramEligible;
2586  }
2587
2588  /**
2589   * Whether this post can be promoted in Instagram.
2590   */
2591  @java.lang.SuppressWarnings("all")
2592  @lombok.Generated
2593  public void setIsInstagramEligible(final Boolean isInstagramEligible) {
2594    this.isInstagramEligible = isInstagramEligible;
2595  }
2596
2597  /**
2598   * Whether the post is currently popular.
2599   *
2600   * Based on whether the total actions as a percentage of reach exceeds a certain threshold
2601   *
2602   * @return Whether the post is currently popular
2603   */
2604  @java.lang.SuppressWarnings("all")
2605  @lombok.Generated
2606  public Boolean getIsPopular() {
2607    return this.isPopular;
2608  }
2609
2610  /**
2611   * Whether the post is currently popular.
2612   *
2613   * Based on whether the total actions as a percentage of reach exceeds a certain threshold
2614   */
2615  @java.lang.SuppressWarnings("all")
2616  @lombok.Generated
2617  public void setIsPopular(final Boolean isPopular) {
2618    this.isPopular = isPopular;
2619  }
2620
2621  /**
2622   * Indicates whether a scheduled post was published. (applies to scheduled Page Post only, for users post and
2623   * instantly published posts this value is always <code>true</code>)
2624   *
2625   * @since 1.10.0
2626   * @return indicates whether a scheduled post was published
2627   */
2628  @java.lang.SuppressWarnings("all")
2629  @lombok.Generated
2630  public Boolean getIsPublished() {
2631    return this.isPublished;
2632  }
2633
2634  /**
2635   * Indicates whether a scheduled post was published. (applies to scheduled Page Post only, for users post and
2636   * instantly published posts this value is always <code>true</code>)
2637   *
2638   * @since 1.10.0
2639   */
2640  @java.lang.SuppressWarnings("all")
2641  @lombok.Generated
2642  public void setIsPublished(final Boolean isPublished) {
2643    this.isPublished = isPublished;
2644  }
2645
2646  /**
2647   * Whether the post is a spherical video post.
2648   *
2649   * @return Whether the post is a spherical video post
2650   */
2651  @java.lang.SuppressWarnings("all")
2652  @lombok.Generated
2653  public Boolean getIsSpherical() {
2654    return this.isSpherical;
2655  }
2656
2657  /**
2658   * Whether the post is a spherical video post.
2659   */
2660  @java.lang.SuppressWarnings("all")
2661  @lombok.Generated
2662  public void setIsSpherical(final Boolean isSpherical) {
2663    this.isSpherical = isSpherical;
2664  }
2665
2666  /**
2667   * Whether user is subscribed to the post.
2668   */
2669  @java.lang.SuppressWarnings("all")
2670  @lombok.Generated
2671  public Boolean getSubscribed() {
2672    return this.subscribed;
2673  }
2674
2675  /**
2676   * Whether user is subscribed to the post.
2677   */
2678  @java.lang.SuppressWarnings("all")
2679  @lombok.Generated
2680  public void setSubscribed(final Boolean subscribed) {
2681    this.subscribed = subscribed;
2682  }
2683
2684  /**
2685   * Whether display the end card for a multi-link share post
2686   */
2687  @java.lang.SuppressWarnings("all")
2688  @lombok.Generated
2689  public Boolean getMultiShareEndCard() {
2690    return this.multiShareEndCard;
2691  }
2692
2693  /**
2694   * Whether display the end card for a multi-link share post
2695   */
2696  @java.lang.SuppressWarnings("all")
2697  @lombok.Generated
2698  public void setMultiShareEndCard(final Boolean multiShareEndCard) {
2699    this.multiShareEndCard = multiShareEndCard;
2700  }
2701
2702  /**
2703   * Whether automatically select the order of the links in multi-link share post when used in an ad
2704   */
2705  @java.lang.SuppressWarnings("all")
2706  @lombok.Generated
2707  public Boolean getMultiShareOptimized() {
2708    return this.multiShareOptimized;
2709  }
2710
2711  /**
2712   * Whether automatically select the order of the links in multi-link share post when used in an ad
2713   */
2714  @java.lang.SuppressWarnings("all")
2715  @lombok.Generated
2716  public void setMultiShareOptimized(final Boolean multiShareOptimized) {
2717    this.multiShareOptimized = multiShareOptimized;
2718  }
2719
2720  /**
2721   * Attachments added to a post.
2722   *
2723   * To force Facebook to fill the <code>attachments</code> field you have to fetch the post with the
2724   * <code>fields=attachments</code> parameter, otherwise the attachments are <code>null</code>.
2725   *
2726   * @return Attachment on the post
2727   */
2728  @java.lang.SuppressWarnings("all")
2729  @lombok.Generated
2730  public Attachments getAttachments() {
2731    return this.attachments;
2732  }
2733
2734  /**
2735   * Attachments added to a post.
2736   *
2737   * To force Facebook to fill the <code>attachments</code> field you have to fetch the post with the
2738   * <code>fields=attachments</code> parameter, otherwise the attachments are <code>null</code>.
2739   */
2740  @java.lang.SuppressWarnings("all")
2741  @lombok.Generated
2742  public void setAttachments(final Attachments attachments) {
2743    this.attachments = attachments;
2744  }
2745
2746  /**
2747   * Full picture URL.
2748   *
2749   * you get the url to this posts full picture.
2750   *
2751   * To force Facebook to fill the <code>full_picture</code> field you have to fetch the post with the
2752   * <code>fields=full_picture</code> parameter, otherwise the full_picture is <code>null</code>.
2753   *
2754   * @return String representing the url to the post's full picture
2755   */
2756  @java.lang.SuppressWarnings("all")
2757  @lombok.Generated
2758  public String getFullPicture() {
2759    return this.fullPicture;
2760  }
2761
2762  /**
2763   * Full picture URL.
2764   *
2765   * you get the url to this posts full picture.
2766   *
2767   * To force Facebook to fill the <code>full_picture</code> field you have to fetch the post with the
2768   * <code>fields=full_picture</code> parameter, otherwise the full_picture is <code>null</code>.
2769   */
2770  @java.lang.SuppressWarnings("all")
2771  @lombok.Generated
2772  public void setFullPicture(final String fullPicture) {
2773    this.fullPicture = fullPicture;
2774  }
2775
2776  /**
2777   * ID of the user or Page the post was shared from
2778   */
2779  @java.lang.SuppressWarnings("all")
2780  @lombok.Generated
2781  public String getVia() {
2782    return this.via;
2783  }
2784
2785  /**
2786   * ID of the user or Page the post was shared from
2787   */
2788  @java.lang.SuppressWarnings("all")
2789  @lombok.Generated
2790  public void setVia(final String via) {
2791    this.via = via;
2792  }
2793}