001// Generated by delombok at Wed Jan 31 21:27:42 UTC 2024
002/*
003 * Copyright (c) 2010-2024 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.*;
027import com.restfb.Connection;
028import com.restfb.Facebook;
029import com.restfb.annotation.GraphAPI;
030import com.restfb.types.features.HasComments;
031import com.restfb.types.features.HasCreatedTime;
032import com.restfb.types.features.HasMessage;
033
034/**
035 * Represents the <a href="https://developers.facebook.com/docs/reference/api/video">Video Graph API type</a>.
036 * 
037 * @author <a href="http://restfb.com">Mark Allen</a>
038 * @since 1.5
039 */
040public class Video extends NamedFacebookType implements HasComments, HasCreatedTime, HasMessage {
041  /**
042   * An object containing the name and ID of the user who posted the video.
043   * 
044   */
045  @Facebook
046  private From from;
047  /**
048   * The video title / caption.
049   * 
050   * @deprecated FB seems to have removed this field.
051   */
052  @Facebook
053  @Deprecated
054  private String message;
055  /**
056   * The comments for this video.
057   */
058  @Facebook
059  private Comments comments;
060  /**
061   * The long-form HTML description of the video.
062   * 
063   */
064  @Facebook
065  private String description;
066  /**
067   * URL to the permalink page of the video
068   */
069  @Facebook("permalink_url")
070  private String permalinkUrl;
071  /**
072   * The video title or caption
073   */
074  @Facebook("title")
075  @GraphAPI(since = "2.5")
076  private String title;
077  @Facebook("is_crosspost_video")
078  private Boolean isCrosspostVideo;
079  /**
080   * Specifies if the video is eligible for crossposting.
081   */
082  @Facebook("is_crossposting_eligible")
083  @GraphAPI(since = "2.6")
084  private Boolean isCrosspostingEligible;
085  /**
086   * Whether this video is episode or not.
087   */
088  @Facebook("is_episode")
089  private Boolean isEpisode;
090  /**
091   * Whether the video is eligible to be promoted on Instagram
092   */
093  @Facebook("is_instagram_eligible")
094  private Boolean isInstagramEligible;
095  /**
096   * Whether the video is exclusively used for copyright monitoring.
097   */
098  @Facebook("is_reference_only")
099  private Boolean isReferenceOnly;
100  /**
101   * The music video copyright of this video
102   *
103   * because of a missing object description in the graph reference, we use a Map here
104   */
105  @Facebook("music_video_copyright")
106  private MusicVideoCopyright musicVideoCopyright;
107  /**
108   * The public view count of the video post, not aggregated with any other crossposts of the video.
109   */
110  @Facebook("post_views")
111  private Integer postViews;
112  /**
113   * The reactions for this video.
114   */
115  @Facebook
116  private Reactions reactions;
117  /**
118   * Whether the video is embeddable.
119   */
120  @Facebook
121  @GraphAPI(since = "2.4")
122  private Boolean embeddable;
123  @Facebook("content_tags")
124  private List<String> contentTags = new ArrayList<>();
125  /**
126   * If this object has a place, the event associated with the place.
127   * 
128   */
129  @Facebook
130  @GraphAPI(since = "2.3")
131  private Event event;
132  /**
133   * Whether or not the video is highlighted in Video Channel.
134   */
135  @Facebook("feed_type")
136  @GraphAPI(since = "2.7")
137  private String feedType;
138  /**
139   * The publishers asset management code for this video.
140   */
141  @Facebook("universal_video_id")
142  private String universalVideoId;
143  /**
144   * The public view count of the video.
145   */
146  @Facebook
147  private Integer views;
148  @Facebook
149  private List<VideoFormat> format = new ArrayList<>();
150  /**
151   * People who like this.
152   * 
153   * you need to add the field to the fields query parameter to get the likes list otherwise null is returned
154   * 
155   */
156  @Facebook
157  private Likes likes;
158  /**
159   * Location associated with the video, if any.
160   * 
161   */
162  @Facebook
163  private Place place;
164  /**
165   * The content category of this video.
166   * 
167   */
168  @Facebook("content_category")
169  @GraphAPI(since = "2.4")
170  private String contentCategory;
171  /**
172   * A URL for the thumbnail picture of the video.
173   * 
174   */
175  @Facebook
176  private String picture;
177  /**
178   * An icon URL which represents the video.
179   * 
180   */
181  @Facebook
182  private String icon;
183  /**
184   * A URL to the raw, playable video file.
185   * 
186   * @since 1.6.5
187   */
188  @Facebook
189  private String source;
190  /**
191   * HTML that may be used to embed the video on another website.
192   * 
193   */
194  @Facebook("embed_html")
195  private String embedHtml;
196  /**
197   * The length of the video, in seconds.
198   * 
199   */
200  @Facebook
201  private Double length;
202  /**
203   * Number of unique people who watched the video broadcast when it was live.
204   */
205  @Facebook("live_audience_count")
206  @GraphAPI(since = "2.6")
207  private Integer liveAudienceCount;
208  /**
209   * The live status of the video.
210   *
211   * Possible values contain LIVE, LIVE_STOPPED, VOD
212   */
213  @Facebook("live_status")
214  @GraphAPI(since = "2.6")
215  private String liveStatus;
216  /**
217   * Privacy setting for the video.
218   * 
219   */
220  @Facebook
221  private Privacy privacy;
222  /**
223   * The status of the Premiere Watch Party, if any
224   */
225  @Facebook("premiere_living_room_status")
226  private String premiereLivingRoomStatus;
227  /**
228   * Object describing the status attributes of a video.
229   * 
230   */
231  @Facebook
232  private VideoStatus status;
233  /**
234   * Whether a post about this video is published.
235   * 
236   * This field is only accessible in Graph API 2.3 or later.
237   *
238   * @since 1.10.0
239   */
240  @Facebook
241  @GraphAPI(since = "2.3")
242  private Boolean published;
243  /**
244   * Back dated time
245   *
246   * @since 1.10.0
247   */
248  @Facebook("backdated_time")
249  private Date backdatedTime;
250  /**
251   * String that represents the back dated time granularity
252   *
253   * @since 1.10.0
254   */
255  @Facebook("backdated_time_granularity")
256  private String backdatedTimeGranularity;
257  /**
258   * The time the video was initially published.
259   * 
260   */
261  @Facebook("created_time")
262  private Date createdTime;
263  /**
264   * The last time the video or its caption were updated.
265   * 
266   */
267  @Facebook("updated_time")
268  private Date updatedTime;
269  /**
270   * The time that the video is scheduled to be published.
271   * 
272   * This field is only accessible in Graph API 2.3 or later.
273   * 
274   * @since 1.10.0
275   */
276  @Facebook("scheduled_publish_time")
277  @GraphAPI(since = "2.3")
278  private Date scheduledPublishTime;
279  @Facebook
280  private List<VideoCaption> captions = new ArrayList<>();
281  @Facebook
282  private List<NamedFacebookType> tags = new ArrayList<>();
283  @Facebook("ad_breaks")
284  private List<Integer> adBreaks = new ArrayList<>();
285  @Facebook("custom_labels")
286  private List<String> customLabels = new ArrayList<>();
287  @Facebook("video_insights")
288  private Connection<Insight> videoInsights;
289  @Facebook
290  private Connection<Thumbnail> thumbnails;
291  private static final long serialVersionUID = 1L;
292
293  public List<VideoCaption> getCaptions() {
294    return unmodifiableList(captions);
295  }
296
297  public boolean addCaption(VideoCaption caption) {
298    return captions.add(caption);
299  }
300
301  public boolean removeCaption(VideoCaption caption) {
302    return captions.remove(caption);
303  }
304
305  /**
306   * The different formats of the video.
307   * 
308   * @return The different formats of the video.
309   */
310  public List<VideoFormat> getFormat() {
311    return unmodifiableList(format);
312  }
313
314  public boolean addFormat(VideoFormat videoFormat) {
315    return format.add(videoFormat);
316  }
317
318  public boolean removeFormat(VideoFormat videoFormat) {
319    return format.remove(videoFormat);
320  }
321
322  /**
323   * Tags for the video.
324   * 
325   * @return Tags for the video.
326   * @since 1.6.5
327   */
328  public List<NamedFacebookType> getTags() {
329    return unmodifiableList(tags);
330  }
331
332  public boolean addTag(NamedFacebookType tag) {
333    return tags.add(tag);
334  }
335
336  public boolean removeTag(NamedFacebookType tag) {
337    return tags.remove(tag);
338  }
339
340  /**
341   * Tags that describe the contents of the video.
342   *
343   * @return Tags that describe the contents of the video.
344   */
345  public List<String> getContentTags() {
346    return unmodifiableList(contentTags);
347  }
348
349  public boolean addContentTag(String contentTag) {
350    return contentTags.add(contentTag);
351  }
352
353  public boolean removeContentTag(String contentTag) {
354    return contentTags.remove(contentTag);
355  }
356
357  /**
358   * Time offsets of ad breaks in milliseconds. Ad breaks are short ads that play within a video.
359   *
360   * @return Time offsets of ad breaks in milliseconds. Ad breaks are short ads that play within a video.
361   */
362  public List<Integer> getAdBreaks() {
363    return unmodifiableList(adBreaks);
364  }
365
366  public boolean addAdBreak(Integer adBreak) {
367    return adBreaks.add(adBreak);
368  }
369
370  public boolean removeAdBreak(Integer adBreak) {
371    return adBreaks.remove(adBreak);
372  }
373
374  /**
375   * Labels used to describe the video.
376   *
377   * Unlike content tags, custom labels are not published and only appear in insights data.
378   *
379   * @return Labels used to describe the video.
380   */
381  public List<String> getCustomLabels() {
382    return unmodifiableList(customLabels);
383  }
384
385  public boolean addCustomLabel(String customLabel) {
386    return customLabels.add(customLabel);
387  }
388
389  public boolean removeCustomLabel(String customLabel) {
390    return customLabels.remove(customLabel);
391  }
392
393  /**
394   * The number of likes on this video.
395   * 
396   * you have to fetch the video id with <code>?fields=likes.summary(true)</code> in order to speed up the likes count
397   * generation, you may use <code>?fields=likes.limit(1).summary(true)</code>, so only 1 like is fetched, but the
398   * complete summary
399   *
400   * @return The number of likes on this video.
401   */
402  public Long getLikesCount() {
403    if (getLikes() != null) {
404      return getLikes().getTotalCount();
405    }
406    return 0L;
407  }
408
409  /**
410   * The number of comments of this video.
411   * 
412   * you have to fetch the video id with <code>?fields=comments.summary(true)</code> in order to speed up the comments
413   * count generation, you may use <code>?fields=comments.limit(1).summary(true)</code>, so only 1 comment is fetched,
414   * but the complete summary
415   *
416   * @return The number of comments of this video.
417   */
418  public Long getCommentsCount() {
419    if (getComments() != null) {
420      return getComments().getTotalCount();
421    }
422    return 0L;
423  }
424
425
426  /**
427   * Represents the <a href="https://developers.facebook.com/docs/graph-api/reference/video-thumbnail/">Video Thumbnail
428   * Graph API type</a>.
429   * 
430   * @since 1.10.0
431   */
432  public static class Thumbnail extends NamedFacebookType {
433    private static final long serialVersionUID = 1L;
434    /**
435     * The height of the thumbnail
436     */
437    @Facebook
438    private Integer height;
439    /**
440     * The width of the thumbnail
441     */
442    @Facebook
443    private Integer width;
444    /**
445     * The scale of the thumbnail
446     */
447    @Facebook
448    private Float scale;
449    /**
450     * The uri of the thumbnail
451     */
452    @Facebook
453    private String uri;
454    /**
455     * Whether this is the preferred thumbnail for the video
456     */
457    @Facebook("is_preferred")
458    private Boolean isPreferred;
459
460    /**
461     * The height of the thumbnail
462     */
463    @java.lang.SuppressWarnings("all")
464    public Integer getHeight() {
465      return this.height;
466    }
467
468    /**
469     * The height of the thumbnail
470     */
471    @java.lang.SuppressWarnings("all")
472    public void setHeight(final Integer height) {
473      this.height = height;
474    }
475
476    /**
477     * The width of the thumbnail
478     */
479    @java.lang.SuppressWarnings("all")
480    public Integer getWidth() {
481      return this.width;
482    }
483
484    /**
485     * The width of the thumbnail
486     */
487    @java.lang.SuppressWarnings("all")
488    public void setWidth(final Integer width) {
489      this.width = width;
490    }
491
492    /**
493     * The scale of the thumbnail
494     */
495    @java.lang.SuppressWarnings("all")
496    public Float getScale() {
497      return this.scale;
498    }
499
500    /**
501     * The scale of the thumbnail
502     */
503    @java.lang.SuppressWarnings("all")
504    public void setScale(final Float scale) {
505      this.scale = scale;
506    }
507
508    /**
509     * The uri of the thumbnail
510     */
511    @java.lang.SuppressWarnings("all")
512    public String getUri() {
513      return this.uri;
514    }
515
516    /**
517     * The uri of the thumbnail
518     */
519    @java.lang.SuppressWarnings("all")
520    public void setUri(final String uri) {
521      this.uri = uri;
522    }
523
524    /**
525     * Whether this is the preferred thumbnail for the video
526     */
527    @java.lang.SuppressWarnings("all")
528    public Boolean getIsPreferred() {
529      return this.isPreferred;
530    }
531
532    /**
533     * Whether this is the preferred thumbnail for the video
534     */
535    @java.lang.SuppressWarnings("all")
536    public void setIsPreferred(final Boolean isPreferred) {
537      this.isPreferred = isPreferred;
538    }
539  }
540
541
542  /**
543   * Represents the <a href="https://developers.facebook.com/docs/graph-api/reference/video-format/">Video Format Graph
544   * API type</a>.
545   */
546  public static class VideoFormat extends AbstractFacebookType {
547    private static final long serialVersionUID = 1L;
548    /**
549     * HTML to embed the video in this format.
550     * 
551     */
552    @Facebook("embed_html")
553    private String embedHtml;
554    /**
555     * The filter applied to this video format.
556     * 
557     */
558    @Facebook
559    private String filter;
560    /**
561     * The thumbnail for the video in this format.
562     * 
563     */
564    @Facebook
565    private String picture;
566    /**
567     * The width of the video in this format.
568     * 
569     */
570    @Facebook
571    private Integer width;
572    /**
573     * The height of the video in this format.
574     * 
575     */
576    @Facebook
577    private Integer height;
578
579    /**
580     * HTML to embed the video in this format.
581     * 
582     * @return HTML to embed the video in this format.
583     */
584    @java.lang.SuppressWarnings("all")
585    public String getEmbedHtml() {
586      return this.embedHtml;
587    }
588
589    /**
590     * HTML to embed the video in this format.
591     * 
592     */
593    @java.lang.SuppressWarnings("all")
594    public void setEmbedHtml(final String embedHtml) {
595      this.embedHtml = embedHtml;
596    }
597
598    /**
599     * The filter applied to this video format.
600     * 
601     * @return The filter applied to this video format.
602     */
603    @java.lang.SuppressWarnings("all")
604    public String getFilter() {
605      return this.filter;
606    }
607
608    /**
609     * The filter applied to this video format.
610     * 
611     */
612    @java.lang.SuppressWarnings("all")
613    public void setFilter(final String filter) {
614      this.filter = filter;
615    }
616
617    /**
618     * The thumbnail for the video in this format.
619     * 
620     * @return The thumbnail for the video in this format.
621     */
622    @java.lang.SuppressWarnings("all")
623    public String getPicture() {
624      return this.picture;
625    }
626
627    /**
628     * The thumbnail for the video in this format.
629     * 
630     */
631    @java.lang.SuppressWarnings("all")
632    public void setPicture(final String picture) {
633      this.picture = picture;
634    }
635
636    /**
637     * The width of the video in this format.
638     * 
639     * @return The width of the video in this format.
640     */
641    @java.lang.SuppressWarnings("all")
642    public Integer getWidth() {
643      return this.width;
644    }
645
646    /**
647     * The width of the video in this format.
648     * 
649     */
650    @java.lang.SuppressWarnings("all")
651    public void setWidth(final Integer width) {
652      this.width = width;
653    }
654
655    /**
656     * The height of the video in this format.
657     * 
658     * @return The height of the video in this format.
659     */
660    @java.lang.SuppressWarnings("all")
661    public Integer getHeight() {
662      return this.height;
663    }
664
665    /**
666     * The height of the video in this format.
667     * 
668     */
669    @java.lang.SuppressWarnings("all")
670    public void setHeight(final Integer height) {
671      this.height = height;
672    }
673  }
674
675
676  /**
677   * Represents the <a href="https://developers.facebook.com/docs/graph-api/reference/video-status/">Video Status Graph
678   * API type</a>.
679   */
680  public static class VideoStatus extends AbstractFacebookType {
681    private static final long serialVersionUID = 1L;
682    /**
683     * Status of a video.
684     * 
685     * Either "ready" (uploaded, encoded, thumbnails extracted), "processing" (not ready yet) or "error" (processing
686     * failed).
687     * 
688     */
689    @Facebook("video_status")
690    private String videoStatus;
691    /**
692     * Video processing progress in percent [int 0 to 100].
693     * 
694     */
695    @Facebook("processing_progress")
696    private Integer processingProgress;
697    /**
698     * This structure contains information about progress through the uploading phase.
699     * The bytes_transferred field can be used in conjunction with the upload endpoint
700     * to resume an interrupted upload.
701     */
702    @Facebook("uploading_phase")
703    private VideoPhase uploadingVideoPhase;
704    /**
705     * This structure contains information about progress through the processing phase.
706     * This phase encompasses generating alternate media encodings, thumbnails, and other
707     * assets necessary for publishing.
708     */
709    @Facebook("processing_phase")
710    private VideoPhase processingVideoPhase;
711    /**
712     * This structure contains information about progress through the publishing phase.
713     * This phase encompasses adding the video to the page, and if scheduled, will describe
714     * when the video is intended to be published.
715     */
716    @Facebook("publishing_phase")
717    private VideoPhase publishingVideoPhase;
718
719    /**
720     * Status of a video.
721     * 
722     * Either "ready" (uploaded, encoded, thumbnails extracted), "processing" (not ready yet) or "error" (processing
723     * failed).
724     * 
725     * @return Status of a video
726     */
727    @java.lang.SuppressWarnings("all")
728    public String getVideoStatus() {
729      return this.videoStatus;
730    }
731
732    /**
733     * Status of a video.
734     * 
735     * Either "ready" (uploaded, encoded, thumbnails extracted), "processing" (not ready yet) or "error" (processing
736     * failed).
737     * 
738     */
739    @java.lang.SuppressWarnings("all")
740    public void setVideoStatus(final String videoStatus) {
741      this.videoStatus = videoStatus;
742    }
743
744    /**
745     * Video processing progress in percent [int 0 to 100].
746     * 
747     * @return Video processing progress in percent [int 0 to 100].
748     */
749    @java.lang.SuppressWarnings("all")
750    public Integer getProcessingProgress() {
751      return this.processingProgress;
752    }
753
754    /**
755     * Video processing progress in percent [int 0 to 100].
756     * 
757     */
758    @java.lang.SuppressWarnings("all")
759    public void setProcessingProgress(final Integer processingProgress) {
760      this.processingProgress = processingProgress;
761    }
762
763    /**
764     * This structure contains information about progress through the uploading phase.
765     * The bytes_transferred field can be used in conjunction with the upload endpoint
766     * to resume an interrupted upload.
767     */
768    @java.lang.SuppressWarnings("all")
769    public VideoPhase getUploadingVideoPhase() {
770      return this.uploadingVideoPhase;
771    }
772
773    /**
774     * This structure contains information about progress through the uploading phase.
775     * The bytes_transferred field can be used in conjunction with the upload endpoint
776     * to resume an interrupted upload.
777     */
778    @java.lang.SuppressWarnings("all")
779    public void setUploadingVideoPhase(final VideoPhase uploadingVideoPhase) {
780      this.uploadingVideoPhase = uploadingVideoPhase;
781    }
782
783    /**
784     * This structure contains information about progress through the processing phase.
785     * This phase encompasses generating alternate media encodings, thumbnails, and other
786     * assets necessary for publishing.
787     */
788    @java.lang.SuppressWarnings("all")
789    public VideoPhase getProcessingVideoPhase() {
790      return this.processingVideoPhase;
791    }
792
793    /**
794     * This structure contains information about progress through the processing phase.
795     * This phase encompasses generating alternate media encodings, thumbnails, and other
796     * assets necessary for publishing.
797     */
798    @java.lang.SuppressWarnings("all")
799    public void setProcessingVideoPhase(final VideoPhase processingVideoPhase) {
800      this.processingVideoPhase = processingVideoPhase;
801    }
802
803    /**
804     * This structure contains information about progress through the publishing phase.
805     * This phase encompasses adding the video to the page, and if scheduled, will describe
806     * when the video is intended to be published.
807     */
808    @java.lang.SuppressWarnings("all")
809    public VideoPhase getPublishingVideoPhase() {
810      return this.publishingVideoPhase;
811    }
812
813    /**
814     * This structure contains information about progress through the publishing phase.
815     * This phase encompasses adding the video to the page, and if scheduled, will describe
816     * when the video is intended to be published.
817     */
818    @java.lang.SuppressWarnings("all")
819    public void setPublishingVideoPhase(final VideoPhase publishingVideoPhase) {
820      this.publishingVideoPhase = publishingVideoPhase;
821    }
822  }
823
824
825  public static class VideoPhase extends AbstractFacebookType {
826    private static final long serialVersionUID = 1L;
827    /**
828     * Status of a videoPahse.
829     *
830     * not_started, in_progress, complete, error
831     */
832    @Facebook("status")
833    private String status;
834    @Facebook("bytes_transfered")
835    private Long bytesTransfered;
836    @Facebook("publish_status")
837    private String publishStatus;
838    @Facebook("publish_time")
839    private Date publishTime;
840    @Facebook("errors")
841    private List<VideoPhaseError> errors;
842
843    /**
844     * Status of a videoPahse.
845     *
846     * not_started, in_progress, complete, error
847     *
848     * @return Status of a videoPhase
849     */
850    @java.lang.SuppressWarnings("all")
851    public String getStatus() {
852      return this.status;
853    }
854
855    /**
856     * Status of a videoPahse.
857     *
858     * not_started, in_progress, complete, error
859     */
860    @java.lang.SuppressWarnings("all")
861    public void setStatus(final String status) {
862      this.status = status;
863    }
864
865    @java.lang.SuppressWarnings("all")
866    public Long getBytesTransfered() {
867      return this.bytesTransfered;
868    }
869
870    @java.lang.SuppressWarnings("all")
871    public void setBytesTransfered(final Long bytesTransfered) {
872      this.bytesTransfered = bytesTransfered;
873    }
874
875    @java.lang.SuppressWarnings("all")
876    public String getPublishStatus() {
877      return this.publishStatus;
878    }
879
880    @java.lang.SuppressWarnings("all")
881    public void setPublishStatus(final String publishStatus) {
882      this.publishStatus = publishStatus;
883    }
884
885    @java.lang.SuppressWarnings("all")
886    public Date getPublishTime() {
887      return this.publishTime;
888    }
889
890    @java.lang.SuppressWarnings("all")
891    public void setPublishTime(final Date publishTime) {
892      this.publishTime = publishTime;
893    }
894
895    @java.lang.SuppressWarnings("all")
896    public List<VideoPhaseError> getErrors() {
897      return this.errors;
898    }
899
900    @java.lang.SuppressWarnings("all")
901    public void setErrors(final List<VideoPhaseError> errors) {
902      this.errors = errors;
903    }
904  }
905
906
907  public static class VideoPhaseError extends AbstractFacebookType {
908    private static final long serialVersionUID = 1L;
909    @Facebook("code")
910    private Long code; // error code
911    @Facebook("message")
912    private String message; // error message
913
914    @java.lang.SuppressWarnings("all")
915    public Long getCode() {
916      return this.code;
917    }
918
919    @java.lang.SuppressWarnings("all")
920    public void setCode(final Long code) {
921      this.code = code;
922    }
923
924    @java.lang.SuppressWarnings("all")
925    public String getMessage() {
926      return this.message;
927    }
928
929    @java.lang.SuppressWarnings("all")
930    public void setMessage(final String message) {
931      this.message = message;
932    }
933  }
934
935  /**
936   * An object containing the name and ID of the user who posted the video.
937   * 
938   * @return An object containing the name and ID of the user who posted the video.
939   */
940  @java.lang.SuppressWarnings("all")
941  public From getFrom() {
942    return this.from;
943  }
944
945  /**
946   * An object containing the name and ID of the user who posted the video.
947   * 
948   */
949  @java.lang.SuppressWarnings("all")
950  public void setFrom(final From from) {
951    this.from = from;
952  }
953
954  /**
955   * The video title / caption.
956   * 
957   * @return The video title / caption.
958   * @deprecated FB seems to have removed this field.
959   */
960  @java.lang.Deprecated
961  @Override
962  @java.lang.SuppressWarnings("all")
963  public String getMessage() {
964    return this.message;
965  }
966
967  /**
968   * The video title / caption.
969   * 
970   * @deprecated FB seems to have removed this field.
971   */
972  @java.lang.Deprecated
973  @java.lang.SuppressWarnings("all")
974  public void setMessage(final String message) {
975    this.message = message;
976  }
977
978  /**
979   * The comments for this video.
980   *
981   * @return The comments for this video.
982   */
983  @Override
984  @java.lang.SuppressWarnings("all")
985  public Comments getComments() {
986    return this.comments;
987  }
988
989  /**
990   * The comments for this video.
991   */
992  @java.lang.SuppressWarnings("all")
993  public void setComments(final Comments comments) {
994    this.comments = comments;
995  }
996
997  /**
998   * The long-form HTML description of the video.
999   * 
1000   * @return The long-form HTML description of the video.
1001   */
1002  @java.lang.SuppressWarnings("all")
1003  public String getDescription() {
1004    return this.description;
1005  }
1006
1007  /**
1008   * The long-form HTML description of the video.
1009   * 
1010   */
1011  @java.lang.SuppressWarnings("all")
1012  public void setDescription(final String description) {
1013    this.description = description;
1014  }
1015
1016  /**
1017   * URL to the permalink page of the video
1018   *
1019   * @return URL to the permalink page of the video
1020   */
1021  @java.lang.SuppressWarnings("all")
1022  public String getPermalinkUrl() {
1023    return this.permalinkUrl;
1024  }
1025
1026  /**
1027   * URL to the permalink page of the video
1028   */
1029  @java.lang.SuppressWarnings("all")
1030  public void setPermalinkUrl(final String permalinkUrl) {
1031    this.permalinkUrl = permalinkUrl;
1032  }
1033
1034  /**
1035   * The video title or caption
1036   *
1037   * @return the video title or caption
1038   */
1039  @GraphAPI(since = "2.5")
1040  @java.lang.SuppressWarnings("all")
1041  public String getTitle() {
1042    return this.title;
1043  }
1044
1045  /**
1046   * The video title or caption
1047   */
1048  @java.lang.SuppressWarnings("all")
1049  public void setTitle(final String title) {
1050    this.title = title;
1051  }
1052
1053  @java.lang.SuppressWarnings("all")
1054  public Boolean getIsCrosspostVideo() {
1055    return this.isCrosspostVideo;
1056  }
1057
1058  @java.lang.SuppressWarnings("all")
1059  public void setIsCrosspostVideo(final Boolean isCrosspostVideo) {
1060    this.isCrosspostVideo = isCrosspostVideo;
1061  }
1062
1063  /**
1064   * Specifies if the video is eligible for crossposting.
1065   *
1066   * @return Specifies if the video is eligible for crossposting
1067   */
1068  @GraphAPI(since = "2.6")
1069  @java.lang.SuppressWarnings("all")
1070  public Boolean getIsCrosspostingEligible() {
1071    return this.isCrosspostingEligible;
1072  }
1073
1074  /**
1075   * Specifies if the video is eligible for crossposting.
1076   */
1077  @java.lang.SuppressWarnings("all")
1078  public void setIsCrosspostingEligible(final Boolean isCrosspostingEligible) {
1079    this.isCrosspostingEligible = isCrosspostingEligible;
1080  }
1081
1082  /**
1083   * Whether this video is episode or not.
1084   *
1085   * @return Whether this video is episode or not.
1086   */
1087  @java.lang.SuppressWarnings("all")
1088  public Boolean getIsEpisode() {
1089    return this.isEpisode;
1090  }
1091
1092  /**
1093   * Whether this video is episode or not.
1094   */
1095  @java.lang.SuppressWarnings("all")
1096  public void setIsEpisode(final Boolean isEpisode) {
1097    this.isEpisode = isEpisode;
1098  }
1099
1100  /**
1101   * Whether the video is eligible to be promoted on Instagram
1102   *
1103   * @return Whether the video is eligible to be promoted on Instagram
1104   */
1105  @java.lang.SuppressWarnings("all")
1106  public Boolean getIsInstagramEligible() {
1107    return this.isInstagramEligible;
1108  }
1109
1110  /**
1111   * Whether the video is eligible to be promoted on Instagram
1112   */
1113  @java.lang.SuppressWarnings("all")
1114  public void setIsInstagramEligible(final Boolean isInstagramEligible) {
1115    this.isInstagramEligible = isInstagramEligible;
1116  }
1117
1118  /**
1119   * Whether the video is exclusively used for copyright monitoring.
1120   *
1121   * @return Whether the video is exclusively used for copyright monitoring
1122   */
1123  @java.lang.SuppressWarnings("all")
1124  public Boolean getIsReferenceOnly() {
1125    return this.isReferenceOnly;
1126  }
1127
1128  /**
1129   * Whether the video is exclusively used for copyright monitoring.
1130   */
1131  @java.lang.SuppressWarnings("all")
1132  public void setIsReferenceOnly(final Boolean isReferenceOnly) {
1133    this.isReferenceOnly = isReferenceOnly;
1134  }
1135
1136  /**
1137   * The music video copyright of this video
1138   *
1139   * because of a missing object description in the graph reference, we use a Map here
1140   */
1141  @java.lang.SuppressWarnings("all")
1142  public MusicVideoCopyright getMusicVideoCopyright() {
1143    return this.musicVideoCopyright;
1144  }
1145
1146  /**
1147   * The music video copyright of this video
1148   *
1149   * because of a missing object description in the graph reference, we use a Map here
1150   */
1151  @java.lang.SuppressWarnings("all")
1152  public void setMusicVideoCopyright(final MusicVideoCopyright musicVideoCopyright) {
1153    this.musicVideoCopyright = musicVideoCopyright;
1154  }
1155
1156  /**
1157   * The public view count of the video post, not aggregated with any other crossposts of the video.
1158   */
1159  @java.lang.SuppressWarnings("all")
1160  public Integer getPostViews() {
1161    return this.postViews;
1162  }
1163
1164  /**
1165   * The public view count of the video post, not aggregated with any other crossposts of the video.
1166   */
1167  @java.lang.SuppressWarnings("all")
1168  public void setPostViews(final Integer postViews) {
1169    this.postViews = postViews;
1170  }
1171
1172  /**
1173   * The reactions for this video.
1174   *
1175   * @return The reactions for this video.
1176   */
1177  @java.lang.SuppressWarnings("all")
1178  public Reactions getReactions() {
1179    return this.reactions;
1180  }
1181
1182  /**
1183   * The reactions for this video.
1184   */
1185  @java.lang.SuppressWarnings("all")
1186  public void setReactions(final Reactions reactions) {
1187    this.reactions = reactions;
1188  }
1189
1190  /**
1191   * Whether the video is embeddable.
1192   *
1193   * @return Whether the video is embeddable.
1194   */
1195  @GraphAPI(since = "2.4")
1196  @java.lang.SuppressWarnings("all")
1197  public Boolean getEmbeddable() {
1198    return this.embeddable;
1199  }
1200
1201  /**
1202   * Whether the video is embeddable.
1203   */
1204  @java.lang.SuppressWarnings("all")
1205  public void setEmbeddable(final Boolean embeddable) {
1206    this.embeddable = embeddable;
1207  }
1208
1209  /**
1210   * If this object has a place, the event associated with the place.
1211   * 
1212   * @return the event associated with the place
1213   */
1214  @GraphAPI(since = "2.3")
1215  @java.lang.SuppressWarnings("all")
1216  public Event getEvent() {
1217    return this.event;
1218  }
1219
1220  /**
1221   * If this object has a place, the event associated with the place.
1222   * 
1223   */
1224  @java.lang.SuppressWarnings("all")
1225  public void setEvent(final Event event) {
1226    this.event = event;
1227  }
1228
1229  /**
1230   * Whether or not the video is highlighted in Video Channel.
1231   *
1232   * @return Whether or not the video is highlighted in Video Channel.
1233   */
1234  @GraphAPI(since = "2.7")
1235  @java.lang.SuppressWarnings("all")
1236  public String getFeedType() {
1237    return this.feedType;
1238  }
1239
1240  /**
1241   * Whether or not the video is highlighted in Video Channel.
1242   */
1243  @java.lang.SuppressWarnings("all")
1244  public void setFeedType(final String feedType) {
1245    this.feedType = feedType;
1246  }
1247
1248  /**
1249   * The publishers asset management code for this video.
1250   */
1251  @java.lang.SuppressWarnings("all")
1252  public String getUniversalVideoId() {
1253    return this.universalVideoId;
1254  }
1255
1256  /**
1257   * The publishers asset management code for this video.
1258   */
1259  @java.lang.SuppressWarnings("all")
1260  public void setUniversalVideoId(final String universalVideoId) {
1261    this.universalVideoId = universalVideoId;
1262  }
1263
1264  /**
1265   * The public view count of the video.
1266   */
1267  @java.lang.SuppressWarnings("all")
1268  public Integer getViews() {
1269    return this.views;
1270  }
1271
1272  /**
1273   * The public view count of the video.
1274   */
1275  @java.lang.SuppressWarnings("all")
1276  public void setViews(final Integer views) {
1277    this.views = views;
1278  }
1279
1280  /**
1281   * People who like this.
1282   * 
1283   * you need to add the field to the fields query parameter to get the likes list otherwise null is returned
1284   * 
1285   * @return People who like this
1286   */
1287  @java.lang.SuppressWarnings("all")
1288  public Likes getLikes() {
1289    return this.likes;
1290  }
1291
1292  /**
1293   * People who like this.
1294   * 
1295   * you need to add the field to the fields query parameter to get the likes list otherwise null is returned
1296   * 
1297   */
1298  @java.lang.SuppressWarnings("all")
1299  public void setLikes(final Likes likes) {
1300    this.likes = likes;
1301  }
1302
1303  /**
1304   * Location associated with the video, if any.
1305   * 
1306   * @return Location associated with the video, if any.
1307   */
1308  @java.lang.SuppressWarnings("all")
1309  public Place getPlace() {
1310    return this.place;
1311  }
1312
1313  /**
1314   * Location associated with the video, if any.
1315   * 
1316   */
1317  @java.lang.SuppressWarnings("all")
1318  public void setPlace(final Place place) {
1319    this.place = place;
1320  }
1321
1322  /**
1323   * The content category of this video.
1324   * 
1325   * @return The content category of this video.
1326   */
1327  @GraphAPI(since = "2.4")
1328  @java.lang.SuppressWarnings("all")
1329  public String getContentCategory() {
1330    return this.contentCategory;
1331  }
1332
1333  /**
1334   * The content category of this video.
1335   * 
1336   */
1337  @java.lang.SuppressWarnings("all")
1338  public void setContentCategory(final String contentCategory) {
1339    this.contentCategory = contentCategory;
1340  }
1341
1342  /**
1343   * A URL for the thumbnail picture of the video.
1344   * 
1345   * @return A URL for the thumbnail picture of the video.
1346   */
1347  @java.lang.SuppressWarnings("all")
1348  public String getPicture() {
1349    return this.picture;
1350  }
1351
1352  /**
1353   * A URL for the thumbnail picture of the video.
1354   * 
1355   */
1356  @java.lang.SuppressWarnings("all")
1357  public void setPicture(final String picture) {
1358    this.picture = picture;
1359  }
1360
1361  /**
1362   * An icon URL which represents the video.
1363   * 
1364   * @return An icon URL which represents the video.
1365   */
1366  @java.lang.SuppressWarnings("all")
1367  public String getIcon() {
1368    return this.icon;
1369  }
1370
1371  /**
1372   * An icon URL which represents the video.
1373   * 
1374   */
1375  @java.lang.SuppressWarnings("all")
1376  public void setIcon(final String icon) {
1377    this.icon = icon;
1378  }
1379
1380  /**
1381   * A URL to the raw, playable video file.
1382   * 
1383   * @return A URL to the raw, playable video file.
1384   * @since 1.6.5
1385   */
1386  @java.lang.SuppressWarnings("all")
1387  public String getSource() {
1388    return this.source;
1389  }
1390
1391  /**
1392   * A URL to the raw, playable video file.
1393   * 
1394   * @since 1.6.5
1395   */
1396  @java.lang.SuppressWarnings("all")
1397  public void setSource(final String source) {
1398    this.source = source;
1399  }
1400
1401  /**
1402   * HTML that may be used to embed the video on another website.
1403   * 
1404   * @return HTML that may be used to embed the video on another website.
1405   */
1406  @java.lang.SuppressWarnings("all")
1407  public String getEmbedHtml() {
1408    return this.embedHtml;
1409  }
1410
1411  /**
1412   * HTML that may be used to embed the video on another website.
1413   * 
1414   */
1415  @java.lang.SuppressWarnings("all")
1416  public void setEmbedHtml(final String embedHtml) {
1417    this.embedHtml = embedHtml;
1418  }
1419
1420  /**
1421   * The length of the video, in seconds.
1422   * 
1423   * @return The length of the video, in seconds.
1424   */
1425  @java.lang.SuppressWarnings("all")
1426  public Double getLength() {
1427    return this.length;
1428  }
1429
1430  /**
1431   * The length of the video, in seconds.
1432   * 
1433   */
1434  @java.lang.SuppressWarnings("all")
1435  public void setLength(final Double length) {
1436    this.length = length;
1437  }
1438
1439  /**
1440   * Number of unique people who watched the video broadcast when it was live.
1441   *
1442   * @return Number of unique people who watched the video broadcast when it was live.
1443   */
1444  @GraphAPI(since = "2.6")
1445  @java.lang.SuppressWarnings("all")
1446  public Integer getLiveAudienceCount() {
1447    return this.liveAudienceCount;
1448  }
1449
1450  /**
1451   * Number of unique people who watched the video broadcast when it was live.
1452   */
1453  @java.lang.SuppressWarnings("all")
1454  public void setLiveAudienceCount(final Integer liveAudienceCount) {
1455    this.liveAudienceCount = liveAudienceCount;
1456  }
1457
1458  /**
1459   * The live status of the video.
1460   *
1461   * Possible values contain LIVE, LIVE_STOPPED, VOD
1462   *
1463   * @return The live status of the video
1464   */
1465  @GraphAPI(since = "2.6")
1466  @java.lang.SuppressWarnings("all")
1467  public String getLiveStatus() {
1468    return this.liveStatus;
1469  }
1470
1471  /**
1472   * The live status of the video.
1473   *
1474   * Possible values contain LIVE, LIVE_STOPPED, VOD
1475   */
1476  @java.lang.SuppressWarnings("all")
1477  public void setLiveStatus(final String liveStatus) {
1478    this.liveStatus = liveStatus;
1479  }
1480
1481  /**
1482   * Privacy setting for the video.
1483   * 
1484   * @return Privacy setting for the video.
1485   */
1486  @java.lang.SuppressWarnings("all")
1487  public Privacy getPrivacy() {
1488    return this.privacy;
1489  }
1490
1491  /**
1492   * Privacy setting for the video.
1493   * 
1494   */
1495  @java.lang.SuppressWarnings("all")
1496  public void setPrivacy(final Privacy privacy) {
1497    this.privacy = privacy;
1498  }
1499
1500  /**
1501   * The status of the Premiere Watch Party, if any
1502   */
1503  @java.lang.SuppressWarnings("all")
1504  public String getPremiereLivingRoomStatus() {
1505    return this.premiereLivingRoomStatus;
1506  }
1507
1508  /**
1509   * The status of the Premiere Watch Party, if any
1510   */
1511  @java.lang.SuppressWarnings("all")
1512  public void setPremiereLivingRoomStatus(final String premiereLivingRoomStatus) {
1513    this.premiereLivingRoomStatus = premiereLivingRoomStatus;
1514  }
1515
1516  /**
1517   * Object describing the status attributes of a video.
1518   * 
1519   * @return Object describing the status attributes of a video.
1520   */
1521  @java.lang.SuppressWarnings("all")
1522  public VideoStatus getStatus() {
1523    return this.status;
1524  }
1525
1526  /**
1527   * Object describing the status attributes of a video.
1528   * 
1529   */
1530  @java.lang.SuppressWarnings("all")
1531  public void setStatus(final VideoStatus status) {
1532    this.status = status;
1533  }
1534
1535  /**
1536   * Whether a post about this video is published.
1537   * 
1538   * This field is only accessible in Graph API 2.3 or later.
1539   *
1540   * @return whether a post about this video is published.
1541   * @since 1.10.0
1542   */
1543  @GraphAPI(since = "2.3")
1544  @java.lang.SuppressWarnings("all")
1545  public Boolean getPublished() {
1546    return this.published;
1547  }
1548
1549  /**
1550   * Whether a post about this video is published.
1551   * 
1552   * This field is only accessible in Graph API 2.3 or later.
1553   *
1554   * @since 1.10.0
1555   */
1556  @java.lang.SuppressWarnings("all")
1557  public void setPublished(final Boolean published) {
1558    this.published = published;
1559  }
1560
1561  /**
1562   * Back dated time
1563   *
1564   * @since 1.10.0
1565   */
1566  @java.lang.SuppressWarnings("all")
1567  public Date getBackdatedTime() {
1568    return this.backdatedTime;
1569  }
1570
1571  /**
1572   * Back dated time
1573   *
1574   * @since 1.10.0
1575   */
1576  @java.lang.SuppressWarnings("all")
1577  public void setBackdatedTime(final Date backdatedTime) {
1578    this.backdatedTime = backdatedTime;
1579  }
1580
1581  /**
1582   * String that represents the back dated time granularity
1583   *
1584   * @since 1.10.0
1585   */
1586  @java.lang.SuppressWarnings("all")
1587  public String getBackdatedTimeGranularity() {
1588    return this.backdatedTimeGranularity;
1589  }
1590
1591  /**
1592   * String that represents the back dated time granularity
1593   *
1594   * @since 1.10.0
1595   */
1596  @java.lang.SuppressWarnings("all")
1597  public void setBackdatedTimeGranularity(final String backdatedTimeGranularity) {
1598    this.backdatedTimeGranularity = backdatedTimeGranularity;
1599  }
1600
1601  /**
1602   * The time the video was initially published.
1603   * 
1604   * @return The time the video was initially published.
1605   */
1606  @Override
1607  @java.lang.SuppressWarnings("all")
1608  public Date getCreatedTime() {
1609    return this.createdTime;
1610  }
1611
1612  /**
1613   * The time the video was initially published.
1614   * 
1615   */
1616  @java.lang.SuppressWarnings("all")
1617  public void setCreatedTime(final Date createdTime) {
1618    this.createdTime = createdTime;
1619  }
1620
1621  /**
1622   * The last time the video or its caption were updated.
1623   * 
1624   * @return The last time the video or its caption were updated.
1625   */
1626  @java.lang.SuppressWarnings("all")
1627  public Date getUpdatedTime() {
1628    return this.updatedTime;
1629  }
1630
1631  /**
1632   * The last time the video or its caption were updated.
1633   * 
1634   */
1635  @java.lang.SuppressWarnings("all")
1636  public void setUpdatedTime(final Date updatedTime) {
1637    this.updatedTime = updatedTime;
1638  }
1639
1640  /**
1641   * The time that the video is scheduled to be published.
1642   * 
1643   * This field is only accessible in Graph API 2.3 or later.
1644   * 
1645   * @return The time that the video is scheduled to be published.
1646   * @since 1.10.0
1647   */
1648  @GraphAPI(since = "2.3")
1649  @java.lang.SuppressWarnings("all")
1650  public Date getScheduledPublishTime() {
1651    return this.scheduledPublishTime;
1652  }
1653
1654  /**
1655   * The time that the video is scheduled to be published.
1656   * 
1657   * This field is only accessible in Graph API 2.3 or later.
1658   * 
1659   * @since 1.10.0
1660   */
1661  @java.lang.SuppressWarnings("all")
1662  public void setScheduledPublishTime(final Date scheduledPublishTime) {
1663    this.scheduledPublishTime = scheduledPublishTime;
1664  }
1665
1666  @java.lang.SuppressWarnings("all")
1667  public Connection<Insight> getVideoInsights() {
1668    return this.videoInsights;
1669  }
1670
1671  @java.lang.SuppressWarnings("all")
1672  public void setVideoInsights(final Connection<Insight> videoInsights) {
1673    this.videoInsights = videoInsights;
1674  }
1675
1676  @java.lang.SuppressWarnings("all")
1677  public Connection<Thumbnail> getThumbnails() {
1678    return this.thumbnails;
1679  }
1680
1681  @java.lang.SuppressWarnings("all")
1682  public void setThumbnails(final Connection<Thumbnail> thumbnails) {
1683    this.thumbnails = thumbnails;
1684  }
1685}