diff --git a/lexicons/app/bsky/actor/defs.json b/lexicons/app/bsky/actor/defs.json index 913957f1291..9dbf4ae3de4 100644 --- a/lexicons/app/bsky/actor/defs.json +++ b/lexicons/app/bsky/actor/defs.json @@ -199,6 +199,42 @@ "description": "Show followed users at the top of all replies." } } + }, + "labelersPref": { + "type": "object", + "required": ["labelers"], + "properties": { + "labelers": { + "type": "array", + "items": { + "type": "object", + "required": ["uri", "enabled", "labelGroupSettings"], + "properties": { + "uri": { + "type": "string", + "format": "at-uri" + }, + "enabled": { + "type": "boolean" + }, + "labelGroupSettings": { + "type": "array", + "items": { + "type": "object", + "required": ["labelGroup", "visibility"], + "properties": { + "labelGroup": { "type": "string" }, + "visibility": { + "type": "string", + "knownValues": ["show", "warn", "hide"] + } + } + } + } + } + } + } + } } } } diff --git a/lexicons/app/bsky/embed/record.json b/lexicons/app/bsky/embed/record.json index 4b3d4f814a5..e652140c842 100644 --- a/lexicons/app/bsky/embed/record.json +++ b/lexicons/app/bsky/embed/record.json @@ -21,7 +21,8 @@ "#viewNotFound", "#viewBlocked", "app.bsky.feed.defs#generatorView", - "app.bsky.graph.defs#listView" + "app.bsky.graph.defs#listView", + "app.bsky.label.defs#labelerView" ] } } diff --git a/lexicons/app/bsky/label/defs.json b/lexicons/app/bsky/label/defs.json new file mode 100644 index 00000000000..4065afd6859 --- /dev/null +++ b/lexicons/app/bsky/label/defs.json @@ -0,0 +1,93 @@ +{ + "lexicon": 1, + "id": "app.bsky.label.defs", + "defs": { + "labelerView": { + "type": "object", + "required": ["uri", "cid", "did", "creator", "displayName", "indexedAt"], + "properties": { + "uri": { "type": "string", "format": "at-uri" }, + "cid": { "type": "string", "format": "cid" }, + "did": { "type": "string", "format": "did" }, + "creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }, + "displayName": { "type": "string" }, + "description": { + "type": "string", + "maxGraphemes": 300, + "maxLength": 3000 + }, + "descriptionFacets": { + "type": "array", + "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } + }, + "avatar": { "type": "string" }, + "likeCount": { "type": "integer", "minimum": 0 }, + "viewer": { "type": "ref", "ref": "#labelerViewerState" }, + "indexedAt": { "type": "string", "format": "datetime" } + } + }, + "labelerViewDetailed": { + "type": "object", + "required": ["uri", "cid", "did", "creator", "displayName", "indexedAt"], + "properties": { + "uri": { "type": "string", "format": "at-uri" }, + "cid": { "type": "string", "format": "cid" }, + "did": { "type": "string", "format": "did" }, + "creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }, + "displayName": { "type": "string" }, + "description": { + "type": "string", + "maxGraphemes": 300, + "maxLength": 3000 + }, + "descriptionFacets": { + "type": "array", + "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } + }, + "avatar": { "type": "string" }, + "policies": { + "type": "ref", + "ref": "app.bsky.label.defs#labelerPolicies" + }, + "likeCount": { "type": "integer", "minimum": 0 }, + "viewer": { "type": "ref", "ref": "#labelerViewerState" }, + "indexedAt": { "type": "string", "format": "datetime" } + } + }, + "labelerViewerState": { + "type": "object", + "properties": { + "like": { "type": "string", "format": "at-uri" } + } + }, + "labelerPolicies": { + "type": "object", + "required": ["reportReasons", "labelValues"], + "properties": { + "description": { + "type": "string", + "maxGraphemes": 10000, + "maxLength": 100000 + }, + "descriptionFacets": { + "type": "array", + "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } + }, + "reportReasons": { + "type": "array", + "items": { + "type": "ref", + "ref": "com.atproto.moderation.defs#reasonType" + } + }, + "labelValues": { + "type": "array", + "items": { + "type": "ref", + "ref": "com.atproto.label.defs#labelValue" + } + } + } + } + } +} diff --git a/lexicons/app/bsky/label/getActorLabelers.json b/lexicons/app/bsky/label/getActorLabelers.json new file mode 100644 index 00000000000..39b219595c0 --- /dev/null +++ b/lexicons/app/bsky/label/getActorLabelers.json @@ -0,0 +1,41 @@ +{ + "lexicon": 1, + "id": "app.bsky.label.getActorLabelers", + "defs": { + "main": { + "type": "query", + "description": "Get a list of labelers created by the actor.", + "parameters": { + "type": "params", + "required": ["actor"], + "properties": { + "actor": { "type": "string", "format": "at-identifier" }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "default": 50 + }, + "cursor": { "type": "string" } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["labelers"], + "properties": { + "cursor": { "type": "string" }, + "labelers": { + "type": "array", + "items": { + "type": "ref", + "ref": "app.bsky.label.defs#labelerView" + } + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/label/getLabeler.json b/lexicons/app/bsky/label/getLabeler.json new file mode 100644 index 00000000000..8aa61bb676b --- /dev/null +++ b/lexicons/app/bsky/label/getLabeler.json @@ -0,0 +1,30 @@ +{ + "lexicon": 1, + "id": "app.bsky.label.getLabeler", + "defs": { + "main": { + "type": "query", + "description": "Get information about a labeler.", + "parameters": { + "type": "params", + "required": ["labeler"], + "properties": { + "labeler": { "type": "string", "format": "at-uri" } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["view"], + "properties": { + "view": { + "type": "ref", + "ref": "app.bsky.label.defs#labelerViewDetailed" + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/label/getLabelers.json b/lexicons/app/bsky/label/getLabelers.json new file mode 100644 index 00000000000..1d69cfd7ea4 --- /dev/null +++ b/lexicons/app/bsky/label/getLabelers.json @@ -0,0 +1,36 @@ +{ + "lexicon": 1, + "id": "app.bsky.label.getLabelers", + "defs": { + "main": { + "type": "query", + "description": "Get information about a list of labelers.", + "parameters": { + "type": "params", + "required": ["labelers"], + "properties": { + "labelers": { + "type": "array", + "items": { "type": "string", "format": "at-uri" } + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["labelers"], + "properties": { + "labelers": { + "type": "array", + "items": { + "type": "ref", + "ref": "app.bsky.label.defs#labelerView" + } + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/label/labeler.json b/lexicons/app/bsky/label/labeler.json new file mode 100644 index 00000000000..ec1973eed70 --- /dev/null +++ b/lexicons/app/bsky/label/labeler.json @@ -0,0 +1,46 @@ +{ + "lexicon": 1, + "id": "app.bsky.label.labeler", + "defs": { + "main": { + "type": "record", + "description": "A declaration of the existence of labeler.", + "key": "any", + "record": { + "type": "object", + "required": ["did", "displayName", "policies", "createdAt"], + "properties": { + "did": { "type": "string", "format": "did" }, + "displayName": { + "type": "string", + "maxGraphemes": 24, + "maxLength": 240 + }, + "description": { + "type": "string", + "maxGraphemes": 300, + "maxLength": 3000 + }, + "descriptionFacets": { + "type": "array", + "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } + }, + "avatar": { + "type": "blob", + "accept": ["image/png", "image/jpeg"], + "maxSize": 1000000 + }, + "policies": { + "type": "ref", + "ref": "app.bsky.label.defs#labelerPolicies" + }, + "labels": { + "type": "union", + "refs": ["com.atproto.label.defs#selfLabels"] + }, + "createdAt": { "type": "string", "format": "datetime" } + } + } + } + } +} diff --git a/lexicons/com/atproto/label/defs.json b/lexicons/com/atproto/label/defs.json index 06e4e8f9cd2..bbe1096da66 100644 --- a/lexicons/com/atproto/label/defs.json +++ b/lexicons/com/atproto/label/defs.json @@ -61,6 +61,39 @@ "description": "The short string name of the value or type of this label." } } + }, + "labelValue": { + "type": "string", + "knownValues": [ + "!hide", + "!no-promote", + "!warn", + "!no-unauthenticated", + "dmca-violation", + "doxxing", + "porn", + "sexual", + "nudity", + "nsfl", + "corpse", + "gore", + "torture", + "self-harm", + "intolerant-race", + "intolerant-gender", + "intolerant-sexual-orientation", + "intolerant-religion", + "intolerant", + "icon-intolerant", + "threat", + "spoiler", + "spam", + "account-security", + "net-abuse", + "impersonation", + "scam", + "misleading" + ] } } }