@atproto/api 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/client/index.d.ts +12 -0
  3. package/dist/client/index.d.ts.map +1 -1
  4. package/dist/client/index.js +22 -0
  5. package/dist/client/index.js.map +1 -1
  6. package/dist/client/lexicons.d.ts +1658 -22
  7. package/dist/client/lexicons.d.ts.map +1 -1
  8. package/dist/client/lexicons.js +890 -11
  9. package/dist/client/lexicons.js.map +1 -1
  10. package/dist/client/types/app/bsky/feed/defs.d.ts +4 -0
  11. package/dist/client/types/app/bsky/feed/defs.d.ts.map +1 -1
  12. package/dist/client/types/app/bsky/feed/defs.js.map +1 -1
  13. package/dist/client/types/app/bsky/feed/getListFeed.d.ts +4 -0
  14. package/dist/client/types/app/bsky/feed/getListFeed.d.ts.map +1 -1
  15. package/dist/client/types/app/bsky/feed/getListFeed.js.map +1 -1
  16. package/dist/client/types/app/bsky/feed/getQuotes.d.ts +2 -0
  17. package/dist/client/types/app/bsky/feed/getQuotes.d.ts.map +1 -1
  18. package/dist/client/types/app/bsky/feed/getQuotes.js.map +1 -1
  19. package/dist/client/types/app/bsky/feed/getTimeline.d.ts +4 -0
  20. package/dist/client/types/app/bsky/feed/getTimeline.d.ts.map +1 -1
  21. package/dist/client/types/app/bsky/feed/getTimeline.js.map +1 -1
  22. package/dist/client/types/app/bsky/notification/getGroupedNotifications.d.ts +234 -0
  23. package/dist/client/types/app/bsky/notification/getGroupedNotifications.d.ts.map +1 -0
  24. package/dist/client/types/app/bsky/notification/getGroupedNotifications.js +189 -0
  25. package/dist/client/types/app/bsky/notification/getGroupedNotifications.js.map +1 -0
  26. package/dist/client/types/tools/ozone/inbox/appealActionedSubject.d.ts +65 -0
  27. package/dist/client/types/tools/ozone/inbox/appealActionedSubject.d.ts.map +1 -0
  28. package/dist/client/types/tools/ozone/inbox/appealActionedSubject.js +65 -0
  29. package/dist/client/types/tools/ozone/inbox/appealActionedSubject.js.map +1 -0
  30. package/dist/client/types/tools/ozone/inbox/defs.d.ts +68 -0
  31. package/dist/client/types/tools/ozone/inbox/defs.d.ts.map +1 -0
  32. package/dist/client/types/tools/ozone/inbox/defs.js +38 -0
  33. package/dist/client/types/tools/ozone/inbox/defs.js.map +1 -0
  34. package/dist/client/types/tools/ozone/queue/createQueue.d.ts +2 -0
  35. package/dist/client/types/tools/ozone/queue/createQueue.d.ts.map +1 -1
  36. package/dist/client/types/tools/ozone/queue/createQueue.js.map +1 -1
  37. package/dist/client/types/tools/ozone/queue/defs.d.ts +2 -0
  38. package/dist/client/types/tools/ozone/queue/defs.d.ts.map +1 -1
  39. package/dist/client/types/tools/ozone/queue/defs.js.map +1 -1
  40. package/dist/client/types/tools/ozone/queue/updateQueue.d.ts +5 -0
  41. package/dist/client/types/tools/ozone/queue/updateQueue.d.ts.map +1 -1
  42. package/dist/client/types/tools/ozone/queue/updateQueue.js +7 -0
  43. package/dist/client/types/tools/ozone/queue/updateQueue.js.map +1 -1
  44. package/dist/client/types/tools/ozone/report/defs.d.ts +49 -9
  45. package/dist/client/types/tools/ozone/report/defs.d.ts.map +1 -1
  46. package/dist/client/types/tools/ozone/report/defs.js.map +1 -1
  47. package/package.json +7 -7
@@ -3475,6 +3475,14 @@ export const schemaDict = {
3475
3475
  type: 'ref',
3476
3476
  ref: 'lex:app.bsky.feed.defs#replyRef',
3477
3477
  },
3478
+ opThreadPostIndex: {
3479
+ type: 'integer',
3480
+ description: 'The 1-indexed position of this post within the contiguous OP thread. Only present when this post is part of the OP thread.',
3481
+ },
3482
+ opThreadPostCount: {
3483
+ type: 'integer',
3484
+ description: 'The total number of posts in the contiguous OP thread that this post belongs to. Only present when this post is part of the OP thread.',
3485
+ },
3478
3486
  reason: {
3479
3487
  type: 'union',
3480
3488
  refs: [
@@ -4450,6 +4458,10 @@ export const schemaDict = {
4450
4458
  cursor: {
4451
4459
  type: 'string',
4452
4460
  },
4461
+ since: {
4462
+ type: 'string',
4463
+ description: 'Return only items newer than the position identified by this cursor value, newest first. Use the startCursor from a previous response. The item at that position is not returned because the caller already holds it. When the bounded range is exhausted, the returned cursor equals this value so that pagination continues below the boundary.',
4464
+ },
4453
4465
  },
4454
4466
  },
4455
4467
  output: {
@@ -4461,6 +4473,10 @@ export const schemaDict = {
4461
4473
  cursor: {
4462
4474
  type: 'string',
4463
4475
  },
4476
+ startCursor: {
4477
+ type: 'string',
4478
+ description: 'Cursor identifying the newest item in this page. Pass it as since on a later request to fetch only newer content.',
4479
+ },
4464
4480
  feed: {
4465
4481
  type: 'array',
4466
4482
  items: {
@@ -4611,6 +4627,11 @@ export const schemaDict = {
4611
4627
  cursor: {
4612
4628
  type: 'string',
4613
4629
  },
4630
+ sort: {
4631
+ type: 'string',
4632
+ knownValues: ['latest', 'top'],
4633
+ description: "Ordering of results. 'latest' (default when unset) is newest first; 'top' orders quotes by their like count.",
4634
+ },
4614
4635
  },
4615
4636
  },
4616
4637
  output: {
@@ -4771,6 +4792,10 @@ export const schemaDict = {
4771
4792
  cursor: {
4772
4793
  type: 'string',
4773
4794
  },
4795
+ since: {
4796
+ type: 'string',
4797
+ description: 'Return only items newer than the position identified by this cursor value, newest first. Use the startCursor from a previous response. The item at that position is not returned because the caller already holds it. When the bounded range is exhausted, the returned cursor equals this value so that pagination continues below the boundary.',
4798
+ },
4774
4799
  },
4775
4800
  },
4776
4801
  output: {
@@ -4782,6 +4807,10 @@ export const schemaDict = {
4782
4807
  cursor: {
4783
4808
  type: 'string',
4784
4809
  },
4810
+ startCursor: {
4811
+ type: 'string',
4812
+ description: 'Cursor identifying the newest item in this page. Pass it as since on a later request to fetch only newer content.',
4813
+ },
4785
4814
  feed: {
4786
4815
  type: 'array',
4787
4816
  items: {
@@ -7572,6 +7601,484 @@ export const schemaDict = {
7572
7601
  },
7573
7602
  },
7574
7603
  },
7604
+ AppBskyNotificationGetGroupedNotifications: {
7605
+ lexicon: 1,
7606
+ id: 'app.bsky.notification.getGroupedNotifications',
7607
+ defs: {
7608
+ main: {
7609
+ type: 'query',
7610
+ description: '[UNSTABLE - DO NOT USE THIS ENDPOINT WHILE THIS NOTE IS HERE] Enumerate notifications for the requesting account, pre-grouped for rendering. Supersedes listNotifications. Requires auth.',
7611
+ parameters: {
7612
+ type: 'params',
7613
+ properties: {
7614
+ feed: {
7615
+ type: 'string',
7616
+ description: "Which notification feed to return. Grouping behavior varies by feed: notifications about follows might be grouped in 'all' and ungrouped (or rather, in single-item groups) in 'followers'.",
7617
+ maxLength: 32,
7618
+ knownValues: [
7619
+ 'all',
7620
+ 'people-i-follow',
7621
+ 'conversations',
7622
+ 'followers',
7623
+ 'activity',
7624
+ ],
7625
+ default: 'all',
7626
+ },
7627
+ limit: {
7628
+ type: 'integer',
7629
+ description: 'Maximum number of groups to return.',
7630
+ minimum: 1,
7631
+ maximum: 50,
7632
+ default: 30,
7633
+ },
7634
+ cursor: {
7635
+ type: 'string',
7636
+ maxLength: 1024,
7637
+ },
7638
+ },
7639
+ },
7640
+ output: {
7641
+ encoding: 'application/json',
7642
+ schema: {
7643
+ type: 'object',
7644
+ required: ['groups'],
7645
+ properties: {
7646
+ cursor: {
7647
+ type: 'string',
7648
+ maxLength: 1024,
7649
+ },
7650
+ groups: {
7651
+ type: 'array',
7652
+ description: 'Notification groups or individual notifications, newest first. Clients should ignore kinds they do not recognize. Grouping behavior depends on the kind and selected feed.',
7653
+ items: {
7654
+ type: 'ref',
7655
+ ref: 'lex:app.bsky.notification.getGroupedNotifications#group',
7656
+ },
7657
+ },
7658
+ seenAt: {
7659
+ type: 'string',
7660
+ format: 'datetime',
7661
+ },
7662
+ relatedViews: {
7663
+ type: 'array',
7664
+ description: 'Reusable views referenced by notifications. Views shared across notifications appear once to avoid duplication. Each group contributes only its first 10 of each related view to this array. Ex: for a group containing likes in a post, we might have a large number of likeItem (e.g., 50) in a group, but only the profile views for the newest 10 items will be included here.',
7665
+ items: {
7666
+ type: 'union',
7667
+ refs: [
7668
+ 'lex:app.bsky.actor.defs#profileViewDetailed',
7669
+ 'lex:app.bsky.feed.defs#blockedPost',
7670
+ 'lex:app.bsky.feed.defs#generatorView',
7671
+ 'lex:app.bsky.feed.defs#notFoundPost',
7672
+ 'lex:app.bsky.feed.defs#postView',
7673
+ 'lex:app.bsky.graph.defs#starterPackView',
7674
+ ],
7675
+ },
7676
+ },
7677
+ },
7678
+ },
7679
+ },
7680
+ },
7681
+ group: {
7682
+ type: 'object',
7683
+ description: 'Contains common metadata and kind-specific data for a notification group or individual notification.',
7684
+ required: ['id', 'isRead', 'indexedAt', 'count', 'kind'],
7685
+ properties: {
7686
+ id: {
7687
+ type: 'string',
7688
+ maxLength: 256,
7689
+ },
7690
+ isRead: {
7691
+ type: 'boolean',
7692
+ },
7693
+ indexedAt: {
7694
+ type: 'string',
7695
+ format: 'datetime',
7696
+ },
7697
+ count: {
7698
+ type: 'integer',
7699
+ minimum: 1,
7700
+ },
7701
+ kind: {
7702
+ type: 'union',
7703
+ refs: [
7704
+ 'lex:app.bsky.notification.getGroupedNotifications#likeGroup',
7705
+ 'lex:app.bsky.notification.getGroupedNotifications#multiPostLikeGroup',
7706
+ 'lex:app.bsky.notification.getGroupedNotifications#repostGroup',
7707
+ 'lex:app.bsky.notification.getGroupedNotifications#likeViaRepostGroup',
7708
+ 'lex:app.bsky.notification.getGroupedNotifications#repostViaRepostGroup',
7709
+ 'lex:app.bsky.notification.getGroupedNotifications#followGroup',
7710
+ 'lex:app.bsky.notification.getGroupedNotifications#subscribedPostGroup',
7711
+ 'lex:app.bsky.notification.getGroupedNotifications#generatorLikeGroup',
7712
+ 'lex:app.bsky.notification.getGroupedNotifications#replyNotification',
7713
+ 'lex:app.bsky.notification.getGroupedNotifications#quoteNotification',
7714
+ 'lex:app.bsky.notification.getGroupedNotifications#mentionNotification',
7715
+ 'lex:app.bsky.notification.getGroupedNotifications#followBackNotification',
7716
+ 'lex:app.bsky.notification.getGroupedNotifications#verifiedNotification',
7717
+ 'lex:app.bsky.notification.getGroupedNotifications#unverifiedNotification',
7718
+ 'lex:app.bsky.notification.getGroupedNotifications#starterPackJoinedNotification',
7719
+ 'lex:app.bsky.notification.getGroupedNotifications#contactMatchNotification',
7720
+ ],
7721
+ },
7722
+ },
7723
+ },
7724
+ likeGroup: {
7725
+ type: 'object',
7726
+ description: 'Group of likes by different actors on the same post.',
7727
+ required: ['post', 'items'],
7728
+ properties: {
7729
+ post: {
7730
+ type: 'string',
7731
+ format: 'at-uri',
7732
+ },
7733
+ items: {
7734
+ type: 'array',
7735
+ minLength: 1,
7736
+ items: {
7737
+ type: 'ref',
7738
+ ref: 'lex:app.bsky.notification.getGroupedNotifications#likeItem',
7739
+ },
7740
+ },
7741
+ },
7742
+ },
7743
+ likeItem: {
7744
+ type: 'object',
7745
+ description: "One actor who liked the group's post.",
7746
+ required: ['actor'],
7747
+ properties: {
7748
+ actor: {
7749
+ type: 'string',
7750
+ format: 'did',
7751
+ },
7752
+ },
7753
+ },
7754
+ multiPostLikeGroup: {
7755
+ type: 'object',
7756
+ description: 'Group of likes by the same actor on different posts.',
7757
+ required: ['actor', 'items'],
7758
+ properties: {
7759
+ actor: {
7760
+ type: 'string',
7761
+ format: 'did',
7762
+ },
7763
+ items: {
7764
+ type: 'array',
7765
+ minLength: 2,
7766
+ items: {
7767
+ type: 'ref',
7768
+ ref: 'lex:app.bsky.notification.getGroupedNotifications#multiPostLikeItem',
7769
+ },
7770
+ },
7771
+ },
7772
+ },
7773
+ multiPostLikeItem: {
7774
+ type: 'object',
7775
+ description: "One post which was liked by the group's actor.",
7776
+ required: ['post'],
7777
+ properties: {
7778
+ post: {
7779
+ type: 'string',
7780
+ format: 'at-uri',
7781
+ },
7782
+ },
7783
+ },
7784
+ repostGroup: {
7785
+ type: 'object',
7786
+ description: 'Group of reposts by different actors of the same post.',
7787
+ required: ['post', 'items'],
7788
+ properties: {
7789
+ post: {
7790
+ type: 'string',
7791
+ format: 'at-uri',
7792
+ },
7793
+ items: {
7794
+ type: 'array',
7795
+ minLength: 1,
7796
+ items: {
7797
+ type: 'ref',
7798
+ ref: 'lex:app.bsky.notification.getGroupedNotifications#repostItem',
7799
+ },
7800
+ },
7801
+ },
7802
+ },
7803
+ repostItem: {
7804
+ type: 'object',
7805
+ description: "One actor who reposted the group's post.",
7806
+ required: ['actor'],
7807
+ properties: {
7808
+ actor: {
7809
+ type: 'string',
7810
+ format: 'did',
7811
+ },
7812
+ },
7813
+ },
7814
+ likeViaRepostGroup: {
7815
+ type: 'object',
7816
+ description: "Group of likes by different actors on the same post via the requesting account's repost.",
7817
+ required: ['post', 'viaRepost', 'items'],
7818
+ properties: {
7819
+ post: {
7820
+ type: 'string',
7821
+ format: 'at-uri',
7822
+ },
7823
+ viaRepost: {
7824
+ type: 'string',
7825
+ format: 'at-uri',
7826
+ },
7827
+ items: {
7828
+ type: 'array',
7829
+ minLength: 1,
7830
+ items: {
7831
+ type: 'ref',
7832
+ ref: 'lex:app.bsky.notification.getGroupedNotifications#likeViaRepostItem',
7833
+ },
7834
+ },
7835
+ },
7836
+ },
7837
+ likeViaRepostItem: {
7838
+ type: 'object',
7839
+ description: "One actor who liked the group's post via the requesting account's repost.",
7840
+ required: ['actor'],
7841
+ properties: {
7842
+ actor: {
7843
+ type: 'string',
7844
+ format: 'did',
7845
+ },
7846
+ },
7847
+ },
7848
+ repostViaRepostGroup: {
7849
+ type: 'object',
7850
+ description: "Group of reposts by different actors of the same post via the requesting account's repost.",
7851
+ required: ['post', 'viaRepost', 'items'],
7852
+ properties: {
7853
+ post: {
7854
+ type: 'string',
7855
+ format: 'at-uri',
7856
+ },
7857
+ viaRepost: {
7858
+ type: 'string',
7859
+ format: 'at-uri',
7860
+ },
7861
+ items: {
7862
+ type: 'array',
7863
+ minLength: 1,
7864
+ items: {
7865
+ type: 'ref',
7866
+ ref: 'lex:app.bsky.notification.getGroupedNotifications#repostViaRepostItem',
7867
+ },
7868
+ },
7869
+ },
7870
+ },
7871
+ repostViaRepostItem: {
7872
+ type: 'object',
7873
+ description: "One actor who reposted the group's post via the requesting account's repost.",
7874
+ required: ['actor'],
7875
+ properties: {
7876
+ actor: {
7877
+ type: 'string',
7878
+ format: 'did',
7879
+ },
7880
+ },
7881
+ },
7882
+ followGroup: {
7883
+ type: 'object',
7884
+ description: 'Group of actors who followed the requesting account.',
7885
+ required: ['items'],
7886
+ properties: {
7887
+ items: {
7888
+ type: 'array',
7889
+ minLength: 1,
7890
+ items: {
7891
+ type: 'ref',
7892
+ ref: 'lex:app.bsky.notification.getGroupedNotifications#followItem',
7893
+ },
7894
+ },
7895
+ },
7896
+ },
7897
+ followItem: {
7898
+ type: 'object',
7899
+ description: 'An actor who followed the requesting account, possibly via a starter pack.',
7900
+ required: ['actor'],
7901
+ properties: {
7902
+ actor: {
7903
+ type: 'string',
7904
+ format: 'did',
7905
+ },
7906
+ starterPack: {
7907
+ type: 'string',
7908
+ format: 'at-uri',
7909
+ },
7910
+ },
7911
+ },
7912
+ subscribedPostGroup: {
7913
+ type: 'object',
7914
+ description: 'Group of new posts by actors the requesting account subscribes to.',
7915
+ required: ['items'],
7916
+ properties: {
7917
+ items: {
7918
+ type: 'array',
7919
+ minLength: 1,
7920
+ items: {
7921
+ type: 'ref',
7922
+ ref: 'lex:app.bsky.notification.getGroupedNotifications#subscribedPostItem',
7923
+ },
7924
+ },
7925
+ },
7926
+ },
7927
+ subscribedPostItem: {
7928
+ type: 'object',
7929
+ description: 'One new post by an actor the requesting account subscribes to.',
7930
+ required: ['actor', 'post'],
7931
+ properties: {
7932
+ actor: {
7933
+ type: 'string',
7934
+ format: 'did',
7935
+ },
7936
+ post: {
7937
+ type: 'string',
7938
+ format: 'at-uri',
7939
+ },
7940
+ },
7941
+ },
7942
+ generatorLikeGroup: {
7943
+ type: 'object',
7944
+ description: 'Group of likes by different actors on the same feed generator.',
7945
+ required: ['generator', 'items'],
7946
+ properties: {
7947
+ generator: {
7948
+ type: 'string',
7949
+ format: 'at-uri',
7950
+ },
7951
+ items: {
7952
+ type: 'array',
7953
+ minLength: 1,
7954
+ items: {
7955
+ type: 'ref',
7956
+ ref: 'lex:app.bsky.notification.getGroupedNotifications#generatorLikeItem',
7957
+ },
7958
+ },
7959
+ },
7960
+ },
7961
+ generatorLikeItem: {
7962
+ type: 'object',
7963
+ description: 'One actor who liked the feed generator in the group.',
7964
+ required: ['actor'],
7965
+ properties: {
7966
+ actor: {
7967
+ type: 'string',
7968
+ format: 'did',
7969
+ },
7970
+ },
7971
+ },
7972
+ replyNotification: {
7973
+ type: 'object',
7974
+ description: 'A reply to a post by the requesting account or to a thread they are participating in.',
7975
+ required: ['post', 'parent'],
7976
+ properties: {
7977
+ post: {
7978
+ type: 'string',
7979
+ format: 'at-uri',
7980
+ },
7981
+ parent: {
7982
+ type: 'string',
7983
+ format: 'at-uri',
7984
+ },
7985
+ },
7986
+ },
7987
+ quoteNotification: {
7988
+ type: 'object',
7989
+ description: 'A post quoting a post by the requesting account.',
7990
+ required: ['post'],
7991
+ properties: {
7992
+ post: {
7993
+ type: 'string',
7994
+ format: 'at-uri',
7995
+ },
7996
+ parent: {
7997
+ type: 'string',
7998
+ format: 'at-uri',
7999
+ },
8000
+ },
8001
+ },
8002
+ mentionNotification: {
8003
+ type: 'object',
8004
+ description: 'A post mentioning the requesting account.',
8005
+ required: ['post'],
8006
+ properties: {
8007
+ post: {
8008
+ type: 'string',
8009
+ format: 'at-uri',
8010
+ },
8011
+ parent: {
8012
+ type: 'string',
8013
+ format: 'at-uri',
8014
+ },
8015
+ },
8016
+ },
8017
+ followBackNotification: {
8018
+ type: 'object',
8019
+ description: 'An actor followed the requesting account back, possibly via a starter pack.',
8020
+ required: ['actor'],
8021
+ properties: {
8022
+ actor: {
8023
+ type: 'string',
8024
+ format: 'did',
8025
+ },
8026
+ starterPack: {
8027
+ type: 'string',
8028
+ format: 'at-uri',
8029
+ },
8030
+ },
8031
+ },
8032
+ verifiedNotification: {
8033
+ type: 'object',
8034
+ description: 'An actor verified the requesting account.',
8035
+ required: ['actor'],
8036
+ properties: {
8037
+ actor: {
8038
+ type: 'string',
8039
+ format: 'did',
8040
+ },
8041
+ },
8042
+ },
8043
+ unverifiedNotification: {
8044
+ type: 'object',
8045
+ description: 'A verification of the requesting account was removed.',
8046
+ required: ['actor'],
8047
+ properties: {
8048
+ actor: {
8049
+ type: 'string',
8050
+ format: 'did',
8051
+ },
8052
+ },
8053
+ },
8054
+ starterPackJoinedNotification: {
8055
+ type: 'object',
8056
+ description: 'An actor joined Bluesky via a starter pack created by the requesting account.',
8057
+ required: ['actor', 'starterPack'],
8058
+ properties: {
8059
+ actor: {
8060
+ type: 'string',
8061
+ format: 'did',
8062
+ },
8063
+ starterPack: {
8064
+ type: 'string',
8065
+ format: 'at-uri',
8066
+ },
8067
+ },
8068
+ },
8069
+ contactMatchNotification: {
8070
+ type: 'object',
8071
+ description: 'A contact of the requesting account joined Bluesky.',
8072
+ required: ['actor'],
8073
+ properties: {
8074
+ actor: {
8075
+ type: 'string',
8076
+ format: 'did',
8077
+ },
8078
+ },
8079
+ },
8080
+ },
8081
+ },
7575
8082
  AppBskyNotificationGetPreferences: {
7576
8083
  lexicon: 1,
7577
8084
  id: 'app.bsky.notification.getPreferences',
@@ -20040,6 +20547,270 @@ export const schemaDict = {
20040
20547
  },
20041
20548
  },
20042
20549
  },
20550
+ ToolsOzoneInboxAppealActionedSubject: {
20551
+ lexicon: 1,
20552
+ id: 'tools.ozone.inbox.appealActionedSubject',
20553
+ defs: {
20554
+ main: {
20555
+ type: 'procedure',
20556
+ description: "Appeal a moderation action affecting the user's account or content.",
20557
+ input: {
20558
+ encoding: 'application/json',
20559
+ schema: {
20560
+ type: 'object',
20561
+ required: ['subject'],
20562
+ properties: {
20563
+ action: {
20564
+ type: 'union',
20565
+ refs: [
20566
+ 'lex:tools.ozone.inbox.appealActionedSubject#actionRef',
20567
+ 'lex:tools.ozone.inbox.appealActionedSubject#labelRef',
20568
+ 'lex:tools.ozone.inbox.appealActionedSubject#takedownRef',
20569
+ ],
20570
+ closed: true,
20571
+ description: 'Moderation action being appealed.',
20572
+ },
20573
+ subject: {
20574
+ type: 'union',
20575
+ refs: [
20576
+ 'lex:com.atproto.admin.defs#repoRef',
20577
+ 'lex:com.atproto.repo.strongRef',
20578
+ ],
20579
+ description: 'Subject being appealed.',
20580
+ },
20581
+ reason: {
20582
+ type: 'string',
20583
+ maxGraphemes: 2000,
20584
+ maxLength: 20000,
20585
+ description: 'Optional explanation supplied by the user.',
20586
+ },
20587
+ modTool: {
20588
+ type: 'ref',
20589
+ ref: 'lex:com.atproto.moderation.createReport#modTool',
20590
+ },
20591
+ },
20592
+ },
20593
+ },
20594
+ output: {
20595
+ encoding: 'application/json',
20596
+ schema: {
20597
+ type: 'ref',
20598
+ ref: 'lex:tools.ozone.inbox.defs#subjectView',
20599
+ },
20600
+ },
20601
+ errors: [
20602
+ {
20603
+ name: 'InvalidAppealSubject',
20604
+ description: 'Invalid appeal subject input.',
20605
+ },
20606
+ {
20607
+ name: 'AlreadyAppealed',
20608
+ description: 'An active appeal already exists for this action.',
20609
+ },
20610
+ {
20611
+ name: 'NotAppealable',
20612
+ description: 'The subject cannot be appealed.',
20613
+ },
20614
+ {
20615
+ name: 'AppealWindowExpired',
20616
+ description: 'The appeal window for this action has closed.',
20617
+ },
20618
+ ],
20619
+ },
20620
+ actionRef: {
20621
+ type: 'object',
20622
+ required: ['id'],
20623
+ properties: {
20624
+ id: {
20625
+ type: 'integer',
20626
+ minimum: 1,
20627
+ description: 'ID of the moderation action being appealed, available via actions in mod inbox.',
20628
+ },
20629
+ },
20630
+ },
20631
+ labelRef: {
20632
+ type: 'object',
20633
+ required: ['val'],
20634
+ properties: {
20635
+ val: {
20636
+ type: 'string',
20637
+ minLength: 1,
20638
+ description: 'Label being appealed.',
20639
+ },
20640
+ },
20641
+ },
20642
+ takedownRef: {
20643
+ type: 'object',
20644
+ properties: {},
20645
+ },
20646
+ },
20647
+ },
20648
+ ToolsOzoneInboxDefs: {
20649
+ lexicon: 1,
20650
+ id: 'tools.ozone.inbox.defs',
20651
+ defs: {
20652
+ subjectView: {
20653
+ type: 'object',
20654
+ description: 'A subject belonging to the viewer that has moderation actions against it.',
20655
+ required: ['src', 'subject', 'enforcement', 'createdAt', 'updatedAt'],
20656
+ properties: {
20657
+ src: {
20658
+ type: 'string',
20659
+ format: 'did',
20660
+ description: 'DID of the moderation service that took the actions.',
20661
+ },
20662
+ subject: {
20663
+ type: 'union',
20664
+ refs: [
20665
+ 'lex:com.atproto.admin.defs#repoRef',
20666
+ 'lex:com.atproto.repo.strongRef',
20667
+ ],
20668
+ },
20669
+ enforcement: {
20670
+ type: 'ref',
20671
+ ref: 'lex:tools.ozone.inbox.defs#enforcementView',
20672
+ },
20673
+ appeal: {
20674
+ type: 'ref',
20675
+ ref: 'lex:tools.ozone.inbox.defs#appealView',
20676
+ },
20677
+ availableActions: {
20678
+ type: 'array',
20679
+ items: {
20680
+ type: 'string',
20681
+ knownValues: ['appeal'],
20682
+ },
20683
+ },
20684
+ latestAction: {
20685
+ type: 'ref',
20686
+ ref: 'lex:tools.ozone.inbox.defs#actionView',
20687
+ },
20688
+ actionCount: {
20689
+ type: 'integer',
20690
+ },
20691
+ createdAt: {
20692
+ type: 'string',
20693
+ format: 'datetime',
20694
+ },
20695
+ updatedAt: {
20696
+ type: 'string',
20697
+ format: 'datetime',
20698
+ },
20699
+ },
20700
+ },
20701
+ enforcementView: {
20702
+ type: 'object',
20703
+ description: 'The current enforcement state of a subject.',
20704
+ required: ['state'],
20705
+ properties: {
20706
+ state: {
20707
+ type: 'string',
20708
+ knownValues: [
20709
+ 'none',
20710
+ 'labeled',
20711
+ 'removed',
20712
+ 'suspended',
20713
+ 'takendown',
20714
+ ],
20715
+ },
20716
+ scope: {
20717
+ type: 'string',
20718
+ knownValues: ['network', 'app', 'labelOnly'],
20719
+ },
20720
+ expiresAt: {
20721
+ type: 'string',
20722
+ format: 'datetime',
20723
+ },
20724
+ labels: {
20725
+ type: 'array',
20726
+ items: {
20727
+ type: 'string',
20728
+ },
20729
+ description: 'Active label values on the subject, excluding negated and expired labels.',
20730
+ },
20731
+ },
20732
+ },
20733
+ appealView: {
20734
+ type: 'object',
20735
+ description: "The state of the viewer's appeal against the actions on a subject.",
20736
+ required: ['state'],
20737
+ properties: {
20738
+ state: {
20739
+ type: 'string',
20740
+ knownValues: [
20741
+ 'none',
20742
+ 'pending',
20743
+ 'resolved',
20744
+ 'superseded',
20745
+ 'expired',
20746
+ ],
20747
+ },
20748
+ appealedAt: {
20749
+ type: 'string',
20750
+ format: 'datetime',
20751
+ },
20752
+ resolvedAt: {
20753
+ type: 'string',
20754
+ format: 'datetime',
20755
+ description: "When the appeal's report was closed.",
20756
+ },
20757
+ note: {
20758
+ type: 'string',
20759
+ description: 'Moderator explanation, from the publicNote on the closing activity. Absent if none was written.',
20760
+ },
20761
+ appealableUntil: {
20762
+ type: 'string',
20763
+ format: 'datetime',
20764
+ },
20765
+ },
20766
+ },
20767
+ actionView: {
20768
+ type: 'object',
20769
+ description: 'A single moderation action taken against a subject.',
20770
+ required: ['id', 'type', 'createdAt'],
20771
+ properties: {
20772
+ id: {
20773
+ type: 'integer',
20774
+ description: 'Action ID (moderation event ID).',
20775
+ },
20776
+ type: {
20777
+ type: 'string',
20778
+ description: 'Public action type.',
20779
+ },
20780
+ scope: {
20781
+ type: 'string',
20782
+ knownValues: ['network', 'app', 'labelOnly'],
20783
+ },
20784
+ createdAt: {
20785
+ type: 'string',
20786
+ format: 'datetime',
20787
+ },
20788
+ reversedAt: {
20789
+ type: 'string',
20790
+ format: 'datetime',
20791
+ },
20792
+ expiresAt: {
20793
+ type: 'string',
20794
+ format: 'datetime',
20795
+ },
20796
+ labels: {
20797
+ type: 'array',
20798
+ items: {
20799
+ type: 'string',
20800
+ },
20801
+ description: 'Label values, for labelApplied/labelRemoved.',
20802
+ },
20803
+ policies: {
20804
+ type: 'array',
20805
+ items: {
20806
+ type: 'string',
20807
+ },
20808
+ description: 'Policies that were applied in this action.',
20809
+ },
20810
+ },
20811
+ },
20812
+ },
20813
+ },
20043
20814
  ToolsOzoneModerationCancelScheduledActions: {
20044
20815
  lexicon: 1,
20045
20816
  id: 'tools.ozone.moderation.cancelScheduledActions',
@@ -22895,6 +23666,13 @@ export const schemaDict = {
22895
23666
  },
22896
23667
  description: 'Policy keys to recommend when actioning reports in this queue',
22897
23668
  },
23669
+ recommendedLabels: {
23670
+ type: 'array',
23671
+ items: {
23672
+ type: 'string',
23673
+ },
23674
+ description: 'Labels to recommend for this queue and use as fallback appeal routing mappings',
23675
+ },
22898
23676
  },
22899
23677
  },
22900
23678
  },
@@ -22979,6 +23757,13 @@ export const schemaDict = {
22979
23757
  },
22980
23758
  description: 'Policy keys recommended when actioning reports in this queue',
22981
23759
  },
23760
+ recommendedLabels: {
23761
+ type: 'array',
23762
+ items: {
23763
+ type: 'string',
23764
+ },
23765
+ description: 'Labels recommended for this queue and used as a fallback when routing label appeals',
23766
+ },
22982
23767
  createdBy: {
22983
23768
  type: 'string',
22984
23769
  format: 'did',
@@ -23364,6 +24149,13 @@ export const schemaDict = {
23364
24149
  },
23365
24150
  description: 'Policy keys to recommend when actioning reports in this queue',
23366
24151
  },
24152
+ recommendedLabels: {
24153
+ type: 'array',
24154
+ items: {
24155
+ type: 'string',
24156
+ },
24157
+ description: 'Labels to recommend for this queue and use as fallback appeal routing mappings',
24158
+ },
23367
24159
  },
23368
24160
  },
23369
24161
  },
@@ -23385,6 +24177,10 @@ export const schemaDict = {
23385
24177
  name: 'InvalidRecommendedPolicies',
23386
24178
  description: 'One or more recommended policy keys do not exist in the configured policy list',
23387
24179
  },
24180
+ {
24181
+ name: 'ConflictingQueue',
24182
+ description: 'The queue configuration conflicts with an existing queue',
24183
+ },
23388
24184
  ],
23389
24185
  },
23390
24186
  },
@@ -23882,7 +24678,7 @@ export const schemaDict = {
23882
24678
  items: {
23883
24679
  type: 'integer',
23884
24680
  },
23885
- description: 'Array of moderation event IDs representing actions taken on this report (sorted DESC, most recent first)',
24681
+ description: 'Array of moderation event IDs representing actions taken on this report, in append order (most recently linked event last)',
23886
24682
  },
23887
24683
  actions: {
23888
24684
  type: 'array',
@@ -24064,25 +24860,65 @@ export const schemaDict = {
24064
24860
  type: 'integer',
24065
24861
  description: 'Number of reports currently not closed.',
24066
24862
  },
24863
+ closedCount: {
24864
+ type: 'integer',
24865
+ description: 'Number of close transitions.',
24866
+ },
24067
24867
  actionedCount: {
24068
24868
  type: 'integer',
24069
- description: 'Number of reports closed today.',
24869
+ description: 'Number of closures whose last report action is label, tag, or takedown.',
24870
+ },
24871
+ acknowledgedCount: {
24872
+ type: 'integer',
24873
+ description: 'Number of closures whose last report action is not label, tag, or takedown.',
24070
24874
  },
24071
24875
  escalatedCount: {
24072
24876
  type: 'integer',
24073
- description: 'Number of reports escalated today.',
24877
+ description: 'Number of reports escalated.',
24074
24878
  },
24075
24879
  inboundCount: {
24076
24880
  type: 'integer',
24077
- description: 'Reports received today.',
24881
+ description: 'Reports received.',
24882
+ },
24883
+ labelActionCount: {
24884
+ type: 'integer',
24885
+ description: 'Closures whose last report action is a label event.',
24886
+ },
24887
+ tagActionCount: {
24888
+ type: 'integer',
24889
+ description: 'Closures whose last report action is a tag event.',
24890
+ },
24891
+ takedownActionCount: {
24892
+ type: 'integer',
24893
+ description: 'Closures whose last report action is a takedown event.',
24894
+ },
24895
+ ahtDurationSec: {
24896
+ type: 'integer',
24897
+ description: 'Sum of report assignment-to-close seconds.',
24898
+ },
24899
+ ahtSampleCount: {
24900
+ type: 'integer',
24901
+ description: 'Number of assigned closed-report samples in ahtDurationSec.',
24902
+ },
24903
+ resolutionDurationSec: {
24904
+ type: 'integer',
24905
+ description: 'Sum of report creation-to-close seconds.',
24906
+ },
24907
+ resolutionSampleCount: {
24908
+ type: 'integer',
24909
+ description: 'Number of closed-report samples in resolutionDurationSec.',
24078
24910
  },
24079
24911
  actionRate: {
24080
24912
  type: 'integer',
24081
- description: 'Percentage of reports actioned (actionedCount / inboundCount * 100), rounded to nearest integer.',
24913
+ description: 'Percentage of closures actioned (actionedCount / closedCount * 100), rounded to nearest integer.',
24082
24914
  },
24083
24915
  avgHandlingTimeSec: {
24084
24916
  type: 'integer',
24085
- description: 'Average time in seconds from report creation (or moderator assignment) to close.',
24917
+ description: 'Average handling time in seconds from report assignment to close.',
24918
+ },
24919
+ avgResolutionTimeSec: {
24920
+ type: 'integer',
24921
+ description: 'Average resolution time in seconds from report creation to close.',
24086
24922
  },
24087
24923
  lastUpdated: {
24088
24924
  type: 'string',
@@ -24109,9 +24945,17 @@ export const schemaDict = {
24109
24945
  type: 'integer',
24110
24946
  description: 'Number of reports not closed at time of computation.',
24111
24947
  },
24948
+ closedCount: {
24949
+ type: 'integer',
24950
+ description: 'Number of close transitions during this day.',
24951
+ },
24112
24952
  actionedCount: {
24113
24953
  type: 'integer',
24114
- description: 'Number of reports closed during this day.',
24954
+ description: 'Number of closures whose last report action is label, tag, or takedown during this day.',
24955
+ },
24956
+ acknowledgedCount: {
24957
+ type: 'integer',
24958
+ description: 'Number of closures whose last report action is not label, tag, or takedown during this day.',
24115
24959
  },
24116
24960
  escalatedCount: {
24117
24961
  type: 'integer',
@@ -24121,13 +24965,45 @@ export const schemaDict = {
24121
24965
  type: 'integer',
24122
24966
  description: 'Reports received during this day.',
24123
24967
  },
24968
+ labelActionCount: {
24969
+ type: 'integer',
24970
+ description: 'Closures whose last report action is a label event during this day.',
24971
+ },
24972
+ tagActionCount: {
24973
+ type: 'integer',
24974
+ description: 'Closures whose last report action is a tag event during this day.',
24975
+ },
24976
+ takedownActionCount: {
24977
+ type: 'integer',
24978
+ description: 'Closures whose last report action is a takedown event during this day.',
24979
+ },
24980
+ ahtDurationSec: {
24981
+ type: 'integer',
24982
+ description: "Sum of report assignment-to-close seconds for this day's samples.",
24983
+ },
24984
+ ahtSampleCount: {
24985
+ type: 'integer',
24986
+ description: 'Number of assigned closed-report samples in ahtDurationSec.',
24987
+ },
24988
+ resolutionDurationSec: {
24989
+ type: 'integer',
24990
+ description: "Sum of report creation-to-close seconds for this day's samples.",
24991
+ },
24992
+ resolutionSampleCount: {
24993
+ type: 'integer',
24994
+ description: 'Number of closed-report samples in resolutionDurationSec.',
24995
+ },
24124
24996
  actionRate: {
24125
24997
  type: 'integer',
24126
- description: 'Percentage of reports actioned (actionedCount / inboundCount * 100), rounded to nearest integer.',
24998
+ description: 'Percentage of closures actioned (actionedCount / closedCount * 100), rounded to nearest integer.',
24127
24999
  },
24128
25000
  avgHandlingTimeSec: {
24129
25001
  type: 'integer',
24130
- description: 'Average time in seconds from report creation (or moderator assignment) to close.',
25002
+ description: 'Average handling time in seconds from report assignment to close.',
25003
+ },
25004
+ avgResolutionTimeSec: {
25005
+ type: 'integer',
25006
+ description: 'Average resolution time in seconds from report creation to close.',
24131
25007
  },
24132
25008
  },
24133
25009
  },
@@ -24341,7 +25217,7 @@ export const schemaDict = {
24341
25217
  defs: {
24342
25218
  main: {
24343
25219
  type: 'query',
24344
- description: 'Get live report statistics from the past 24 hours. Filter by queue, moderator, or report type. Omit all parameters for aggregate stats.',
25220
+ description: 'Get live report statistics for the current UTC calendar day. Filter by queue, moderator, or report type. Omit all parameters for aggregate stats.',
24345
25221
  parameters: {
24346
25222
  type: 'params',
24347
25223
  properties: {
@@ -24719,7 +25595,7 @@ export const schemaDict = {
24719
25595
  defs: {
24720
25596
  main: {
24721
25597
  type: 'procedure',
24722
- description: 'Recompute report statistics for a date range. Useful for backfilling after failures or data corrections.',
25598
+ description: 'Recompute report statistics for a date range.',
24723
25599
  input: {
24724
25600
  encoding: 'application/json',
24725
25601
  schema: {
@@ -26671,6 +27547,7 @@ export const ids = {
26671
27547
  AppBskyLabelerService: 'app.bsky.labeler.service',
26672
27548
  AppBskyNotificationDeclaration: 'app.bsky.notification.declaration',
26673
27549
  AppBskyNotificationDefs: 'app.bsky.notification.defs',
27550
+ AppBskyNotificationGetGroupedNotifications: 'app.bsky.notification.getGroupedNotifications',
26674
27551
  AppBskyNotificationGetPreferences: 'app.bsky.notification.getPreferences',
26675
27552
  AppBskyNotificationGetUnreadCount: 'app.bsky.notification.getUnreadCount',
26676
27553
  AppBskyNotificationListActivitySubscriptions: 'app.bsky.notification.listActivitySubscriptions',
@@ -26881,6 +27758,8 @@ export const ids = {
26881
27758
  ToolsOzoneCommunicationListTemplates: 'tools.ozone.communication.listTemplates',
26882
27759
  ToolsOzoneCommunicationUpdateTemplate: 'tools.ozone.communication.updateTemplate',
26883
27760
  ToolsOzoneHostingGetAccountHistory: 'tools.ozone.hosting.getAccountHistory',
27761
+ ToolsOzoneInboxAppealActionedSubject: 'tools.ozone.inbox.appealActionedSubject',
27762
+ ToolsOzoneInboxDefs: 'tools.ozone.inbox.defs',
26884
27763
  ToolsOzoneModerationCancelScheduledActions: 'tools.ozone.moderation.cancelScheduledActions',
26885
27764
  ToolsOzoneModerationDefs: 'tools.ozone.moderation.defs',
26886
27765
  ToolsOzoneModerationEmitEvent: 'tools.ozone.moderation.emitEvent',