001/*
002 * Copyright (c) 2010-2026 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   * <p>
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</strong>
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   * <p>
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   * <p>
279   * Allowed Usage
280   * <p>
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 {@code facebook_branded_content_ads_brand} permission allows an app to read Facebook posts where the app user's
306   * Facebook profile is tagged as a paid partner, and allows the app user to read, request, and revoke permissions to
307   * run Partnership Ads.
308   * <p>
309   * The allowed usage for this permission is to enable a business to read Facebook posts where the account is tagged as
310   * a paid partner and manage permissions to run Partnership Ads without needing a pre-existing post.
311   */
312  FACEBOOK_BRANDED_CONTENT_ADS_BRAND("facebook_branded_content_ads_brand", Category.EVENTS_GROUPS_PAGES), //
313
314  /**
315   * The {@code facebook_creator_marketplace_discovery} permission allows an app to discover Facebook creators on the
316   * creator discovery platform.
317   * <p>
318   * The allowed usage for this permission is to retrieve insight data for eligible Facebook creators so businesses can
319   * discover and evaluate them for brand campaigns.
320   */
321  FACEBOOK_CREATOR_MARKETPLACE_DISCOVERY("facebook_creator_marketplace_discovery", Category.EVENTS_GROUPS_PAGES), //
322
323  /**
324   * The page_events permissions allows your app permission to log events on behalf of Facebook Pages administered by
325   * people using your app and to send those events to Facebook for ads targeting, optimization and reporting.
326   * <p>
327   * <strong>Allowed Usage</strong>
328   * <p>
329   * Send businesses related activities (for example purchase, add-to-cart, lead) on behalf of Pages owned by the people
330   * who use your app.
331   */
332  PAGES_EVENTS("pages_events", Category.EVENTS_GROUPS_PAGES), //
333
334  /**
335   * The {@code pages_manage_ads} permission allows your app the ability to manage ads associated with the Page.
336   *
337   * <p>
338   * You can use this permission to create and manage ads for the Page.
339   *
340   * <p>
341   * <strong>Review</strong>
342   *
343   * <p>
344   * If your app requests this permission Facebook will have to review how your app uses it.
345   *
346   * @since June 1, 2020
347   */
348  PAGES_MANAGE_ADS("pages_manage_ads", Category.EVENTS_GROUPS_PAGES), //
349
350  /**
351   * The {@code pages_manage_metadata} permission allows you to subscribe and receive webhooks about activity on the
352   * Page, and to update settings on the Page.
353   *
354   * <p>
355   * You can use this permission if you need it to help the Page Admin administer and manage the Page.
356   *
357   * <p>
358   * <strong>Review</strong>
359   *
360   * <p>
361   * If your app requests this permission Facebook will have to review how your app uses it.
362   *
363   * @since June 1, 2020
364   */
365  PAGES_MANAGE_METADATA("pages_manage_metadata", Category.EVENTS_GROUPS_PAGES), //
366
367  /**
368   * The {@code pages_read_engagement} permission allows your app the ability to read content (posts, photos, videos,
369   * events) posted by the Page, read followers data including name, PSID, and profile picture, and read metadata and
370   * other insights about the Page.
371   *
372   * <p>
373   * You can use this permission if you need it to help the Page Admin administer and manage the Page.
374   *
375   * <p>
376   * <strong>Review</strong>
377   *
378   * <p>
379   * If your app requests this permission Facebook will have to review how your app uses it.
380   *
381   * @since June 1, 2020
382   */
383  PAGES_READ_ENGAGEMENT("pages_read_engagement", Category.EVENTS_GROUPS_PAGES), //
384
385  /**
386   * The {@code pages_read_user_content} permission allows your app the ability to read User generated content on the
387   * Page, such as posts, comments, and ratings by Users or other Pages, and to delete User comments on Page posts.
388   *
389   * <p>
390   * It also allows your app to read posts that the Page is tagged in.
391   *
392   * <p>
393   * You can use this permission to read Users and other Page’s content posted on the Page if you need it to help manage
394   * the Page.
395   *
396   * <p>
397   * <strong>Review</strong>
398   *
399   * <p>
400   * If your app requests this permission Facebook will have to review how your app uses it.
401   *
402   * @since June 1, 2020
403   */
404  PAGES_READ_USER_CONTENT("pages_read_user_content", Category.EVENTS_GROUPS_PAGES), //
405
406  /**
407   * Provides the access to manage call to actions of the Pages that you manage.
408   *
409   * <p>
410   * <strong>Review</strong>
411   *
412   * <p>
413   * If your app requests this permission Facebook will have to review how your app uses it.
414   */
415  @GraphAPI(since = "2.5")
416  PAGES_MANAGE_CTA("pages_manage_cta", Category.EVENTS_GROUPS_PAGES), //
417
418  /**
419   * Lets your app manage Instant Articles on behalf of Facebook Pages administered by people using your app.
420   *
421   * <p>
422   * <strong>Review</strong>
423   *
424   * <p>
425   * If your app requests this permission Facebook will have to review how your app uses it.
426   */
427  @GraphAPI(since = "2.5")
428  PAGES_MANAGE_INSTANT_ARTICLES("pages_manage_instant_articles", Category.EVENTS_GROUPS_PAGES), //
429
430  /**
431   * Provides access to manage leads retrieved from Lead Ads of the Pages that you manage.
432   *
433   * <p>
434   * <strong>Review</strong>
435   *
436   * <p>
437   * If your app requests this permission Facebook will have to review how your app uses it.
438   */
439  @GraphAPI(since = "2.3")
440  PAGES_MANAGE_LEADS("pages_manage_leads", Category.EVENTS_GROUPS_PAGES), //
441
442  /**
443   * This allows you to send and receive messages through a Facebook Page.
444   *
445   * <p>
446   * This permission cannot be used to send promotional or advertising content. Conversations through this API can only
447   * begin when someone indicates—through a Messenger plugin or directly messaging you—that they want to receive
448   * messages from you.
449   *
450   * <p>
451   * <strong>Review</strong>
452   *
453   * <p>
454   * If your app requests this permission Facebook will have to review how your app uses it.
455   */
456  @GraphAPI(since = "2.6")
457  PAGES_MESSAGING("pages_messaging", Category.MESSAGING), //
458
459  /**
460   * This allows you to send and receive messages through a Facebook Page.
461   *
462   * <p>
463   * This permission cannot be used to send promotional or advertising content. Conversations through this API can only
464   * begin when someone indicates—through a Messenger plugin or directly messaging you—that they want to receive
465   * messages from you.
466   *
467   * <p>
468   * <strong>Review</strong>
469   *
470   * <p>
471   * If your app requests this permission Facebook will have to review how your app uses it.
472   */
473  @GraphAPI(since = "2.6")
474  PAGES_MESSAGING_PHONE_NUMBER("pages_messaging_phone_number", Category.MESSAGING), //
475
476  /**
477   * The {@code marketing_messages_messenger} permission allows an app to create, manage, send, and view the performance
478   * of paid marketing messages in Messenger using ad accounts authorized by the app user.
479   * <p>
480   * The allowed usage for this permission is to let a business send paid marketing messages in Messenger to people who
481   * opted in to receive announcement or promotional messages from Facebook Pages managed by that business.
482   */
483  MARKETING_MESSAGES_MESSENGER("marketing_messages_messenger", Category.MESSAGING), //
484
485  /**
486   * Provides the access to show the list of the Pages that you manage.
487   *
488   * <p>
489   * <strong>Review</strong>
490   *
491   * <p>
492   * If your app requests this permission Facebook will have to review how your app uses it.
493   */
494  @GraphAPI(since = "2.5")
495  PAGES_SHOW_LIST("pages_show_list", Category.EVENTS_GROUPS_PAGES), //
496
497  /**
498   * The pages_user_gender permission allows your app to access a user's gender through the Page your app is connected
499   * to.
500   * <p>
501   * Allowed Usage
502   *
503   * <ul>
504   * <li>Personalize experiences or recommendations based on gender.</li>
505   * <li>Use gendered language such as correct pronouns and titles.</li>
506   * </ul>
507   */
508  PAGES_USER_GENDER("pages_user_gender", Category.EVENTS_GROUPS_PAGES), //
509
510  /**
511   * The pages_user_locale permission allows your to app to a user's locale through the Page your app is connected to.
512   * <p>
513   * Allowed Usage
514   *
515   * <ul>
516   * <li>Personalize experiences based on the locale of a person by surfacing locale specific content.</li>
517   * <li>Send responses in the preferred language of the person.</li>
518   * <li>Display numbers, times, and dates correctly for the locale of the person.</li>
519   * </ul>
520   */
521  PAGES_USER_LOCALE("pages_user_locale", Category.EVENTS_GROUPS_PAGES), //
522
523  /**
524   * The pages_user_timezone permission grants your app access to a user's time zone through the Page your app is
525   * connected to.
526   * <p>
527   * Allowed Usage
528   *
529   * <ul>
530   * <li>Prevent messages from being sent at an inconvenient time.</li>
531   * <li>Send time sensitive content or recurring news at a specific time.</li>
532   * <li>Provide tailored content based on time.</li>
533   * <li>Send time appropriate greetings.</li>
534   * </ul>
535   */
536  PAGES_USER_TIMEZONE("pages_user_timezone", Category.EVENTS_GROUPS_PAGES), //
537
538  /**
539   * The {@code pages_utility_messaging} permission allows an app to access a Page's utility message templates.
540   * <p>
541   * The allowed usage for this permission is to manage a Page's utility message templates and send utility messages
542   * over Messenger.
543   */
544  PAGES_UTILITY_MESSAGING("pages_utility_messaging", Category.MESSAGING), //
545
546  /**
547   * The {@code pages_manage_posts} permission allows your app the ability to create, edit, and delete your Page posts.
548   *
549   * <p>
550   * If you have access to {@code pages_read_user_content}, you can also use {@code pages_manage_posts} to delete Page
551   * posts created by a User.
552   *
553   * <p>
554   * You can use this permission to create and delete content on the Page.
555   *
556   * <p>
557   * <strong>Review</strong>
558   *
559   * <p>
560   * If your app requests this permission Facebook will have to review how your app uses it.
561   *
562   * @since June 1, 2020
563   */
564  PAGES_MANAGE_POSTS("pages_manage_posts", Category.EVENTS_GROUPS_PAGES), //
565
566  /**
567   * The {@code pages_manage_engagement} permission allows your app the ability to create, edit, and delete comments
568   * posted on the Page.
569   *
570   * <p>
571   * If you have access to {@code pages_read_user_content}, you can also use {@code pages_manage_engagement} to delete
572   * comments posted by other Pages.
573   *
574   * <p>
575   * It also allows your app the ability to create and delete your own Page's likes to Page content.
576   *
577   * <p>
578   * You can use this permission if you need it to help manage and moderate content on the Page.
579   *
580   * <p>
581   * <strong>Review</strong>
582   *
583   * <p>
584   * If your app requests this permission Facebook will have to review how your app uses it.
585   *
586   * @since June 1, 2020
587   */
588  PAGES_MANAGE_ENGAGEMENT("pages_manage_engagement", Category.EVENTS_GROUPS_PAGES), //
589
590  /**
591   * The private_computation_access permission allows an app to access the Meta Private Computation products.
592   * <p>
593   * <strong>Allowed Usage</strong>
594   * <ul>
595   * <li>Monitor private attribution datasets for a business.</li>
596   * <li>Monitor instances for private attribution datasets for a business.</li>
597   * <li>Create and manage instances for private attribution datasets for a business.</li>
598   * </ul>
599   */
600  PRIVATE_COMPUTATION_ACCESS("private_computation_access", Category.OTHER), //
601
602  /**
603   * Gives an app the ability to post content into a group on behalf of a user who has granted the app this permission.
604   *
605   * <p>
606   * <strong>Review</strong>
607   *
608   * <p>
609   * If your app requests this permission Facebook will have to review how your app uses it.
610   *
611   * @deprecated no longer supported with Graph API 19.0 or after 22. April 2024
612   */
613  @GraphAPI(since = "3.0", until = "19.0")
614  @Deprecated
615  PUBLISH_TO_GROUPS("publish_to_groups", Category.EVENTS_GROUPS_PAGES), //
616
617  /**
618   * Grants an app permission to publish live videos to the app User's timeline.
619   *
620   * <p>
621   * <strong>Review</strong>
622   *
623   * <p>
624   * If your app requests this permission Facebook will have to review how your app uses it.
625   */
626  @GraphAPI(since = "3.1")
627  PUBLISH_VIDEO("publish_video", Category.LIVE_VIDEO), //
628
629  /**
630   * Gives your app the ability to receive member-related data on group content when a member has granted the app
631   * permission to do so.
632   *
633   * <p>
634   * <strong>Review</strong>
635   *
636   * <p>
637   * If your app requests this permission Facebook will have to review how your app uses it.
638   *
639   * @deprecated no longer supported with Graph API 19.0 or after 22. April 2024
640   */
641  @GraphAPI(since = "3.0", until = "19.0")
642  @Deprecated
643  GROUPS_ACCESS_MEMBER_INFO("groups_access_member_info", Category.EVENTS_GROUPS_PAGES), //
644
645  /**
646   * Provides read-only access to the Audience Network Insights data for Apps the person owns.
647   *
648   * <p>
649   * <strong>Review</strong>
650   *
651   * <p>
652   * If your app requests this permission Facebook will have to review how your app uses it.
653   */
654  @GraphAPI(since = "2.4")
655  READ_AUDIENCE_NETWORK_INSIGHTS("read_audience_network_insights", Category.OTHER), //
656
657  /**
658   * The research_apis permission allows your app to access data on public Facebook Pages, Groups, and Events within the
659   * Facebook Open Research and Transparency Tool.
660   * <p>
661   * <strong>Allowed Usage</strong>
662   * <p>
663   * Utilize public Facebook data for academic research.
664   */
665  RESEARCH_APIS("research_apis", Category.OTHER), //
666
667  /**
668   * The read_insights permission allows your app to read the Insights data for Pages, apps and web domains the person
669   * owns.
670   * <p>
671   * <strong>Allowed Usage</strong>
672   * <ul>
673   * <li>Integrate Facebook's app, page or domain insights into your own analytics tools..</li>
674   * </ul>
675   */
676  READ_INSIGHTS("read_insights", Category.OTHER), //
677
678  /**
679   * Provides the ability to set a person's attendee status on Facebook Events (eg attending, maybe, or declined).
680   *
681   * <p>
682   * This permission does not let you invite people to an event.
683   *
684   * <p>
685   * This permission does not let you update an event's details.
686   *
687   * <p>
688   * This permission does not let you create an event. There is no way to create an event via the API as of Graph API
689   * v2.0.
690   *
691   * <p>
692   * <strong>Review</strong>
693   *
694   * <p>
695   * If your app requests this permission Facebook will have to review how your app uses it.
696   */
697  RSVP_EVENT("rsvp_event", Category.EVENTS_GROUPS_PAGES), //
698
699  /**
700   * Read and write with Business Management API
701   *
702   * <p>
703   * <strong>Review</strong>
704   *
705   * <p>
706   * If your app requests this permission Facebook will have to review how your app uses it.
707   */
708  BUSINESS_MANAGEMENT("business_management", Category.EVENTS_GROUPS_PAGES), //
709
710  /**
711   * Grants your app the ability to create, read, update, and delete business owned product catalogs that the user is an
712   * admin of. This permission grants access to related endpoints. By default, your app may only access product catalogs
713   * that are owned by admins of the app when in developer mode.
714   *
715   * <p>
716   * <strong>Review</strong>
717   *
718   * <p>
719   * If your app requests this permission Facebook will have to review how your app uses it.
720   */
721  CATALOG_MANAGEMENT("catalog_management", Category.EVENTS_GROUPS_PAGES), //
722
723  /**
724   * The gaming_user_locale permission allows your app to get a user's preferred language while the user plays a game on
725   * Facebook (for example, Instant Games or Cloud Gaming).
726   * <p>
727   * <strong>Allowed Usage</strong>
728   * <p>
729   * Display a game interface in the user's preferred language.
730   */
731  GAMING_USER_LOCALE("gaming_user_locale", Category.EVENTS_GROUPS_PAGES), //
732
733  /**
734   * Grants your app permission to retrieve all the information captured within a
735   * <a href="https://developers.facebook.com/docs/marketing-api/guides/lead-ads/">lead.</a>
736   *
737   * <p>
738   * <strong>Review</strong>
739   *
740   * <p>
741   * If your app requests this permission Facebook will have to review how your app uses it.
742   */
743  @GraphAPI(since = "3.1")
744  LEADS_RETRIEVAL("leads_retrieval", Category.EVENTS_GROUPS_PAGES), //
745
746  /**
747   * The {@code manage_app_solutions} permission allows an app to get a list of apps that a user can manage and make API
748   * calls on behalf of those apps.
749   * <p>
750   * The allowed usage for this permission is to let a business create and manage partner solutions between technology
751   * providers and solution partners.
752   */
753  MANAGE_APP_SOLUTIONS("manage_app_solutions", Category.OTHER), //
754
755  /**
756   * The {@code manage_fundraisers} permission allows an app to create, update, and read a fundraiser and its donations
757   * on behalf of a user.
758   * <p>
759   * The allowed usage for this permission is to help fundraiser creators grow their reach on Facebook and synchronize
760   * fundraising totals with a linked Facebook fundraiser.
761   */
762  MANAGE_FUNDRAISERS("manage_fundraisers", Category.OTHER), //
763
764  /**
765   * This allows you to send and receive messages through a Facebook Page out of the 24h window opened by a user action.
766   *
767   * <p>
768   * This permission cannot be used to send promotional or advertising content.
769   *
770   * <p>
771   * <strong>Review</strong>
772   *
773   * <p>
774   * If your app requests this permission Facebook will have to review how your app uses it.
775   */
776  @GraphAPI(since = "2.6")
777  PAGES_MESSAGING_SUBSCRIPTIONS("pages_messaging_subscriptions", Category.MESSAGING), //
778
779  /**
780   * This allows you to charge users in Messenger conversations on behalf of pages.
781   *
782   * <p>
783   * Intended for tangible goods only, not virtual or subscriptions.
784   *
785   * <p>
786   * <strong>Review</strong>
787   *
788   * <p>
789   * If your app requests this permission Facebook will have to review how your app uses it.
790   */
791  @GraphAPI(since = "2.6")
792  PAGES_MESSAGING_PAYMENTS("pages_messaging_payments", Category.MESSAGING),
793
794  // Instagram Platform permissions
795
796  /**
797   * Provides the ability to read Instagram accounts you have access to.
798   *
799   * <p>
800   * Please see <a href="https://developers.facebook.com/docs/instagram-api/getting-started">Instagram's Getting Started
801   * Guide</a> for details.
802   *
803   * <p>
804   * <strong>Review</strong>
805   *
806   * <p>
807   * If your app requests this permission Facebook will have to review how your app uses it.
808   */
809  @GraphAPI(since = "2.5")
810  INSTAGRAM_BASIC("instagram_basic", Category.INSTAGRAM),
811
812  /**
813   * Provides the ability to read Instagram accounts you have access to.
814   *
815   * <p>
816   * Please see <a href="https://developers.facebook.com/docs/instagram-api/getting-started">Instagram's Getting Started
817   * Guide</a> for details.
818   *
819   * <p>
820   * <strong>Review</strong>
821   *
822   * <p>
823   * If your app requests this permission Facebook will have to review how your app uses it.
824   */
825  @GraphAPI(since = "2.5")
826  INSTAGRAM_MANAGE_COMMENTS("instagram_manage_comments", Category.INSTAGRAM),
827
828  /**
829   * The {@code instagram_creator_marketplace_discovery} permission allows an app to discover creators on Instagram
830   * Creator Marketplace and access insights such as creator bio, follower count, and account reach for eligible
831   * creators.
832   * <p>
833   * The allowed usage for this permission is for eligible Instagram businesses to retrieve creator insight data for
834   * discovery and campaign evaluation.
835   */
836  INSTAGRAM_CREATOR_MARKETPLACE_DISCOVERY("instagram_creator_marketplace_discovery", Category.INSTAGRAM), //
837
838  /**
839   * The {@code instagram_creator_marketplace_messaging} permission allows an app to retrieve a brand's partner
840   * conversations and a creator's messaging ID for partner messages.
841   * <p>
842   * The allowed usage for this permission is to allow brands in Instagram Creator Marketplace to message creators as
843   * part of paid partnership campaigns.
844   */
845  INSTAGRAM_CREATOR_MARKETPLACE_MESSAGING("instagram_creator_marketplace_messaging", Category.INSTAGRAM), //
846
847  /**
848   * The {@code instagram_manage_contents} permission allows an app to delete posts, stories, or reels on behalf of an
849   * Instagram account connected to a Facebook Page.
850   * <p>
851   * The allowed usage for this permission is to let an app user delete Instagram media.
852   */
853  INSTAGRAM_MANAGE_CONTENTS("instagram_manage_contents", Category.INSTAGRAM), //
854
855  /**
856   * The {@code instagram_manage_engagement} permission allows an app to create or delete likes for Instagram media,
857   * comments, and replies on behalf of an Instagram account connected to a Facebook Page.
858   * <p>
859   * The allowed usage for this permission is to let app users manage likes on Instagram media and comment objects.
860   */
861  INSTAGRAM_MANAGE_ENGAGEMENT("instagram_manage_engagement", Category.INSTAGRAM), //
862
863  /**
864   * The instagram_manage_events permission allows an app permission to log events (e.g., purchase, add-to-cart, leads)
865   * on behalf of Instagram accounts administered by the app’s users. The allowed usage for this permission is to log
866   * events on Instagram accounts and send this activity data to Meta for ads targeting, optimization and reporting; and
867   * to provide marketing and advertising analytics insights. You may also use this permission to request analytics
868   * insights to improve your app and for marketing or advertising purposes, through the use of aggregated and
869   * de-identified or anonymized information (provided such data cannot be re-identified).
870   * <p>
871   * <strong>Allowed Usage</strong>
872   * <ul>
873   * <li>Get metadata of an Instagram Business account.</li>
874   * <li>Get data insights of an Instagram Business account.</li>
875   * <li>Get story insights of an Instagram Business account.</li>
876   * </ul>
877   */
878  INSTAGRAM_MANAGE_EVENTS("instagram_manage_events", Category.INSTAGRAM), //
879
880  /**
881   * The {@code instagram_manage_upcoming_events} permission allows an app to read, create, and update upcoming events
882   * on behalf of Instagram accounts administered by people using the app.
883   * <p>
884   * The allowed usage for this permission is to manage upcoming events on Instagram accounts administered by app users.
885   */
886  INSTAGRAM_MANAGE_UPCOMING_EVENTS("instagram_manage_upcoming_events", Category.INSTAGRAM), //
887
888  /**
889   * Provides the ability to read insights of Instagram account you have access to.
890   *
891   * <p>
892   * Please see <a href="https://developers.facebook.com/docs/instagram-api/getting-started">Instagram's Getting Started
893   * Guide</a> for details.
894   *
895   * <p>
896   * <strong>Review</strong>
897   *
898   * <p>
899   * If your app requests this permission Facebook will have to review how your app uses it.
900   */
901  @GraphAPI(since = "2.5")
902  INSTAGRAM_MANAGE_INSIGHTS("instagram_manage_insights", Category.INSTAGRAM),
903
904  /**
905   * The instagram_manage_messages permission allows business users to read and respond to Instagram Direct messages.
906   *
907   * <p>
908   * Please see <a href="https://developers.facebook.com/docs/instagram-api/getting-started">Instagram's Getting Started
909   * Guide</a> for details.
910   *
911   * <p>
912   * <strong>Review</strong>
913   *
914   * <p>
915   * If your app requests this permission Facebook will have to review how your app uses it.
916   */
917  INSTAGRAM_MANAGE_MESSAGES("instagram_manage_messages", Category.INSTAGRAM),
918
919  /**
920   * The instagram_shopping_tag_products permission allows an app to tag Instagram media with product tags and appeal
921   * product rejections.
922   * <p>
923   * <strong>Allowed Usage</strong>
924   * <ul>
925   * <li>Check eligibility for product tagging</li>
926   * <li>Get catalogs and products</li>
927   * <li>Tag media with product tags</li>
928   * <li>Manage existing product tags</li>
929   * <li>Appeal product rejections</li>
930   * </ul>
931   */
932  INSTAGRAM_SHOPPING_TAG_PRODUCTS("instagram_shopping_tag_products", Category.INSTAGRAM), //
933
934  /**
935   * Provides the ability to publish content to Instagram account you have access to.
936   *
937   * <p>
938   * Please see <a href="https://developers.facebook.com/docs/instagram-api/reference/user/media_publish">Instagram's
939   * reference</a> for details.
940   *
941   * <p>
942   * <strong>Review</strong>
943   *
944   * <p>
945   * If your app requests this permission Facebook will have to review how your app uses it.
946   */
947  @GraphAPI(since = "2.5")
948  INSTAGRAM_CONTENT_PUBLISH("instagram_content_publish", Category.INSTAGRAM), //
949
950  /**
951   * The instagram_branded_content_ads_brand permission allows an app to read Instagram posts where the app user's
952   * Instagram account is tagged as a paid partner, and an app user to read, request, and revoke permissions to run
953   * Partnership Ads.
954   * <p>
955   * <strong>Allowed Usage</strong>
956   * <ul>
957   * <li>Read Instagram posts where the account is tagged as a paid partner</li>
958   * <li>Manage permissions to run Partnership Ads without needing a pre-existing post</li>
959   * </ul>
960   */
961  INSTAGRAM_BRANDED_CONTENT_ADS_BRAND("instagram_branded_content_ads_brand", Category.INSTAGRAM), //
962
963  /**
964   * The instagram_branded_content_brand permission allows your app to add, remove and view creators from a specific
965   * brand’s approved creators list. The allowed usage for this permission is to manage a specific brand’s Instagram
966   * creator content settings. You may also use this permission to request analytics insights to improve your app and
967   * for marketing or advertising purposes, through the use of aggregated and de-identified or anonymized information
968   * (provided such data cannot be re-identified).
969   * <p>
970   * <strong>Allowed Usage</strong>
971   * <ul>
972   * <li>Manage branded creator content settings on a business’ Instagram account.</li>
973   * </ul>
974   */
975  INSTAGRAM_BRANDED_CONTENT_BRAND("instagram_branded_content_brand", Category.INSTAGRAM), //
976
977  /**
978   * The instagram_branded_content_creator permission allows your app to read and change the boost status of a creator’s
979   * specific piece of content. The allowed usage for this permission is to manage Instagram creator content settings.
980   * You may also use this permission to request analytics insights to improve your app and for marketing or advertising
981   * purposes, through the use of aggregated and de-identified or anonymized information (provided such data cannot be
982   * re-identified).
983   * <p>
984   * <strong>Allowed Usage</strong>
985   * <ul>
986   * <li>Read and change an Instagram creator’s content settings.</li>
987   * </ul>
988   */
989  INSTAGRAM_BRANDED_CONTENT_CREATOR("instagram_branded_content_creator", Category.INSTAGRAM), //
990
991  /**
992   * The instagram_graph_user_media permission allows your app to read the Media node, which represents an image, video,
993   * or album and the node’s edges.
994   *
995   * <p>
996   * <strong>Review</strong>
997   *
998   * <p>
999   * If your app requests this permission Facebook will have to review how your app uses it.
1000   */
1001  INSTAGRAM_GRAPH_USER_MEDIA("instagram_graph_user_media", Category.INSTAGRAM), //
1002
1003  /**
1004   * The instagram_graph_user_profile permission allows your app to read the app user's profile.
1005   *
1006   * <p>
1007   * <strong>Review</strong>
1008   *
1009   * <p>
1010   * If your app requests this permission Facebook will have to review how your app uses it.
1011   */
1012  INSTAGRAM_GRAPH_USER_PROFILE("instagram_graph_user_profile", Category.INSTAGRAM), //
1013
1014  /**
1015   * The instagram_business_basic allows your app to read an Instagram Business account profile's info and media.
1016   * <p>
1017   * The allowed usage for this permission is to get basic metadata of an Instagram Business account profile, for
1018   * example username and ID.
1019   */
1020  INSTAGRAM_BUSINESS_BASIC("instagram_business_basic", Category.INSTAGRAM_BUSINESS), //
1021
1022  /**
1023   * The instagram_business_manage_comments permission allows an app to access comments on an Instagram professional
1024   * account, as well as public posts and Instagram Stories where that account is tagged or mentioned in comments. The
1025   * allowed usage for this permission is to create, update and delete comments for an Instagram professional account.
1026   */
1027  INSTAGRAM_BUSINESS_MANAGE_COMMENTS("instagram_business_manage_comments", Category.INSTAGRAM_BUSINESS), //
1028
1029  /**
1030   * The instagram_business_content_publish permission allows an app to create organic feed photo and video posts on
1031   * behalf of a business user.
1032   * <p>
1033   * The allowed usage of this permission is to allow an app to manage the organic content creation process for
1034   * Instagram (for example, post photos and videos) on behalf of an Instagram business account. You may also use this
1035   * permission to request analytics insights to improve your app and for marketing or advertising purposes, through the
1036   * use of aggregated and de-identified or anonymized information (provided such data cannot be re-identified).
1037   */
1038  INSTAGRAM_BUSINESS_CONTENT_PUBLISH("instagram_business_content_publish", Category.INSTAGRAM_BUSINESS), //
1039
1040  /**
1041   * The instagram_business_manage_messages permission allows an app to access messages on an Instagram professional
1042   * account.
1043   * <p>
1044   * The allowed usage for this permission is to view, manage and respond to messages, and to use third-party customer
1045   * relationship management (CRM) tools to manage messages.
1046   */
1047  INSTAGRAM_BUSINESS_MANAGE_MESSAGES("instagram_business_manage_messages", Category.INSTAGRAM_BUSINESS), //
1048
1049  /**
1050   * The instagram_business_manage_insights permission allows an app to fetch insights for an Instagram Business account
1051   * when using Business Login for Instagram.
1052   * <p>
1053   * According to: <a href="https://developers.facebook.com/docs/instagram-platform/insights">Instagram Platform
1054   * Insights</a>
1055   */
1056  INSTAGRAM_BUSINESS_MANAGE_INSIGHTS("instagram_business_manage_insights", Category.INSTAGRAM_BUSINESS), //
1057  /**
1058   * The user_media permission allows your app to read the Media node, which represents an image, video, or album and
1059   * the node’s edges using the Instagram Basic Display API.
1060   *
1061   * <p>
1062   * <strong>Review</strong>
1063   *
1064   * <p>
1065   * If your app requests this permission Facebook will have to review how your app uses it.
1066   */
1067  USER_MEDIA("user_media", Category.INSTAGRAM_BASIC_DISPLAY), //
1068
1069  /**
1070   * The user_profile permission allows your app to read the app user's profile using the Instagram Basic Display API.
1071   *
1072   * <p>
1073   * <strong>Review</strong>
1074   *
1075   * <p>
1076   * If your app requests this permission Facebook will have to review how your app uses it.
1077   */
1078  USER_PROFILE("user_profile", Category.INSTAGRAM_BASIC_DISPLAY), //
1079
1080  /**
1081   * The {@code whatsapp_business_manage_events} permission allows an app to log events, such as purchases, add-to-cart
1082   * actions, and leads, on behalf of a WhatsApp business account managed by an app user.
1083   * <p>
1084   * The allowed usage for this permission is to log events on WhatsApp business accounts and send event activity data
1085   * to Meta for ads targeting, optimization, and reporting.
1086   */
1087  WHATSAPP_BUSINESS_MANAGE_EVENTS("whatsapp_business_manage_events", Category.WHATSAPP), //
1088
1089  /**
1090   * Provides the ability to read and/or manage WhatsApp business assets you own or have been granted access to by other
1091   * businesses through this permission.
1092   * <p>
1093   * These business assets include WhatsApp business accounts, phone numbers, and message templates.
1094   *
1095   * <p>
1096   * Please see <a href=
1097   * "https://developers.facebook.com/docs/facebook-login/permissions/#reference-whatsapp_business_management">Whatsapps's
1098   * reference</a> for details.
1099   *
1100   * <p>
1101   * <strong>Review</strong>
1102   *
1103   * <p>
1104   * If your app requests this permission Facebook will have to review how your app uses it.
1105   */
1106  WHATSAPP_BUSINESS_MANAGEMENT("whatsapp_business_management", Category.WHATSAPP),
1107
1108  /**
1109   * The `whatsapp_business_messaging` permission allows an app to send WhatsApp messages to a specific phone number,
1110   * upload and retrieve media from messages, manage and get WhatsApp business profile information, and to register
1111   * those phone numbers with Meta.
1112   *
1113   * <p>
1114   * Please see
1115   * <a href= "https://developers.facebook.com/docs/permissions/reference/whatsapp_business_messaging">Whatsapps's
1116   * reference</a> for details.
1117   *
1118   * <p>
1119   * <strong>Review</strong>
1120   *
1121   * <p>
1122   * If your app requests this permission Facebook will have to review how your app uses it.
1123   */
1124  WHATSAPP_BUSINESS_MESSAGING("whatsapp_business_messaging", Category.WHATSAPP),
1125
1126  /**
1127   * The {@code threads_basic} permission allows an app to get a user's Threads profile information and the media and
1128   * text content that they posted to Threads.
1129   * <p>
1130   * The allowed usage for this permission is to display a user’s own Threads posts within an app, and make these
1131   * visible only to the user who created them. You may also use this permission to request analytics insights to
1132   * improve your app and for marketing or advertising purposes, through the use of aggregated and de-identified or
1133   * anonymized information (provided such data cannot be re-identified).
1134   * <p>
1135   * <strong>Allowed Usage</strong>
1136   * <ul>
1137   * <li>Display a user’s own Threads posts within an app, and make these visible only to the user who created them</li>
1138   * </ul>
1139   * <p>
1140   * <strong>Review</strong>
1141   *
1142   * <p>
1143   * If your app requests this permission Facebook will have to review how your app uses it.
1144   */
1145  THREADS_BASIC("threads_basic", Category.THREADS),
1146
1147  /**
1148   * The threads_business_basic permission allows an app to fetch the Threads account ID that is connected to an
1149   * Instagram account.
1150   * <p>
1151   * The allowed usage for this permission is to retrieve a Threads account ID to use as the {@code }threads_user_id}
1152   * during the creation of ads on Threads. You may also use this permission to request analytics insights to improve
1153   * your app and for marketing or advertising purposes, through the use of aggregated and de-identified or anonymized
1154   * information (provided such data cannot be re-identified).
1155   */
1156  THREADS_BUSINESS_BASIC("threads_business_basic", Category.THREADS),
1157
1158  /**
1159   * The {@code threads_content_publish} permission allows an app to create and publish content on behalf of a Threads
1160   * profile.
1161   * <p>
1162   * The allowed usage for this permission is to enable an app user to create and publish content to their Threads
1163   * profile. You may also use this permission to request analytics insights to improve your app and for marketing or
1164   * advertising purposes, through the use of aggregated and de-identified or anonymized information (provided such data
1165   * cannot be re-identified).
1166   * <p>
1167   * <strong>Allowed Usage</strong>
1168   * <ul>
1169   * <li>Enables an app user to create and publish content to their Threads profile</li>
1170   * </ul>
1171   *
1172   * <p>
1173   * <strong>Review</strong>
1174   * <p>
1175   * If your app requests this permission Facebook will have to review how your app uses it.
1176   */
1177  THREADS_CONTENT_PUBLISH("threads_content_publish", Category.THREADS),
1178
1179  /**
1180   * The {@code threads_manage_insights} permission allows your app to get access to insights for a Threads profile.
1181   * <p>
1182   * The allowed usage for this permission is to allow your app to get insights for a Threads profile and for individual
1183   * threads published by that profile. You may also use this permission to request analytics insights to improve your
1184   * app and for marketing or advertising purposes, through the use of aggregated and de-identified or anonymized
1185   * information (provided such data cannot be re-identified).
1186   * <p>
1187   * <strong>Allowed Usage</strong>
1188   * <ul>
1189   * <li>Get insights for a Threads profile</li>
1190   * <li>Get insights for individual threads published by that profile</li>
1191   * </ul>
1192   *
1193   * <p>
1194   * <strong>Review</strong>
1195   * <p>
1196   * If your app requests this permission Facebook will have to review how your app uses it.
1197   */
1198  THREADS_MANAGE_INSIGHTS("threads_manage_insights", Category.THREADS),
1199
1200  /**
1201   * The {@code threads_manage_replies} permission allows an app to create a reply on behalf of a Threads profile, hide
1202   * or unhide replies to a thread, and control who can reply to a thread on the Threads profile.
1203   * <p>
1204   * The allowed usage of this permission is to allow an app to create a reply on behalf of a Threads profile, hide or
1205   * unhide replies to a thread, and control who can reply to a thread on the Threads profile. You may also use this
1206   * permission to request analytics insights to improve your app and for marketing or advertising purposes, through the
1207   * use of aggregated and de-identified or anonymized information (provided such data cannot be re-identified).
1208   * <p>
1209   * <strong>Allowed Usage</strong>
1210   * <ul>
1211   * <li>Create a reply on behalf of a Threads profile</li>
1212   * <li>Hide or unhide replies to a thread</li>
1213   * <li>Control who can reply to a thread on the Threads profile</li>
1214   * </ul>
1215   *
1216   * <p>
1217   * <strong>Review</strong>
1218   * <p>
1219   * If your app requests this permission Facebook will have to review how your app uses it.
1220   */
1221  THREADS_MANAGE_REPLIES("threads_manage_replies", Category.THREADS),
1222
1223  /**
1224   * The {@code }threads_profile_discovery} permission allows an app to access profiles for public Threads accounts and
1225   * public posts of these accounts.
1226   * <p>
1227   * The allowed usage for this permission is to allow the app's users to find profiles of public Threads accounts and
1228   * public posts of these accounts to conduct competitor analyses.
1229   */
1230  THREADS_PROFILE_DISCOVERY("threads_profile_discovery", Category.THREADS),
1231
1232  /**
1233   * The {@code threads_read_replies} permission allows an app to read replies to a user's thread.
1234   * <p>
1235   * The allowed usage for this permission is to get replies to a thread owned by the app user. You may also use this
1236   * permission to request analytics insights to improve your app and for marketing or advertising purposes, through the
1237   * use of aggregated and de-identified or anonymized information (provided such data cannot be re-identified).
1238   * <p>
1239   * <strong>Allowed Usage</strong>
1240   * <ul>
1241   * <li>Get replies to a thread owned by the app user</li>
1242   * </ul>
1243   *
1244   * <p>
1245   * <strong>Review</strong>
1246   * <p>
1247   * If your app requests this permission Facebook will have to review how your app uses it.
1248   */
1249  THREADS_READ_REPLIES("threads_read_replies", Category.THREADS),
1250
1251  /**
1252   * The {@code threads_share_to_instagram} permission allows an app to post an app user's Threads post to their linked
1253   * Instagram account on behalf of the user.
1254   * <p>
1255   * The allowed usage for this permission is to let a user share Threads content to their linked Instagram account, as
1256   * a one-time action or automatically for future posts.
1257   */
1258  THREADS_SHARE_TO_INSTAGRAM("threads_share_to_instagram", Category.THREADS),
1259
1260  /**
1261   * The {@code threads_location_tagging} permission allows an app to search for and fetch public locations using
1262   * specific queries/keywords or coordinates on behalf of a Threads user and publish media with a location tagged.
1263   * <p>
1264   * The allowed usage for this permission is to help users tag public locations to their posts and request locations
1265   * when media is retrieved
1266   */
1267  THREADS_LOCATION_TAGGING("threads_location_tagging", Category.THREADS),
1268
1269  /**
1270   * The {@code threads_manage_mentions} permission allows an app to fetch content where the user is mentioned in on
1271   * behalf of a Threads user.
1272   * <p>
1273   * The allowed usage for this permission is to help the user manage their social media presence, which includes:
1274   * showing public content and the public content tree that a user is mentioned in, enabling the user to sort user’s
1275   * own mentioned threads, and enabling the user to publish responses to the public content tree that the user is
1276   * mentioned in.
1277   * <p>
1278   * You may also use this permission to request analytics insights to improve your app and for marketing or advertising
1279   * purposes, through the use of aggregated and de-identified or anonymized information (provided such data cannot be
1280   * re-identified).
1281   *
1282   * <p>
1283   * <strong>Allowed Usage</strong>
1284   * <ul>
1285   * <li>Showing public content and the public content tree that a user is mentioned in.</li>
1286   * <li>Giving the user the ability to sort user’s own mentioned threads.</li>
1287   * <li>Giving the user the ability to publish responses to public content that a user is mentioned in.</li>
1288   * </ul>
1289   * <p>
1290   * <strong>Review</strong>
1291   * <p>
1292   * If your app requests this permission Facebook will have to review how your app uses it.
1293   */
1294  THREADS_MANAGE_MENTIONS("threads_manage_mentions", Category.THREADS),
1295
1296  /**
1297   * The {@code threads_keyword_search} permission allows an app to search and fetch content with a specific keyword on
1298   * behalf of a Threads user.
1299   * <p>
1300   * The permission also allows for publishing responses to this fetched content. The allowed usage for this permission
1301   * is to help the user manage their social media presence. You may also use this permission to request analytics
1302   * insights to improve your app and for marketing or advertising purposes, through the use of aggregated and
1303   * de-identified or anonymized information (provided such data cannot be re-identified).
1304   * <p>
1305   * <strong>Allowed Usage</strong>
1306   * <ul>
1307   * <li>Showing public content and the public content tree that a user searches using a specific keyword.</li>
1308   * <li>Giving the user the ability to sort user’s own mentioned threads.</li>
1309   * <li>Giving the user the ability to publish responses to public content that the user searches for.</li>
1310   * </ul>
1311   * <p>
1312   * <strong>Review</strong>
1313   * <p>
1314   * If your app requests this permission Facebook will have to review how your app uses it.
1315   */
1316  THREADS_KEYWORD_SEARCH("threads_keyword_search", Category.THREADS),
1317
1318  /**
1319   * The {@code threads_delete} permission allows an app to delete an app user's Threads posts.
1320   * <p>
1321   * <strong>Allowed Usage</strong>
1322   * <ul>
1323   * <li>The allowed usage for this permission is to delete an app user's Thread posts</li>
1324   * </ul>
1325   * <p>
1326   * <strong>Review</strong>
1327   * <p>
1328   * If your app requests this permission Facebook will have to review how your app uses it.
1329   */
1330  THREADS_DELETE("threads_delete", Category.THREADS),
1331
1332  /**
1333   * The commerce_account manage_orders permission allows your app to read and update commerce account orders.
1334   *
1335   * <p>
1336   * <strong>Allowed Usage</strong>
1337   * <ul>
1338   * <li>Read orders in your commerce account.</li>
1339   * <li>Tech providers manage orders on behalf of their customers.</li>
1340   * <li>Access to Webhook notifications.</li>
1341   * </ul>
1342   */
1343  COMMERCE_ACCOUNT_MANAGE_ORDERS("commerce_account_manage_orders", Category.COMMERCE),
1344
1345  /**
1346   * The commerce_account_read_orders permission allows your app to read commerce account orders.
1347   * <p>
1348   * <strong>Allowed Usage</strong>
1349   * <ul>
1350   * <li>Read orders in your commerce account.</li>
1351   * <li>Use the buyer's email address for marketing purposes only if a buyer has opted-in at checkout.</li>
1352   * </ul>
1353   */
1354  COMMERCE_ACCOUNT_READ_ORDERS("commerce_account_read_orders", Category.COMMERCE),
1355
1356  /**
1357   * The commerce_account_read_reports permission allows your app to read finance reporting data to build custom tax,
1358   * cash reconciliation and reimbursement reports for a commerce account.
1359   * <p>
1360   * <strong>Allowed Usage</strong>
1361   * <ul>
1362   * <li>Read finance reporting data in your commerce account for building custom tax cash reconciliation and
1363   * reimbursement reports.</li>
1364   * <li>Tech providers can run finance reports on behalf of their customers.</li>
1365   * </ul>
1366   */
1367  COMMERCE_ACCOUNT_READ_REPORTS("commerce_account_read_reports", Category.COMMERCE),
1368
1369  /**
1370   * The commerce_account_read_settings permission allows your app to read commerce account settings. Allowed Usage
1371   * <ul>
1372   * <li>Read basic commerce account information like connected channels, shipping options, fulfillment locations, etc.
1373   * </ul>
1374   */
1375  COMMERCE_ACCOUNT_READ_SETTINGS("commerce_account_read_settings", Category.COMMERCE),
1376
1377  /**
1378   * The commerce_manage_accounts permission allows your app to create and manage commerce accounts, such as an
1379   * ecommerce app
1380   * <p>
1381   * <strong>Allowed Usage</strong>
1382   * <ul>
1383   * <li>Associate your app with your commerce account.</li>
1384   * <li>Tech providers create a commerce account on behalf of their customers.</li>
1385   * <li>Tech providers enable a new sales channel within their customer’s commerce account.</li>
1386   * </ul>
1387   */
1388  COMMERCE_MANAGE_ACCOUNTS("commerce_manage_accounts", Category.COMMERCE),
1389
1390  ;
1391
1392  private final String permissionString;
1393
1394  private final Category category;
1395
1396  FacebookPermissions(String facebookPermissionString, Category category) {
1397    this.permissionString = facebookPermissionString;
1398    this.category = category;
1399  }
1400
1401  public String getPermissionString() {
1402    return this.permissionString;
1403  }
1404
1405  public Category getCategory() {
1406    return this.category;
1407  }
1408
1409  public enum Category {
1410    PUBLIC, USER_DATA, EVENTS_GROUPS_PAGES, OTHER, MESSAGING, INSTAGRAM, INSTAGRAM_BASIC_DISPLAY, LIVE_VIDEO, WHATSAPP, COMMERCE, INSTAGRAM_BUSINESS, THREADS
1411  }
1412}