001/*
002 * Copyright (c) 2010-2024 Mark Allen, Norbert Bartels.
003 *
004 * Permission is hereby granted, free of charge, to any person obtaining a copy
005 * of this software and associated documentation files (the "Software"), to deal
006 * in the Software without restriction, including without limitation the rights
007 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
008 * copies of the Software, and to permit persons to whom the Software is
009 * furnished to do so, subject to the following conditions:
010 *
011 * The above copyright notice and this permission notice shall be included in
012 * all copies or substantial portions of the Software.
013 *
014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
015 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
016 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
017 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
018 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
019 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
020 * THE SOFTWARE.
021 */
022package com.restfb.scope;
023
024import com.restfb.annotation.GraphAPI;
025
026/**
027 * Please check the permission dependencies
028 * <a href="https://developers.facebook.com/docs/pages/overview-1#permission-dependencies">here</a>
029 */
030public enum FacebookPermissions {
031  /**
032   * Provides access to a subset of items that are part of a person's public profile.
033   * 
034   * A person's public profile refers to the following properties on the user object by default:
035   * <ul>
036   * <li>id</li>
037   * <li>name</li>
038   * <li>first_name</li>
039   * <li>last_name</li>
040   * <li>link</li>
041   * <li>gender</li>
042   * <li>locale</li>
043   * <li>timezone</li>
044   * <li>updated_time</li>
045   * <li>verified</li>
046   * </ul>
047   * 
048   * On the web, public_profile is implied with every request and isn't required, although the best practice is to
049   * declare it. On iOS and Android, you must manually request it as part of your login flow.<br />
050   * <br />
051   * 
052   * gender &amp; locale can only be accessed if:
053   * 
054   * <ul>
055   * <li>The person queried is the person using the app.</li>
056   * <li>The person queried is using the app, and is a friend of the person using the app.</li>
057   * <li>The person queried is using the app, is not a friend of the person using the app, but the app includes either
058   * an app access token or an <code>appsecret_proof</code> argument with the call.</li> <br />
059   * <strong>Review</strong> Your app may use this permission without review from Facebook.
060   */
061  PUBLIC_PROFILE("public_profile", Category.PUBLIC), //
062
063  /**
064   * Provides access to a person's age range.
065   *
066   * <p>
067   * <strong>Review</strong>
068   *
069   * <p>
070   * If your app requests this permission Facebook will have to review how your app uses it.
071   */
072  @GraphAPI(since = "3.0")
073  USER_AGE_RANGE("user_age_range", Category.USER_DATA), //
074
075  /**
076   * Access the date and month of a person's birthday. This may or may not include the person's year of birth, dependent
077   * upon their privacy settings and the access token being used to query this field.
078   *
079   * <p>
080   * Please note most integrations will only need age_range which comes as part of the public_profile permission.
081   *
082   * <p>
083   * <strong>Review</strong>
084   *
085   * <p>
086   * If your app requests this permission Facebook will have to review how your app uses it.
087   */
088  USER_BIRTHDAY("user_birthday", Category.USER_DATA), //
089
090  /**
091   * Provides read-only access to the Events a person is hosting or has RSVP'd to.
092   *
093   * <p>
094   * <strong>Review</strong>
095   *
096   * <p>
097   * If your app requests this permission Facebook will have to review how your app uses it.
098   */
099  USER_EVENTS("user_events", Category.EVENTS_GROUPS_PAGES), //
100
101  /**
102   * Provides access the list of friends that also use your app. These friends can be found on the friends edge on the
103   * user object.
104   *
105   * <p>
106   * In order for a person to show up in one person's friend list, both people must have decided to share their list of
107   * friends with your app and not disabled that permission during login. Also both friends must have been asked for
108   * <code>user_friends</code> during the login process.
109   *
110   * <p>
111   * <strong>Review</strong>
112   *
113   * <p>
114   * Your app may use this permission without review from Facebook.
115   */
116  USER_FRIENDS("user_friends", Category.USER_DATA), //
117
118  /**
119   * Provides access to a person's gender.
120   *
121   * <p>
122   * <strong>Review</strong>
123   *
124   * <p>
125   * If your app requests this permission Facebook will have to review how your app uses it.
126   */
127  @GraphAPI(since = "3.0")
128  USER_GENDER("user_gender", Category.USER_DATA), //
129
130  /**
131   * Provides access to a person's hometown location through the hometown field on the User object. This is set by the
132   * user on the Profile.
133   *
134   * <p>
135   * <strong>Review</strong>
136   *
137   * <p>
138   * If your app requests this permission Facebook will have to review how your app uses it.
139   */
140  USER_HOMETOWN("user_hometown", Category.USER_DATA), //
141
142  /**
143   * Provides access to the list of all Facebook Pages and Open Graph objects that a person has liked. This list is
144   * available through the likes edge on the User object.
145   *
146   * <p>
147   * <strong>Review</strong>
148   *
149   * <p>
150   * If your app requests this permission Facebook will have to review how your app uses it.
151   */
152  USER_LIKES("user_likes", Category.USER_DATA), //
153
154  /**
155   * Provides access to the Facebook profile URL for another user of the app.
156   *
157   * <p>
158   * <strong>Review</strong>
159   *
160   * <p>
161   * If your app requests this permission Facebook will have to review how your app uses it.
162   */
163  @GraphAPI(since = "3.0")
164  USER_LINK("user_link", Category.USER_DATA), //
165
166  /**
167   * Provides access to a person's current city through the location field on the User object. The current city is set
168   * by a person on their Profile.
169   *
170   * <p>
171   * The current city is not necessarily the same as a person's hometown.
172   *
173   * <p>
174   * <strong>Review</strong>
175   *
176   * <p>
177   * If your app requests this permission Facebook will have to review how your app uses it.
178   */
179  USER_LOCATION("user_location", Category.USER_DATA), //
180
181  /**
182   * Enables your app to read the Groups a person is an admin of through the groups edge on the User object.
183   *
184   * <p>
185   * This permission does not allow you to create groups on behalf of a person. It is not possible to create groups via
186   * the Graph API. This does not let you read the groups a user is just a member of.
187   *
188   * <p>
189   * This permission is being deprecated as Groups is moving to a new permission model for apps. Please continue to use
190   * {@code user_managed_groups} for testing your apps in dev mode. However, when submitting for review, please select
191   * the reviewable feature Groups API, and do not submit this {@code user_managed_groups} in your review.
192   *
193   * <p>
194   * <b>Limited use: for testing only</b>
195   */
196  USER_MANAGED_GROUPS("user_managed_groups", Category.EVENTS_GROUPS_PAGES), //
197
198  /**
199   * The user_messenger_contact permission allows a business to contact a person via Messenger upon their approval or
200   * initiation of a chat thread with the business's Page.
201   *
202   * <p>
203   * The allowed usage for this permission is for a Page to send a person an initial message, post—purchase updates and
204   * account updates.
205   *
206   * <strong>Review</strong>
207   *
208   * <p>
209   * If your app requests this permission Facebook will have to review how your app uses it.
210   */
211  USER_MESSENGER_CONTACT("user_messenger_contact", Category.EVENTS_GROUPS_PAGES), //
212
213  /**
214   * Provides access to the photos a person has uploaded or been tagged in. This is available through the photos edge on
215   * the User object.
216   *
217   * <p>
218   * <strong>Review</strong>
219   *
220   * <p>
221   * If your app requests this permission Facebook will have to review how your app uses it.
222   */
223  USER_PHOTOS("user_photos", Category.USER_DATA), //
224
225  /**
226   * Provides access to the posts on a person's Timeline.
227   *
228   * <p>
229   * Includes their own posts, posts they are tagged in, and posts other people make on their Timeline.
230   *
231   * <p>
232   * <strong>Review</strong>
233   *
234   * <p>
235   * If your app requests this permission Facebook will have to review how your app uses it.
236   *
237   * @since 1.10.0
238   */
239  USER_POSTS("user_posts", Category.USER_DATA), //
240
241  /**
242   * Provides access to the Places a person has been tagged at in photos, videos, statuses and links.
243   *
244   * <p>
245   * <strong>Review</strong>
246   *
247   * <p>
248   * If your app requests this permission Facebook will have to review how your app uses it.
249   */
250  USER_TAGGED_PLACES("user_tagged_places", Category.USER_DATA), //
251
252  /**
253   * Provides access to the videos a person has uploaded or been tagged in.
254   *
255   * <p>
256   * <strong>Review</strong>
257   *
258   * <p>
259   * If your app requests this permission Facebook will have to review how your app uses it.
260   */
261  USER_VIDEOS("user_videos", Category.USER_DATA), //
262
263  /**
264   * Provides the ability to both read and manage the ads for ad accounts you have access to. Please see
265   * <a href="https://developers.facebook.com/docs/marketing-api/buying-api">Ads Management</a> for details.
266   */
267  ADS_MANAGEMENT("ads_management", Category.EVENTS_GROUPS_PAGES), //
268
269  /**
270   * Provides the access to <a href="https://developers.facebook.com/docs/marketing-api/read-access-onboarding">Ads
271   * Insights API</a> to pull ads report information for ad accounts you have access to.
272   */
273  ADS_READ("ads_read", Category.EVENTS_GROUPS_PAGES), //
274
275  /**
276   * The attribution_read permission grants your app access to the Attribution API to pull attribution report data for
277   * lines of business you own or have been granted access to by the owner or owners of other lines of business.
278   *
279   * Allowed Usage
280   *
281   * Provides the ability for your app to access ads performance data from Attribution for use in custom dashboards and
282   * data analytics.
283   */
284  ATTRIBUTION_READ("attribution_read", Category.EVENTS_GROUPS_PAGES), //
285
286  /**
287   * Provides access to the person's primary email address via the email property on the user object.
288   *
289   * <p>
290   * Do not spam users. Your use of email must comply with both Facebook policies and with the CAN-SPAM Act.
291   *
292   * <p>
293   * Note, even if you request the email permission it is not guaranteed you will get an email address. For example, if
294   * someone signed up for Facebook with a phone number instead of an email address, the email field may be empty.
295   *
296   * <p>
297   * <strong>Review</strong>
298   *
299   * <p>
300   * Your app may use this permission without review from Facebook.
301   */
302  EMAIL("email", Category.USER_DATA), //
303
304  /**
305   * The page_events permissions allows your app permission to log events on behalf of Facebook Pages administered by
306   * people using your app and to send those events to Facebook for ads targeting, optimization and reporting.
307   *
308   * <b>Allowed Usage</b>
309   *
310   * Send businesses related activities (for example purchase, add-to-cart, lead) on behalf of Pages owned by the people
311   * who use your app.
312   */
313  PAGES_EVENTS("pages_events", Category.EVENTS_GROUPS_PAGES), //
314
315  /**
316   * The {@code pages_manage_ads} permission allows your app the ability to manage ads associated with the Page.
317   * 
318   * <p>
319   * You can use this permission to create and manage ads for the Page.
320   *
321   * <p>
322   * <strong>Review</strong>
323   *
324   * <p>
325   * If your app requests this permission Facebook will have to review how your app uses it.
326   *
327   * @since June 1, 2020
328   */
329  PAGES_MANAGE_ADS("pages_manage_ads", Category.EVENTS_GROUPS_PAGES), //
330
331  /**
332   * The {@code pages_manage_metadata} permission allows you to subscribe and receive webhooks about activity on the
333   * Page, and to update settings on the Page.
334   * 
335   * <p>
336   * You can use this permission if you need it to help the Page Admin administer and manage the Page.
337   *
338   * <p>
339   * <strong>Review</strong>
340   *
341   * <p>
342   * If your app requests this permission Facebook will have to review how your app uses it.
343   *
344   * @since June 1, 2020
345   */
346  PAGES_MANAGE_METADATA("pages_manage_metadata", Category.EVENTS_GROUPS_PAGES), //
347
348  /**
349   * The {@code pages_read_engagement} permission allows your app the ability to read content (posts, photos, videos,
350   * events) posted by the Page, read followers data including name, PSID, and profile picture, and read metadata and
351   * other insights about the Page.
352   * 
353   * <p>
354   * You can use this permission if you need it to help the Page Admin administer and manage the Page.
355   *
356   * <p>
357   * <strong>Review</strong>
358   *
359   * <p>
360   * If your app requests this permission Facebook will have to review how your app uses it.
361   *
362   * @since June 1, 2020
363   */
364  PAGES_READ_ENGAGEMENT("pages_read_engagement", Category.EVENTS_GROUPS_PAGES), //
365
366  /**
367   * The {@code pages_read_user_content} permission allows your app the ability to read User generated content on the
368   * Page, such as posts, comments, and ratings by Users or other Pages, and to delete User comments on Page posts.
369   *
370   * <p>
371   * It also allows your app to read posts that the Page is tagged in.
372   *
373   * <p>
374   * You can use this permission to read Users and other Page’s content posted on the Page if you need it to help manage
375   * the Page.
376   *
377   * <p>
378   * <strong>Review</strong>
379   *
380   * <p>
381   * If your app requests this permission Facebook will have to review how your app uses it.
382   *
383   * @since June 1, 2020
384   */
385  PAGES_READ_USER_CONTENT("pages_read_user_content", Category.EVENTS_GROUPS_PAGES), //
386
387  /**
388   * Provides the access to manage call to actions of the Pages that you manage.
389   *
390   * <p>
391   * <strong>Review</strong>
392   *
393   * <p>
394   * If your app requests this permission Facebook will have to review how your app uses it.
395   */
396  @GraphAPI(since = "2.5")
397  PAGES_MANAGE_CTA("pages_manage_cta", Category.EVENTS_GROUPS_PAGES), //
398
399  /**
400   * Lets your app manage Instant Articles on behalf of Facebook Pages administered by people using your app.
401   *
402   * <p>
403   * <strong>Review</strong>
404   *
405   * <p>
406   * If your app requests this permission Facebook will have to review how your app uses it.
407   */
408  @GraphAPI(since = "2.5")
409  PAGES_MANAGE_INSTANT_ARTICLES("pages_manage_instant_articles", Category.EVENTS_GROUPS_PAGES), //
410
411  /**
412   * Provides access to manage leads retrieved from Lead Ads of the Pages that you manage.
413   *
414   * <p>
415   * <strong>Review</strong>
416   *
417   * <p>
418   * If your app requests this permission Facebook will have to review how your app uses it.
419   */
420  @GraphAPI(since = "2.3")
421  PAGES_MANAGE_LEADS("pages_manage_leads", Category.EVENTS_GROUPS_PAGES), //
422
423  /**
424   * This allows you to send and receive messages through a Facebook Page.
425   *
426   * <p>
427   * This permission cannot be used to send promotional or advertising content. Conversations through this API can only
428   * begin when someone indicates—through a Messenger plugin or directly messaging you—that they want to receive
429   * messages from you.
430   *
431   * <p>
432   * <strong>Review</strong>
433   *
434   * <p>
435   * If your app requests this permission Facebook will have to review how your app uses it.
436   */
437  @GraphAPI(since = "2.6")
438  PAGES_MESSAGING("pages_messaging", Category.MESSAGING), //
439
440  /**
441   * This allows you to send and receive messages through a Facebook Page.
442   *
443   * <p>
444   * This permission cannot be used to send promotional or advertising content. Conversations through this API can only
445   * begin when someone indicates—through a Messenger plugin or directly messaging you—that they want to receive
446   * messages from you.
447   *
448   * <p>
449   * <strong>Review</strong>
450   *
451   * <p>
452   * If your app requests this permission Facebook will have to review how your app uses it.
453   */
454  @GraphAPI(since = "2.6")
455  PAGES_MESSAGING_PHONE_NUMBER("pages_messaging_phone_number", Category.MESSAGING), //
456
457  /**
458   * Provides the access to show the list of the Pages that you manage.
459   *
460   * <p>
461   * <strong>Review</strong>
462   *
463   * <p>
464   * If your app requests this permission Facebook will have to review how your app uses it.
465   */
466  @GraphAPI(since = "2.5")
467  PAGES_SHOW_LIST("pages_show_list", Category.EVENTS_GROUPS_PAGES), //
468
469  /**
470   * The pages_user_gender permission allows your app to access a user's gender through the Page your app is connected
471   * to.
472   *
473   * Allowed Usage
474   *
475   * <ul>
476   * <li>Personalize experiences or recommendations based on gender.</li>
477   * <li>Use gendered language such as correct pronouns and titles.</li>
478   * </ul>
479   */
480  PAGES_USER_GENDER("pages_user_gender", Category.EVENTS_GROUPS_PAGES), //
481
482  /**
483   * The pages_user_locale permission allows your to app to a user's locale through the Page your app is connected to.
484   *
485   * Allowed Usage
486   *
487   * <ul>
488   * <li>Personalize experiences based on the locale of a person by surfacing locale specific content.</li>
489   * <li>Send responses in the preferred language of the person.</li>
490   * <li>Display numbers, times, and dates correctly for the locale of the person.</li>
491   * </ul>
492   */
493  PAGES_USER_LOCALE("pages_user_locale", Category.EVENTS_GROUPS_PAGES), //
494
495  /**
496   * The pages_user_timezone permission grants your app access to a user's time zone through the Page your app is
497   * connected to.
498   *
499   * Allowed Usage
500   *
501   * <ul>
502   * <li>Prevent messages from being sent at an inconvenient time.</li>
503   * <li>Send time sensitive content or recurring news at a specific time.</li>
504   * <li>Provide tailored content based on time.</li>
505   * <li>Send time appropriate greetings.</li>
506   * </ul>
507   */
508  PAGES_USER_TIMEZONE("pages_user_timezone", Category.EVENTS_GROUPS_PAGES), //
509
510  /**
511   * The {@code pages_manage_posts} permission allows your app the ability to create, edit, and delete your Page posts.
512   *
513   * <p>
514   * If you have access to {@code pages_read_user_content}, you can also use {@code pages_manage_posts} to delete Page
515   * posts created by a User.
516   *
517   * <p>
518   * You can use this permission to create and delete content on the Page.
519   *
520   * <p>
521   * <strong>Review</strong>
522   *
523   * <p>
524   * If your app requests this permission Facebook will have to review how your app uses it.
525   *
526   * @since June 1, 2020
527   */
528  PAGES_MANAGE_POSTS("pages_manage_posts", Category.EVENTS_GROUPS_PAGES), //
529
530  /**
531   * The {@code pages_manage_engagement} permission allows your app the ability to create, edit, and delete comments
532   * posted on the Page.
533   *
534   * <p>
535   * If you have access to {@code pages_read_user_content}, you can also use {@code pages_manage_engagement} to delete
536   * comments posted by other Pages.
537   *
538   * <p>
539   * It also allows your app the ability to create and delete your own Page's likes to Page content.
540   *
541   * <p>
542   * You can use this permission if you need it to help manage and moderate content on the Page.
543   *
544   * <p>
545   * <strong>Review</strong>
546   *
547   * <p>
548   * If your app requests this permission Facebook will have to review how your app uses it.
549   *
550   * @since June 1, 2020
551   */
552  PAGES_MANAGE_ENGAGEMENT("pages_manage_engagement", Category.EVENTS_GROUPS_PAGES), //
553
554  /**
555   * Gives an app the ability to post content into a group on behalf of a user who has granted the app this permission.
556   *
557   * <p>
558   * <strong>Review</strong>
559   *
560   * <p>
561   * If your app requests this permission Facebook will have to review how your app uses it.
562   * 
563   * @deprecated no longer supported with Graph API 19.0 or after 22. April 2024
564   */
565  @GraphAPI(since = "3.0", until = "19.0")
566  @Deprecated
567  PUBLISH_TO_GROUPS("publish_to_groups", Category.EVENTS_GROUPS_PAGES), //
568
569  /**
570   * Grants an app permission to publish live videos to the app User's timeline.
571   *
572   * <p>
573   * <strong>Review</strong>
574   *
575   * <p>
576   * If your app requests this permission Facebook will have to review how your app uses it.
577   */
578  @GraphAPI(since = "3.1")
579  PUBLISH_VIDEO("publish_video", Category.LIVE_VIDEO), //
580
581  /**
582   * Gives your app the ability to receive member-related data on group content when a member has granted the app
583   * permission to do so.
584   *
585   * <p>
586   * <strong>Review</strong>
587   *
588   * <p>
589   * If your app requests this permission Facebook will have to review how your app uses it.
590   * 
591   * @deprecated no longer supported with Graph API 19.0 or after 22. April 2024
592   */
593  @GraphAPI(since = "3.0", until = "19.0")
594  @Deprecated
595  GROUPS_ACCESS_MEMBER_INFO("groups_access_member_info", Category.EVENTS_GROUPS_PAGES), //
596
597  /**
598   * Provides read-only access to the Audience Network Insights data for Apps the person owns.
599   *
600   * <p>
601   * <strong>Review</strong>
602   *
603   * <p>
604   * If your app requests this permission Facebook will have to review how your app uses it.
605   */
606  @GraphAPI(since = "2.4")
607  READ_AUDIENCE_NETWORK_INSIGHTS("read_audience_network_insights", Category.OTHER), //
608
609  /**
610   * The research_apis permission allows your app to access data on public Facebook Pages, Groups, and Events within the
611   * Facebook Open Research and Transparency Tool.
612   *
613   * Allowed Usage
614   *
615   * Utilize public Facebook data for academic research.
616   */
617  RESEARCH_APIS("research_apis", Category.OTHER), //
618
619  /**
620   *
621   * <p>
622   * <strong>Review</strong>
623   *
624   * <p>
625   * If your app requests this permission Facebook will have to review how your app uses it.
626   */
627  READ_INSIGHTS("read_insights", Category.OTHER), //
628
629  /**
630   * Provides the ability to set a person's attendee status on Facebook Events (eg attending, maybe, or declined).
631   *
632   * <p>
633   * This permission does not let you invite people to an event.
634   *
635   * <p>
636   * This permission does not let you update an event's details.
637   *
638   * <p>
639   * This permission does not let you create an event. There is no way to create an event via the API as of Graph API
640   * v2.0.
641   *
642   * <p>
643   * <strong>Review</strong>
644   *
645   * <p>
646   * If your app requests this permission Facebook will have to review how your app uses it.
647   */
648  RSVP_EVENT("rsvp_event", Category.EVENTS_GROUPS_PAGES), //
649
650  /**
651   * Read and write with Business Management API
652   *
653   * <p>
654   * <strong>Review</strong>
655   *
656   * <p>
657   * If your app requests this permission Facebook will have to review how your app uses it.
658   */
659  BUSINESS_MANAGEMENT("business_management", Category.EVENTS_GROUPS_PAGES), //
660
661  /**
662   * Grants your app the ability to create, read, update, and delete business owned product catalogs that the user is an
663   * admin of. This permission grants access to related endpoints. By default, your app may only access product catalogs
664   * that are owned by admins of the app when in developer mode.
665   * 
666   * <p>
667   * <strong>Review</strong>
668   * 
669   * <p>
670   * If your app requests this permission Facebook will have to review how your app uses it.
671   */
672  CATALOG_MANAGEMENT("catalog_management", Category.EVENTS_GROUPS_PAGES), //
673
674  /**
675   * The gaming_user_locale permission allows your app to get a user's preferred language while the user plays a game on
676   * Facebook (for example, Instant Games or Cloud Gaming).
677   *
678   * Allowed Usage
679   *
680   * Display a game interface in the user's preferred language.
681   */
682  GAMING_USER_LOCALE("gaming_user_locale", Category.EVENTS_GROUPS_PAGES), //
683
684  /**
685   * Grants your app permission to retrieve all the information captured within a
686   * <a href="https://developers.facebook.com/docs/marketing-api/guides/lead-ads/">lead.</a>
687   *
688   * <p>
689   * <strong>Review</strong>
690   *
691   * <p>
692   * If your app requests this permission Facebook will have to review how your app uses it.
693   */
694  @GraphAPI(since = "3.1")
695  LEADS_RETRIEVAL("leads_retrieval", Category.EVENTS_GROUPS_PAGES), //
696
697  /**
698   * This allows you to send and receive messages through a Facebook Page out of the 24h window opened by a user action.
699   *
700   * <p>
701   * This permission cannot be used to send promotional or advertising content.
702   *
703   * <p>
704   * <strong>Review</strong>
705   *
706   * <p>
707   * If your app requests this permission Facebook will have to review how your app uses it.
708   */
709  @GraphAPI(since = "2.6")
710  PAGES_MESSAGING_SUBSCRIPTIONS("pages_messaging_subscriptions", Category.MESSAGING), //
711
712  /**
713   * This allows you to charge users in Messenger conversations on behalf of pages.
714   *
715   * <p>
716   * Intended for tangible goods only, not virtual or subscriptions.
717   *
718   * <p>
719   * <strong>Review</strong>
720   *
721   * <p>
722   * If your app requests this permission Facebook will have to review how your app uses it.
723   */
724  @GraphAPI(since = "2.6")
725  PAGES_MESSAGING_PAYMENTS("pages_messaging_payments", Category.MESSAGING),
726
727  // Instagram Platform permissions
728
729  /**
730   * Provides the ability to read Instagram accounts you have access to.
731   *
732   * <p>
733   * Please see <a href="https://developers.facebook.com/docs/instagram-api/getting-started">Instagram's Getting Started
734   * Guide</a> for details.
735   *
736   * <p>
737   * <strong>Review</strong>
738   *
739   * <p>
740   * If your app requests this permission Facebook will have to review how your app uses it.
741   */
742  @GraphAPI(since = "2.5")
743  INSTAGRAM_BASIC("instagram_basic", Category.INSTAGRAM),
744
745  /**
746   * Provides the ability to read Instagram accounts you have access to.
747   *
748   * <p>
749   * Please see <a href="https://developers.facebook.com/docs/instagram-api/getting-started">Instagram's Getting Started
750   * Guide</a> for details.
751   *
752   * <p>
753   * <strong>Review</strong>
754   *
755   * <p>
756   * If your app requests this permission Facebook will have to review how your app uses it.
757   */
758  @GraphAPI(since = "2.5")
759  INSTAGRAM_MANAGE_COMMENTS("instagram_manage_comments", Category.INSTAGRAM),
760
761  /**
762   * Provides the ability to read insights of Instagram account you have access to.
763   *
764   * <p>
765   * Please see <a href="https://developers.facebook.com/docs/instagram-api/getting-started">Instagram's Getting Started
766   * Guide</a> for details.
767   *
768   * <p>
769   * <strong>Review</strong>
770   *
771   * <p>
772   * If your app requests this permission Facebook will have to review how your app uses it.
773   */
774  @GraphAPI(since = "2.5")
775  INSTAGRAM_MANAGE_INSIGHTS("instagram_manage_insights", Category.INSTAGRAM),
776
777  /**
778   * The instagram_manage_messages permission allows business users to read and respond to Instagram Direct messages.
779   * 
780   * <p>
781   * Please see <a href="https://developers.facebook.com/docs/instagram-api/getting-started">Instagram's Getting Started
782   * Guide</a> for details.
783   * 
784   * <p>
785   * <strong>Review</strong>
786   * 
787   * <p>
788   * If your app requests this permission Facebook will have to review how your app uses it.
789   */
790  INSTAGRAM_MANAGE_MESSAGES("instagram_manage_messages", Category.INSTAGRAM),
791
792  /**
793   * Provides the ability to publish content to Instagram account you have access to.
794   *
795   * <p>
796   * Please see <a href="https://developers.facebook.com/docs/instagram-api/reference/user/media_publish">Instagram's
797   * reference</a> for details.
798   *
799   * <p>
800   * <strong>Review</strong>
801   *
802   * <p>
803   * If your app requests this permission Facebook will have to review how your app uses it.
804   */
805  @GraphAPI(since = "2.5")
806  INSTAGRAM_CONTENT_PUBLISH("instagram_content_publish", Category.INSTAGRAM), //
807
808  /**
809   * The instagram_graph_user_media permission allows your app to read the Media node, which represents an image, video,
810   * or album and the node’s edges.
811   * 
812   * <p>
813   * <strong>Review</strong>
814   *
815   * <p>
816   * If your app requests this permission Facebook will have to review how your app uses it.
817   */
818  INSTAGRAM_GRAPH_USER_MEDIA("instagram_graph_user_media", Category.INSTAGRAM), //
819
820  /**
821   * The instagram_graph_user_profile permission allows your app to read the app user's profile.
822   *
823   * <p>
824   * <strong>Review</strong>
825   *
826   * <p>
827   * If your app requests this permission Facebook will have to review how your app uses it.
828   */
829  INSTAGRAM_GRAPH_USER_PROFILE("instagram_graph_user_profile", Category.INSTAGRAM), //
830
831  /**
832   * Provides the ability to read and/or manage WhatsApp business assets you own or have been granted access to by other
833   * businesses through this permission.
834   *
835   * These business assets include WhatsApp business accounts, phone numbers, and message templates.
836   *
837   * <p>
838   * Please see <a href=
839   * "https://developers.facebook.com/docs/facebook-login/permissions/#reference-whatsapp_business_management">Whatsapps's
840   * reference</a> for details.
841   *
842   * <p>
843   * <strong>Review</strong>
844   *
845   * <p>
846   * If your app requests this permission Facebook will have to review how your app uses it.
847   */
848  WHATSAPP_BUSINESS_MANAGEMENT("whatsapp_business_management", Category.WHATSAPP),
849
850  /**
851   * The `whatsapp_business_messaging` permission allows an app to send WhatsApp messages to a specific phone number,
852   * upload and retrieve media from messages, manage and get WhatsApp business profile information, and to register
853   * those phone numbers with Meta.
854   *
855   * <p>
856   * Please see
857   * <a href= "https://developers.facebook.com/docs/permissions/reference/whatsapp_business_messaging">Whatsapps's
858   * reference</a> for details.
859   *
860   * <p>
861   * <strong>Review</strong>
862   *
863   * <p>
864   * If your app requests this permission Facebook will have to review how your app uses it.
865   */
866  WHATSAPP_BUSINESS_MESSAGING("whatsapp_business_messaging", Category.WHATSAPP),
867
868  /**
869   * Required for making any calls to all Threads API endpoints
870   *
871   * <p>
872   * <strong>Review</strong>
873   *
874   * <p>
875   * If your app requests this permission Facebook will have to review how your app uses it.
876   */
877  THREADS_BASIC("threads_basic", Category.THREADS),
878
879  /**
880   * Required for Threads publishing endpoints only
881   *
882   * <p>
883   * <strong>Review</strong>
884   *
885   * <p>
886   * If your app requests this permission Facebook will have to review how your app uses it.
887   */
888  THREADS_CONTENT_PUBLISH("threads_content_publish", Category.THREADS),
889
890  /**
891   * Required for making GET calls to insights endpoints
892   *
893   * <p>
894   * <strong>Review</strong>
895   *
896   * <p>
897   * If your app requests this permission Facebook will have to review how your app uses it.
898   */
899  THREADS_MANAGE_INSIGHTS("threads_manage_insights", Category.THREADS),
900
901  /**
902   * Required for making POST calls to reply endpoints
903   *
904   * <p>
905   * <strong>Review</strong>
906   *
907   * <p>
908   * If your app requests this permission Facebook will have to review how your app uses it.
909   */
910  THREADS_MANAGE_REPLIES("threads_manage_replies", Category.THREADS),
911
912  /**
913   * Required for making GET calls to reply endpoints
914   *
915   * <p>
916   * <strong>Review</strong>
917   *
918   * <p>
919   * If your app requests this permission Facebook will have to review how your app uses it.
920   */
921  THREADS_READ_REPLIES("threads_read_replies", Category.THREADS);
922
923  private final String permissionString;
924
925  private final Category category;
926
927  FacebookPermissions(String facebookPermissionString, Category category) {
928    this.permissionString = facebookPermissionString;
929    this.category = category;
930  }
931
932  public String getPermissionString() {
933    return this.permissionString;
934  }
935
936  public Category getCategory() {
937    return this.category;
938  }
939
940  public enum Category {
941    PUBLIC, USER_DATA, EVENTS_GROUPS_PAGES, OTHER, MESSAGING, INSTAGRAM, LIVE_VIDEO, WHATSAPP, THREADS
942  }
943}