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