From 7bbdb47c099549370eb25244702294b5c052c3d4 Mon Sep 17 00:00:00 2001 From: Ryan Barrett Date: Sat, 1 Apr 2023 12:57:31 -0700 Subject: [PATCH] temporarily vendor pre-refactor atproto and bsky lexicons into this repo specifically, https://github.com/bluesky-social/atproto/commit/7f008c05a09c6dcf42dcac2819210138af42835c is a big backward-incompatible refactor of many of these lexicons. example CI failure against the new lexicons: https://app.circleci.com/pipelines/github/snarfed/bridgy-fed/927/workflows/eadc531a-94e9-4f4a-bf6f-696940eaf531/jobs/1191 TODO: switch back to using these directly from a clone of that repo as soon as I get around to migrating these are MIT licensed, copyright 2023 Bluesky PBLLC. https://github.com/bluesky-social/atproto/blob/main/LICENSE --- lexicons | 1 - lexicons/app/bsky/actor/getProfile.json | 20 ++++ lexicons/app/bsky/actor/getProfiles.json | 33 ++++++ lexicons/app/bsky/actor/getSuggestions.json | 31 ++++++ lexicons/app/bsky/actor/profile.json | 100 ++++++++++++++++++ lexicons/app/bsky/actor/ref.json | 38 +++++++ lexicons/app/bsky/actor/search.json | 32 ++++++ lexicons/app/bsky/actor/searchTypeahead.json | 30 ++++++ lexicons/app/bsky/actor/updateProfile.json | 59 +++++++++++ lexicons/app/bsky/embed/external.json | 53 ++++++++++ lexicons/app/bsky/embed/images.json | 52 +++++++++ lexicons/app/bsky/embed/record.json | 38 +++++++ lexicons/app/bsky/feed/feedViewPost.json | 31 ++++++ lexicons/app/bsky/feed/getAuthorFeed.json | 33 ++++++ lexicons/app/bsky/feed/getPostThread.json | 53 ++++++++++ lexicons/app/bsky/feed/getRepostedBy.json | 35 ++++++ lexicons/app/bsky/feed/getTimeline.json | 32 ++++++ lexicons/app/bsky/feed/getVotes.json | 46 ++++++++ lexicons/app/bsky/feed/post.json | 92 ++++++++++++++++ lexicons/app/bsky/feed/repost.json | 18 ++++ lexicons/app/bsky/feed/setVote.json | 34 ++++++ lexicons/app/bsky/feed/vote.json | 19 ++++ lexicons/app/bsky/graph/assertCreator.json | 10 ++ lexicons/app/bsky/graph/assertMember.json | 10 ++ lexicons/app/bsky/graph/assertion.json | 19 ++++ lexicons/app/bsky/graph/confirmation.json | 19 ++++ lexicons/app/bsky/graph/follow.json | 19 ++++ lexicons/app/bsky/graph/getFollowers.json | 34 ++++++ lexicons/app/bsky/graph/getFollows.json | 34 ++++++ lexicons/app/bsky/graph/getMutes.json | 31 ++++++ lexicons/app/bsky/graph/mute.json | 20 ++++ lexicons/app/bsky/graph/unmute.json | 20 ++++ lexicons/app/bsky/notification/getCount.json | 19 ++++ lexicons/app/bsky/notification/list.json | 48 +++++++++ .../app/bsky/notification/updateSeen.json | 20 ++++ lexicons/app/bsky/system/actorUser.json | 10 ++ lexicons/app/bsky/system/declRef.json | 18 ++++ lexicons/app/bsky/system/declaration.json | 21 ++++ lexicons/com/atproto/account/create.json | 43 ++++++++ .../com/atproto/account/createInviteCode.json | 30 ++++++ lexicons/com/atproto/account/delete.json | 23 ++++ lexicons/com/atproto/account/get.json | 10 ++ .../com/atproto/account/requestDelete.json | 10 ++ .../atproto/account/requestPasswordReset.json | 20 ++++ .../com/atproto/account/resetPassword.json | 22 ++++ lexicons/com/atproto/admin/blob.json | 45 ++++++++ .../atproto/admin/getModerationAction.json | 21 ++++ .../atproto/admin/getModerationActions.json | 29 +++++ .../atproto/admin/getModerationReport.json | 21 ++++ .../atproto/admin/getModerationReports.json | 30 ++++++ lexicons/com/atproto/admin/getRecord.json | 22 ++++ lexicons/com/atproto/admin/getRepo.json | 21 ++++ .../com/atproto/admin/moderationAction.json | 85 +++++++++++++++ .../com/atproto/admin/moderationReport.json | 44 ++++++++ lexicons/com/atproto/admin/record.json | 48 +++++++++ lexicons/com/atproto/admin/repo.json | 53 ++++++++++ .../admin/resolveModerationReports.json | 29 +++++ .../admin/reverseModerationAction.json | 29 +++++ lexicons/com/atproto/admin/searchRepos.json | 29 +++++ .../atproto/admin/takeModerationAction.json | 45 ++++++++ lexicons/com/atproto/blob/upload.json | 23 ++++ lexicons/com/atproto/handle/resolve.json | 26 +++++ lexicons/com/atproto/handle/update.json | 20 ++++ lexicons/com/atproto/repo/batchWrite.json | 61 +++++++++++ lexicons/com/atproto/repo/createRecord.json | 47 ++++++++ lexicons/com/atproto/repo/deleteRecord.json | 31 ++++++ lexicons/com/atproto/repo/describe.json | 31 ++++++ lexicons/com/atproto/repo/getRecord.json | 32 ++++++ lexicons/com/atproto/repo/listRecords.json | 45 ++++++++ lexicons/com/atproto/repo/putRecord.json | 51 +++++++++ lexicons/com/atproto/repo/recordRef.json | 15 +++ lexicons/com/atproto/repo/repoRef.json | 14 +++ lexicons/com/atproto/repo/strongRef.json | 15 +++ lexicons/com/atproto/report/create.json | 49 +++++++++ lexicons/com/atproto/report/reasonType.json | 21 ++++ lexicons/com/atproto/report/subject.json | 31 ++++++ .../com/atproto/server/getAccountsConfig.json | 29 +++++ lexicons/com/atproto/session/create.json | 37 +++++++ lexicons/com/atproto/session/delete.json | 10 ++ lexicons/com/atproto/session/get.json | 21 ++++ lexicons/com/atproto/session/refresh.json | 26 +++++ lexicons/com/atproto/sync/getBlocks.json | 24 +++++ lexicons/com/atproto/sync/getCheckout.json | 21 ++++ lexicons/com/atproto/sync/getCommitPath.json | 32 ++++++ lexicons/com/atproto/sync/getHead.json | 27 +++++ lexicons/com/atproto/sync/getRecord.json | 23 ++++ lexicons/com/atproto/sync/getRepo.json | 22 ++++ .../com/atproto/sync/subscribeAllRepos.json | 50 +++++++++ 88 files changed, 2774 insertions(+), 1 deletion(-) delete mode 120000 lexicons create mode 100644 lexicons/app/bsky/actor/getProfile.json create mode 100644 lexicons/app/bsky/actor/getProfiles.json create mode 100644 lexicons/app/bsky/actor/getSuggestions.json create mode 100644 lexicons/app/bsky/actor/profile.json create mode 100644 lexicons/app/bsky/actor/ref.json create mode 100644 lexicons/app/bsky/actor/search.json create mode 100644 lexicons/app/bsky/actor/searchTypeahead.json create mode 100644 lexicons/app/bsky/actor/updateProfile.json create mode 100644 lexicons/app/bsky/embed/external.json create mode 100644 lexicons/app/bsky/embed/images.json create mode 100644 lexicons/app/bsky/embed/record.json create mode 100644 lexicons/app/bsky/feed/feedViewPost.json create mode 100644 lexicons/app/bsky/feed/getAuthorFeed.json create mode 100644 lexicons/app/bsky/feed/getPostThread.json create mode 100644 lexicons/app/bsky/feed/getRepostedBy.json create mode 100644 lexicons/app/bsky/feed/getTimeline.json create mode 100644 lexicons/app/bsky/feed/getVotes.json create mode 100644 lexicons/app/bsky/feed/post.json create mode 100644 lexicons/app/bsky/feed/repost.json create mode 100644 lexicons/app/bsky/feed/setVote.json create mode 100644 lexicons/app/bsky/feed/vote.json create mode 100644 lexicons/app/bsky/graph/assertCreator.json create mode 100644 lexicons/app/bsky/graph/assertMember.json create mode 100644 lexicons/app/bsky/graph/assertion.json create mode 100644 lexicons/app/bsky/graph/confirmation.json create mode 100644 lexicons/app/bsky/graph/follow.json create mode 100644 lexicons/app/bsky/graph/getFollowers.json create mode 100644 lexicons/app/bsky/graph/getFollows.json create mode 100644 lexicons/app/bsky/graph/getMutes.json create mode 100644 lexicons/app/bsky/graph/mute.json create mode 100644 lexicons/app/bsky/graph/unmute.json create mode 100644 lexicons/app/bsky/notification/getCount.json create mode 100644 lexicons/app/bsky/notification/list.json create mode 100644 lexicons/app/bsky/notification/updateSeen.json create mode 100644 lexicons/app/bsky/system/actorUser.json create mode 100644 lexicons/app/bsky/system/declRef.json create mode 100644 lexicons/app/bsky/system/declaration.json create mode 100644 lexicons/com/atproto/account/create.json create mode 100644 lexicons/com/atproto/account/createInviteCode.json create mode 100644 lexicons/com/atproto/account/delete.json create mode 100644 lexicons/com/atproto/account/get.json create mode 100644 lexicons/com/atproto/account/requestDelete.json create mode 100644 lexicons/com/atproto/account/requestPasswordReset.json create mode 100644 lexicons/com/atproto/account/resetPassword.json create mode 100644 lexicons/com/atproto/admin/blob.json create mode 100644 lexicons/com/atproto/admin/getModerationAction.json create mode 100644 lexicons/com/atproto/admin/getModerationActions.json create mode 100644 lexicons/com/atproto/admin/getModerationReport.json create mode 100644 lexicons/com/atproto/admin/getModerationReports.json create mode 100644 lexicons/com/atproto/admin/getRecord.json create mode 100644 lexicons/com/atproto/admin/getRepo.json create mode 100644 lexicons/com/atproto/admin/moderationAction.json create mode 100644 lexicons/com/atproto/admin/moderationReport.json create mode 100644 lexicons/com/atproto/admin/record.json create mode 100644 lexicons/com/atproto/admin/repo.json create mode 100644 lexicons/com/atproto/admin/resolveModerationReports.json create mode 100644 lexicons/com/atproto/admin/reverseModerationAction.json create mode 100644 lexicons/com/atproto/admin/searchRepos.json create mode 100644 lexicons/com/atproto/admin/takeModerationAction.json create mode 100644 lexicons/com/atproto/blob/upload.json create mode 100644 lexicons/com/atproto/handle/resolve.json create mode 100644 lexicons/com/atproto/handle/update.json create mode 100644 lexicons/com/atproto/repo/batchWrite.json create mode 100644 lexicons/com/atproto/repo/createRecord.json create mode 100644 lexicons/com/atproto/repo/deleteRecord.json create mode 100644 lexicons/com/atproto/repo/describe.json create mode 100644 lexicons/com/atproto/repo/getRecord.json create mode 100644 lexicons/com/atproto/repo/listRecords.json create mode 100644 lexicons/com/atproto/repo/putRecord.json create mode 100644 lexicons/com/atproto/repo/recordRef.json create mode 100644 lexicons/com/atproto/repo/repoRef.json create mode 100644 lexicons/com/atproto/repo/strongRef.json create mode 100644 lexicons/com/atproto/report/create.json create mode 100644 lexicons/com/atproto/report/reasonType.json create mode 100644 lexicons/com/atproto/report/subject.json create mode 100644 lexicons/com/atproto/server/getAccountsConfig.json create mode 100644 lexicons/com/atproto/session/create.json create mode 100644 lexicons/com/atproto/session/delete.json create mode 100644 lexicons/com/atproto/session/get.json create mode 100644 lexicons/com/atproto/session/refresh.json create mode 100644 lexicons/com/atproto/sync/getBlocks.json create mode 100644 lexicons/com/atproto/sync/getCheckout.json create mode 100644 lexicons/com/atproto/sync/getCommitPath.json create mode 100644 lexicons/com/atproto/sync/getHead.json create mode 100644 lexicons/com/atproto/sync/getRecord.json create mode 100644 lexicons/com/atproto/sync/getRepo.json create mode 100644 lexicons/com/atproto/sync/subscribeAllRepos.json diff --git a/lexicons b/lexicons deleted file mode 120000 index 58ce2ef..0000000 --- a/lexicons +++ /dev/null @@ -1 +0,0 @@ -../atproto/lexicons \ No newline at end of file diff --git a/lexicons/app/bsky/actor/getProfile.json b/lexicons/app/bsky/actor/getProfile.json new file mode 100644 index 0000000..9d75b49 --- /dev/null +++ b/lexicons/app/bsky/actor/getProfile.json @@ -0,0 +1,20 @@ +{ + "lexicon": 1, + "id": "app.bsky.actor.getProfile", + "defs": { + "main": { + "type": "query", + "parameters": { + "type": "params", + "required": ["actor"], + "properties": { + "actor": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": {"type": "ref", "ref": "app.bsky.actor.profile#view"} + } + } + } +} diff --git a/lexicons/app/bsky/actor/getProfiles.json b/lexicons/app/bsky/actor/getProfiles.json new file mode 100644 index 0000000..fc99af8 --- /dev/null +++ b/lexicons/app/bsky/actor/getProfiles.json @@ -0,0 +1,33 @@ +{ + "lexicon": 1, + "id": "app.bsky.actor.getProfiles", + "defs": { + "main": { + "type": "query", + "parameters": { + "type": "params", + "required": ["actors"], + "properties": { + "actors": { + "type": "array", + "items": {"type": "string"}, + "maxLength": 25 + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["profiles"], + "properties": { + "profiles": { + "type": "array", + "items": {"type": "ref", "ref": "app.bsky.actor.profile#view"} + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/actor/getSuggestions.json b/lexicons/app/bsky/actor/getSuggestions.json new file mode 100644 index 0000000..9f78a30 --- /dev/null +++ b/lexicons/app/bsky/actor/getSuggestions.json @@ -0,0 +1,31 @@ +{ + "lexicon": 1, + "id": "app.bsky.actor.getSuggestions", + "defs": { + "main": { + "type": "query", + "description": "Get a list of actors suggested for following. Used in discovery UIs.", + "parameters": { + "type": "params", + "properties": { + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "cursor": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["actors"], + "properties": { + "cursor": {"type": "string"}, + "actors": { + "type": "array", + "items": {"type": "ref", "ref": "app.bsky.actor.profile#viewBasic"} + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/actor/profile.json b/lexicons/app/bsky/actor/profile.json new file mode 100644 index 0000000..b600992 --- /dev/null +++ b/lexicons/app/bsky/actor/profile.json @@ -0,0 +1,100 @@ +{ + "lexicon": 1, + "id": "app.bsky.actor.profile", + "defs": { + "main": { + "type": "record", + "key": "literal:self", + "record": { + "type": "object", + "required": ["displayName"], + "properties": { + "displayName": { + "type": "string", + "maxLength": 64 + }, + "description": { + "type": "string", + "maxLength": 256 + }, + "avatar": { + "type": "image", + "accept": ["image/png", "image/jpeg"], + "maxWidth": 2000, + "maxHeight": 2000, + "maxSize": 1000000 + }, + "banner": { + "type": "image", + "accept": ["image/png", "image/jpeg"], + "maxWidth": 6000, + "maxHeight": 2000, + "maxSize": 1000000 + } + } + } + }, + "view": { + "type": "object", + "required": ["did", "declaration", "handle", "creator", "followersCount", "followsCount", "postsCount"], + "properties": { + "did": {"type": "string"}, + "declaration": {"type": "ref", "ref": "app.bsky.system.declRef"}, + "handle": {"type": "string"}, + "displayName": { + "type": "string", + "maxLength": 64 + }, + "description": { + "type": "string", + "maxLength": 256 + }, + "avatar": { "type": "string" }, + "banner": { "type": "string" }, + "followersCount": {"type": "integer"}, + "followsCount": {"type": "integer"}, + "postsCount": {"type": "integer"}, + "creator": {"type": "string"}, + "indexedAt": {"type": "datetime"}, + "viewer": {"type": "ref", "ref": "#viewerState"}, + "myState": {"type": "ref", "ref": "#myState", "description": "Deprecated"} + } + }, + "viewBasic": { + "type": "object", + "required": ["did", "declaration", "handle"], + "properties": { + "did": {"type": "string"}, + "declaration": {"type": "ref", "ref": "app.bsky.system.declRef"}, + "handle": {"type": "string"}, + "displayName": { + "type": "string", + "maxLength": 64 + }, + "description": { + "type": "string", + "maxLength": 256 + }, + "avatar": { "type": "string" }, + "indexedAt": {"type": "datetime"}, + "viewer": {"type": "ref", "ref": "#viewerState"} + } + }, + "viewerState": { + "type": "object", + "properties": { + "muted": {"type": "boolean"}, + "following": {"type": "string"}, + "followedBy": {"type": "string"} + } + }, + "myState": { + "type": "object", + "description": "Deprecated in favor of #viewerState", + "properties": { + "follow": {"type": "string"}, + "muted": {"type": "boolean"} + } + } + } +} diff --git a/lexicons/app/bsky/actor/ref.json b/lexicons/app/bsky/actor/ref.json new file mode 100644 index 0000000..38be111 --- /dev/null +++ b/lexicons/app/bsky/actor/ref.json @@ -0,0 +1,38 @@ +{ + "lexicon": 1, + "id": "app.bsky.actor.ref", + "description": "A reference to an actor in the network.", + "defs": { + "main": { + "type": "object", + "required": ["did", "declarationCid"], + "properties": { + "did": {"type": "string"}, + "declarationCid": {"type": "string"} + } + }, + "withInfo": { + "type": "object", + "required": ["did", "declaration", "handle"], + "properties": { + "did": {"type": "string"}, + "declaration": {"type": "ref", "ref": "app.bsky.system.declRef"}, + "handle": {"type": "string"}, + "displayName": { + "type": "string", + "maxLength": 64 + }, + "avatar": { "type": "string" }, + "viewer": {"type": "ref", "ref": "#viewerState"} + } + }, + "viewerState": { + "type": "object", + "properties": { + "muted": {"type": "boolean"}, + "following": {"type": "string"}, + "followedBy": {"type": "string"} + } + } + } +} diff --git a/lexicons/app/bsky/actor/search.json b/lexicons/app/bsky/actor/search.json new file mode 100644 index 0000000..083ce1f --- /dev/null +++ b/lexicons/app/bsky/actor/search.json @@ -0,0 +1,32 @@ +{ + "lexicon": 1, + "id": "app.bsky.actor.search", + "defs": { + "main": { + "type": "query", + "description": "Find users matching search criteria.", + "parameters": { + "type": "params", + "properties": { + "term": {"type": "string"}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["users"], + "properties": { + "cursor": {"type": "string"}, + "users": { + "type": "array", + "items": {"type": "ref", "ref": "app.bsky.actor.profile#viewBasic"} + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/actor/searchTypeahead.json b/lexicons/app/bsky/actor/searchTypeahead.json new file mode 100644 index 0000000..4bdda61 --- /dev/null +++ b/lexicons/app/bsky/actor/searchTypeahead.json @@ -0,0 +1,30 @@ +{ + "lexicon": 1, + "id": "app.bsky.actor.searchTypeahead", + "defs": { + "main": { + "type": "query", + "description": "Find user suggestions for a search term.", + "parameters": { + "type": "params", + "properties": { + "term": {"type": "string"}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["users"], + "properties": { + "users": { + "type": "array", + "items": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"} + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/actor/updateProfile.json b/lexicons/app/bsky/actor/updateProfile.json new file mode 100644 index 0000000..c2b336c --- /dev/null +++ b/lexicons/app/bsky/actor/updateProfile.json @@ -0,0 +1,59 @@ +{ + "lexicon": 1, + "id": "app.bsky.actor.updateProfile", + "defs": { + "main": { + "type": "procedure", + "description": "Notify server that the user has seen notifications.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "nullable": ["description", "avatar", "banner"], + "properties": { + "displayName": { + "type": "string", + "maxLength": 64 + }, + "description": { + "type": "string", + "maxLength": 256 + }, + "avatar": { + "type": "image", + "accept": ["image/png", "image/jpeg"], + "maxWidth": 500, + "maxHeight": 500, + "maxSize": 100000 + }, + "banner": { + "type": "image", + "accept": ["image/png", "image/jpeg"], + "maxWidth": 1500, + "maxHeight": 500, + "maxSize": 500000 + } + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["uri", "cid", "record"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "record": {"type": "unknown"} + } + } + }, + "errors": [ + {"name": "InvalidBlob"}, + {"name": "BlobTooLarge"}, + {"name": "InvalidMimeType"}, + {"name": "InvalidImageDimensions"} + ] + } + } +} diff --git a/lexicons/app/bsky/embed/external.json b/lexicons/app/bsky/embed/external.json new file mode 100644 index 0000000..409f36b --- /dev/null +++ b/lexicons/app/bsky/embed/external.json @@ -0,0 +1,53 @@ +{ + "lexicon": 1, + "id": "app.bsky.embed.external", + "description": "An representation of some externally linked content, embedded in another form of content", + "defs": { + "main": { + "type": "object", + "required": ["external"], + "properties": { + "external": { + "type": "ref", + "ref": "#external" + } + } + }, + "external": { + "type": "object", + "required": ["uri", "title", "description"], + "properties": { + "uri": {"type": "string"}, + "title": {"type": "string"}, + "description": {"type": "string"}, + "thumb": { + "type": "image", + "accept": ["image/*"], + "maxWidth": 2000, + "maxHeight": 2000, + "maxSize": 1000000 + } + } + }, + "presented": { + "type": "object", + "required": ["external"], + "properties": { + "external": { + "type": "ref", + "ref": "#presentedExternal" + } + } + }, + "presentedExternal": { + "type": "object", + "required": ["uri", "title", "description"], + "properties": { + "uri": {"type": "string"}, + "title": {"type": "string"}, + "description": {"type": "string"}, + "thumb": {"type": "string"} + } + } + } +} \ No newline at end of file diff --git a/lexicons/app/bsky/embed/images.json b/lexicons/app/bsky/embed/images.json new file mode 100644 index 0000000..ebb0e28 --- /dev/null +++ b/lexicons/app/bsky/embed/images.json @@ -0,0 +1,52 @@ +{ + "lexicon": 1, + "id": "app.bsky.embed.images", + "description": "A set of images embedded in some other form of content", + "defs": { + "main": { + "type": "object", + "required": ["images"], + "properties": { + "images": { + "type": "array", + "items": {"type": "ref", "ref": "#image"}, + "maxLength": 4 + } + } + }, + "image": { + "type": "object", + "required": ["image", "alt"], + "properties": { + "image": { + "type": "image", + "accept": ["image/*"], + "maxWidth": 2000, + "maxHeight": 2000, + "maxSize": 1000000 + }, + "alt": {"type": "string"} + } + }, + "presented": { + "type": "object", + "required": ["images"], + "properties": { + "images": { + "type": "array", + "items": {"type": "ref", "ref": "#presentedImage"}, + "maxLength": 4 + } + } + }, + "presentedImage": { + "type": "object", + "required": ["thumb", "fullsize", "alt"], + "properties": { + "thumb": {"type": "string"}, + "fullsize": {"type": "string"}, + "alt": {"type": "string"} + } + } + } +} \ No newline at end of file diff --git a/lexicons/app/bsky/embed/record.json b/lexicons/app/bsky/embed/record.json new file mode 100644 index 0000000..48b7d0a --- /dev/null +++ b/lexicons/app/bsky/embed/record.json @@ -0,0 +1,38 @@ +{ + "lexicon": 1, + "id": "app.bsky.embed.record", + "description": "An representation of a record embedded in another form of content", + "defs": { + "main": { + "type": "object", + "required": ["record"], + "properties": { + "record": {"type": "ref", "ref": "com.atproto.repo.strongRef"} + } + }, + "presented": { + "type": "object", + "required": ["record"], + "properties": { + "record": {"type": "union", "refs": ["#presentedRecord", "#presentedNotFound"]} + } + }, + "presentedRecord": { + "type": "object", + "required": ["uri", "cid", "author", "record"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "author": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"}, + "record": {"type": "unknown"} + } + }, + "presentedNotFound": { + "type": "object", + "required": ["uri"], + "properties": { + "uri": {"type": "string"} + } + } + } +} diff --git a/lexicons/app/bsky/feed/feedViewPost.json b/lexicons/app/bsky/feed/feedViewPost.json new file mode 100644 index 0000000..e9583c9 --- /dev/null +++ b/lexicons/app/bsky/feed/feedViewPost.json @@ -0,0 +1,31 @@ +{ + "lexicon": 1, + "id": "app.bsky.feed.feedViewPost", + "defs": { + "main": { + "type": "object", + "required": ["post"], + "properties": { + "post": {"type": "ref", "ref": "app.bsky.feed.post#view"}, + "reply": {"type": "ref", "ref": "#replyRef"}, + "reason": {"type": "union", "refs": ["#reasonRepost"]} + } + }, + "replyRef": { + "type": "object", + "required": ["root", "parent"], + "properties": { + "root": {"type": "ref", "ref": "app.bsky.feed.post#view"}, + "parent": {"type": "ref", "ref": "app.bsky.feed.post#view"} + } + }, + "reasonRepost": { + "type": "object", + "required": ["by", "indexedAt"], + "properties": { + "by": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"}, + "indexedAt": {"type": "datetime"} + } + } + } +} \ No newline at end of file diff --git a/lexicons/app/bsky/feed/getAuthorFeed.json b/lexicons/app/bsky/feed/getAuthorFeed.json new file mode 100644 index 0000000..2a57ea7 --- /dev/null +++ b/lexicons/app/bsky/feed/getAuthorFeed.json @@ -0,0 +1,33 @@ +{ + "lexicon": 1, + "id": "app.bsky.feed.getAuthorFeed", + "defs": { + "main": { + "type": "query", + "description": "A view of a user's feed.", + "parameters": { + "type": "params", + "required": ["author"], + "properties": { + "author": {"type": "string"}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["feed"], + "properties": { + "cursor": {"type": "string"}, + "feed": { + "type": "array", + "items": {"type": "ref", "ref": "app.bsky.feed.feedViewPost"} + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/feed/getPostThread.json b/lexicons/app/bsky/feed/getPostThread.json new file mode 100644 index 0000000..ec84f3d --- /dev/null +++ b/lexicons/app/bsky/feed/getPostThread.json @@ -0,0 +1,53 @@ +{ + "lexicon": 1, + "id": "app.bsky.feed.getPostThread", + "defs": { + "main": { + "type": "query", + "parameters": { + "type": "params", + "required": ["uri"], + "properties": { + "uri": {"type": "string"}, + "depth": {"type": "integer"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["thread"], + "properties": { + "thread": { + "type": "union", + "refs": ["#threadViewPost", "#notFoundPost"] + } + } + } + }, + "errors": [ + {"name": "NotFound"} + ] + }, + "threadViewPost": { + "type": "object", + "required": ["post"], + "properties": { + "post": {"type": "ref", "ref": "app.bsky.feed.post#view"}, + "parent": {"type": "union", "refs": ["#threadViewPost", "#notFoundPost"]}, + "replies": { + "type": "array", + "items": {"type": "union", "refs": ["#threadViewPost", "#notFoundPost"]} + } + } + }, + "notFoundPost": { + "type": "object", + "required": ["uri", "notFound"], + "properties": { + "uri": {"type": "string"}, + "notFound": {"type": "boolean", "const": true} + } + } + } +} diff --git a/lexicons/app/bsky/feed/getRepostedBy.json b/lexicons/app/bsky/feed/getRepostedBy.json new file mode 100644 index 0000000..cc95003 --- /dev/null +++ b/lexicons/app/bsky/feed/getRepostedBy.json @@ -0,0 +1,35 @@ +{ + "lexicon": 1, + "id": "app.bsky.feed.getRepostedBy", + "defs": { + "main": { + "type": "query", + "parameters": { + "type": "params", + "required": ["uri"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["uri", "repostedBy"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "cursor": {"type": "string"}, + "repostedBy": { + "type": "array", + "items": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"} + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/feed/getTimeline.json b/lexicons/app/bsky/feed/getTimeline.json new file mode 100644 index 0000000..c731e98 --- /dev/null +++ b/lexicons/app/bsky/feed/getTimeline.json @@ -0,0 +1,32 @@ +{ + "lexicon": 1, + "id": "app.bsky.feed.getTimeline", + "defs": { + "main": { + "type": "query", + "description": "A view of the user's home timeline.", + "parameters": { + "type": "params", + "properties": { + "algorithm": {"type": "string"}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["feed"], + "properties": { + "cursor": {"type": "string"}, + "feed": { + "type": "array", + "items": {"type": "ref", "ref": "app.bsky.feed.feedViewPost"} + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/feed/getVotes.json b/lexicons/app/bsky/feed/getVotes.json new file mode 100644 index 0000000..0da999a --- /dev/null +++ b/lexicons/app/bsky/feed/getVotes.json @@ -0,0 +1,46 @@ +{ + "lexicon": 1, + "id": "app.bsky.feed.getVotes", + "defs": { + "main": { + "type": "query", + "parameters": { + "type": "params", + "required": ["uri"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "direction": {"type": "string", "enum": ["up", "down"]}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["uri", "votes"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "cursor": {"type": "string"}, + "votes": { + "type": "array", + "items": {"type": "ref", "ref": "#vote"} + } + } + } + } + }, + "vote": { + "type": "object", + "required": ["direction", "indexedAt", "createdAt", "actor"], + "properties": { + "direction": {"type": "string", "enum": ["up", "down"]}, + "indexedAt": {"type": "datetime"}, + "createdAt": {"type": "datetime"}, + "actor": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"} + } + } + } +} diff --git a/lexicons/app/bsky/feed/post.json b/lexicons/app/bsky/feed/post.json new file mode 100644 index 0000000..bfc9dfe --- /dev/null +++ b/lexicons/app/bsky/feed/post.json @@ -0,0 +1,92 @@ +{ + "lexicon": 1, + "id": "app.bsky.feed.post", + "defs": { + "main": { + "type": "record", + "key": "tid", + "record": { + "type": "object", + "required": ["text", "createdAt"], + "properties": { + "text": {"type": "string", "maxLength": 256}, + "entities": { + "type": "array", + "items": {"type": "ref", "ref": "#entity"} + }, + "reply": {"type": "ref", "ref": "#replyRef"}, + "embed": { + "type": "union", + "refs": [ + "app.bsky.embed.images", + "app.bsky.embed.external", + "app.bsky.embed.record" + ] + }, + "createdAt": {"type": "datetime"} + } + } + }, + "replyRef":{ + "type": "object", + "required": ["root", "parent"], + "properties": { + "root": {"type": "ref", "ref": "com.atproto.repo.strongRef"}, + "parent": {"type": "ref", "ref": "com.atproto.repo.strongRef"} + } + }, + "entity": { + "type": "object", + "required": ["index", "type", "value"], + "properties": { + "index": {"type": "ref", "ref": "#textSlice"}, + "type": { + "type": "string", + "description": "Expected values are 'mention', 'hashtag', and 'link'." + }, + "value": {"type": "string"} + } + }, + "textSlice": { + "type": "object", + "description": "A text segment. Start is inclusive, end is exclusive.", + "required": ["start", "end"], + "properties": { + "start": {"type": "integer", "minimum": 0}, + "end": {"type": "integer", "minimum": 0} + } + }, + "view": { + "type": "object", + "required": ["uri", "cid", "author", "record", "replyCount", "repostCount", "upvoteCount", "downvoteCount", "indexedAt", "viewer"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "author": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"}, + "record": {"type": "unknown"}, + "embed": { + "type": "union", + "refs": [ + "app.bsky.embed.images#presented", + "app.bsky.embed.external#presented", + "app.bsky.embed.record#presented" + ] + }, + "replyCount": {"type": "integer"}, + "repostCount": {"type": "integer"}, + "upvoteCount": {"type": "integer"}, + "downvoteCount": {"type": "integer"}, + "indexedAt": {"type": "datetime"}, + "viewer": {"type": "ref", "ref": "#viewerState"} + } + }, + "viewerState": { + "type": "object", + "properties": { + "repost": {"type": "string"}, + "upvote": {"type": "string"}, + "downvote": {"type": "string"} + } + } + } +} diff --git a/lexicons/app/bsky/feed/repost.json b/lexicons/app/bsky/feed/repost.json new file mode 100644 index 0000000..8b5c7bc --- /dev/null +++ b/lexicons/app/bsky/feed/repost.json @@ -0,0 +1,18 @@ +{ + "lexicon": 1, + "id": "app.bsky.feed.repost", + "defs": { + "main": { + "type": "record", + "key": "tid", + "record": { + "type": "object", + "required": ["subject", "createdAt"], + "properties": { + "subject": {"type": "ref", "ref": "com.atproto.repo.strongRef"}, + "createdAt": {"type": "datetime"} + } + } + } + } +} \ No newline at end of file diff --git a/lexicons/app/bsky/feed/setVote.json b/lexicons/app/bsky/feed/setVote.json new file mode 100644 index 0000000..9d53ba7 --- /dev/null +++ b/lexicons/app/bsky/feed/setVote.json @@ -0,0 +1,34 @@ +{ + "lexicon": 1, + "id": "app.bsky.feed.setVote", + "defs": { + "main": { + "type": "procedure", + "description": "Upvote, downvote, or clear the user's vote for a post.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["subject", "direction"], + "properties": { + "subject": {"type": "ref", "ref": "com.atproto.repo.strongRef"}, + "direction": { + "type": "string", + "enum": ["up", "down", "none"] + } + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "properties": { + "upvote": {"type": "string"}, + "downvote": {"type": "string"} + } + } + } + } + } +} diff --git a/lexicons/app/bsky/feed/vote.json b/lexicons/app/bsky/feed/vote.json new file mode 100644 index 0000000..bf218f2 --- /dev/null +++ b/lexicons/app/bsky/feed/vote.json @@ -0,0 +1,19 @@ +{ + "lexicon": 1, + "id": "app.bsky.feed.vote", + "defs": { + "main": { + "type": "record", + "key": "tid", + "record": { + "type": "object", + "required": ["subject", "direction", "createdAt"], + "properties": { + "subject": {"type": "ref", "ref": "com.atproto.repo.strongRef"}, + "direction": {"type": "string", "enum": ["up", "down"]}, + "createdAt": {"type": "datetime"} + } + } + } + } +} diff --git a/lexicons/app/bsky/graph/assertCreator.json b/lexicons/app/bsky/graph/assertCreator.json new file mode 100644 index 0000000..67436da --- /dev/null +++ b/lexicons/app/bsky/graph/assertCreator.json @@ -0,0 +1,10 @@ +{ + "lexicon": 1, + "id": "app.bsky.graph.assertCreator", + "defs": { + "main": { + "type": "token", + "description": "Assertion type: Creator. Defined for app.bsky.graph.assertions's assertion." + } + } +} diff --git a/lexicons/app/bsky/graph/assertMember.json b/lexicons/app/bsky/graph/assertMember.json new file mode 100644 index 0000000..6247a2a --- /dev/null +++ b/lexicons/app/bsky/graph/assertMember.json @@ -0,0 +1,10 @@ +{ + "lexicon": 1, + "id": "app.bsky.graph.assertMember", + "defs": { + "main": { + "type": "token", + "description": "Assertion type: Member. Defined for app.bsky.graph.assertions's assertion." + } + } +} diff --git a/lexicons/app/bsky/graph/assertion.json b/lexicons/app/bsky/graph/assertion.json new file mode 100644 index 0000000..a782e1e --- /dev/null +++ b/lexicons/app/bsky/graph/assertion.json @@ -0,0 +1,19 @@ +{ + "lexicon": 1, + "id": "app.bsky.graph.assertion", + "defs": { + "main": { + "type": "record", + "key": "tid", + "record": { + "type": "object", + "required": ["assertion", "subject", "createdAt"], + "properties": { + "assertion": {"type": "string"}, + "subject": {"type": "ref", "ref": "app.bsky.actor.ref"}, + "createdAt": {"type": "datetime"} + } + } + } + } +} \ No newline at end of file diff --git a/lexicons/app/bsky/graph/confirmation.json b/lexicons/app/bsky/graph/confirmation.json new file mode 100644 index 0000000..24872b6 --- /dev/null +++ b/lexicons/app/bsky/graph/confirmation.json @@ -0,0 +1,19 @@ +{ + "lexicon": 1, + "id": "app.bsky.graph.confirmation", + "defs": { + "main": { + "type": "record", + "key": "tid", + "record": { + "type": "object", + "required": ["originator", "assertion", "createdAt"], + "properties": { + "originator": {"type": "ref", "ref": "app.bsky.actor.ref"}, + "assertion": {"type": "ref", "ref": "com.atproto.repo.strongRef"}, + "createdAt": {"type": "datetime"} + } + } + } + } +} diff --git a/lexicons/app/bsky/graph/follow.json b/lexicons/app/bsky/graph/follow.json new file mode 100644 index 0000000..3c9dab7 --- /dev/null +++ b/lexicons/app/bsky/graph/follow.json @@ -0,0 +1,19 @@ +{ + "lexicon": 1, + "id": "app.bsky.graph.follow", + "defs": { + "main": { + "type": "record", + "description": "A social follow.", + "key": "tid", + "record": { + "type": "object", + "required": ["subject", "createdAt"], + "properties": { + "subject": {"type": "ref", "ref": "app.bsky.actor.ref"}, + "createdAt": {"type": "datetime"} + } + } + } + } +} diff --git a/lexicons/app/bsky/graph/getFollowers.json b/lexicons/app/bsky/graph/getFollowers.json new file mode 100644 index 0000000..cbf5212 --- /dev/null +++ b/lexicons/app/bsky/graph/getFollowers.json @@ -0,0 +1,34 @@ +{ + "lexicon": 1, + "id": "app.bsky.graph.getFollowers", + "defs": { + "main": { + "type": "query", + "description": "Who is following a user?", + "parameters": { + "type": "params", + "required": ["user"], + "properties": { + "user": {"type": "string"}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["subject", "followers"], + "properties": { + "subject": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"}, + "cursor": {"type": "string"}, + "followers": { + "type": "array", + "items": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"} + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/graph/getFollows.json b/lexicons/app/bsky/graph/getFollows.json new file mode 100644 index 0000000..c48c649 --- /dev/null +++ b/lexicons/app/bsky/graph/getFollows.json @@ -0,0 +1,34 @@ +{ + "lexicon": 1, + "id": "app.bsky.graph.getFollows", + "defs": { + "main": { + "type": "query", + "description": "Who is a user following?", + "parameters": { + "type": "params", + "required": ["user"], + "properties": { + "user": {"type": "string"}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["subject", "follows"], + "properties": { + "subject": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"}, + "cursor": {"type": "string"}, + "follows": { + "type": "array", + "items": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"} + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/graph/getMutes.json b/lexicons/app/bsky/graph/getMutes.json new file mode 100644 index 0000000..e22269d --- /dev/null +++ b/lexicons/app/bsky/graph/getMutes.json @@ -0,0 +1,31 @@ +{ + "lexicon": 1, + "id": "app.bsky.graph.getMutes", + "defs": { + "main": { + "type": "query", + "description": "Who does the viewer mute?", + "parameters": { + "type": "params", + "properties": { + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["mutes"], + "properties": { + "cursor": {"type": "string"}, + "mutes": { + "type": "array", + "items": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"} + } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/graph/mute.json b/lexicons/app/bsky/graph/mute.json new file mode 100644 index 0000000..e3b598d --- /dev/null +++ b/lexicons/app/bsky/graph/mute.json @@ -0,0 +1,20 @@ +{ + "lexicon": 1, + "id": "app.bsky.graph.mute", + "defs": { + "main": { + "type": "procedure", + "description": "Mute an actor by did or handle.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["user"], + "properties": { + "user": { "type": "string" } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/graph/unmute.json b/lexicons/app/bsky/graph/unmute.json new file mode 100644 index 0000000..7ffeb42 --- /dev/null +++ b/lexicons/app/bsky/graph/unmute.json @@ -0,0 +1,20 @@ +{ + "lexicon": 1, + "id": "app.bsky.graph.unmute", + "defs": { + "main": { + "type": "procedure", + "description": "Unmute an actor by did or handle.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["user"], + "properties": { + "user": { "type": "string" } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/notification/getCount.json b/lexicons/app/bsky/notification/getCount.json new file mode 100644 index 0000000..a82cd8e --- /dev/null +++ b/lexicons/app/bsky/notification/getCount.json @@ -0,0 +1,19 @@ +{ + "lexicon": 1, + "id": "app.bsky.notification.getCount", + "defs": { + "main": { + "type": "query", + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["count"], + "properties": { + "count": { "type": "integer"} + } + } + } + } + } +} diff --git a/lexicons/app/bsky/notification/list.json b/lexicons/app/bsky/notification/list.json new file mode 100644 index 0000000..86924c3 --- /dev/null +++ b/lexicons/app/bsky/notification/list.json @@ -0,0 +1,48 @@ +{ + "lexicon": 1, + "id": "app.bsky.notification.list", + "defs": { + "main": { + "type": "query", + "parameters": { + "type": "params", + "properties": { + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["notifications"], + "properties": { + "cursor": {"type": "string"}, + "notifications": { + "type": "array", + "items": {"type": "ref", "ref": "#notification"} + } + } + } + } + }, + "notification": { + "type": "object", + "required": ["uri", "cid", "author", "reason", "record", "isRead", "indexedAt"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string" }, + "author": {"type": "ref", "ref": "app.bsky.actor.ref#withInfo"}, + "reason": { + "type": "string", + "description": "Expected values are 'vote', 'repost', 'follow', 'invite', 'mention' and 'reply'.", + "knownValues": ["vote", "repost", "follow", "invite", "mention", "reply"] + }, + "reasonSubject": {"type": "string"}, + "record": {"type": "unknown"}, + "isRead": {"type": "boolean"}, + "indexedAt": {"type": "datetime"} + } + } + } +} diff --git a/lexicons/app/bsky/notification/updateSeen.json b/lexicons/app/bsky/notification/updateSeen.json new file mode 100644 index 0000000..b213572 --- /dev/null +++ b/lexicons/app/bsky/notification/updateSeen.json @@ -0,0 +1,20 @@ +{ + "lexicon": 1, + "id": "app.bsky.notification.updateSeen", + "defs": { + "main": { + "type": "procedure", + "description": "Notify server that the user has seen notifications.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["seenAt"], + "properties": { + "seenAt": { "type": "datetime" } + } + } + } + } + } +} diff --git a/lexicons/app/bsky/system/actorUser.json b/lexicons/app/bsky/system/actorUser.json new file mode 100644 index 0000000..b94b3c6 --- /dev/null +++ b/lexicons/app/bsky/system/actorUser.json @@ -0,0 +1,10 @@ +{ + "lexicon": 1, + "id": "app.bsky.system.actorUser", + "defs": { + "main": { + "type": "token", + "description": "Actor type: User. Defined for app.bsky.system.declaration's actorType." + } + } +} diff --git a/lexicons/app/bsky/system/declRef.json b/lexicons/app/bsky/system/declRef.json new file mode 100644 index 0000000..869ebac --- /dev/null +++ b/lexicons/app/bsky/system/declRef.json @@ -0,0 +1,18 @@ +{ + "lexicon": 1, + "id": "app.bsky.system.declRef", + "defs": { + "main": { + "description": "A reference to a app.bsky.system.declaration record.", + "type": "object", + "required": ["cid", "actorType"], + "properties": { + "cid": {"type": "string"}, + "actorType": { + "type": "string", + "knownValues": ["app.bsky.system.actorUser"] + } + } + } + } +} diff --git a/lexicons/app/bsky/system/declaration.json b/lexicons/app/bsky/system/declaration.json new file mode 100644 index 0000000..ee73ee7 --- /dev/null +++ b/lexicons/app/bsky/system/declaration.json @@ -0,0 +1,21 @@ +{ + "lexicon": 1, + "id": "app.bsky.system.declaration", + "defs": { + "main": { + "description": "Context for an account that is considered intrinsic to it and alters the fundamental understanding of an account of changed. A declaration should be treated as immutable.", + "type": "record", + "key": "literal:self", + "record": { + "type": "object", + "required": ["actorType"], + "properties": { + "actorType": { + "type": "string", + "knownValues": ["app.bsky.system.actorUser"] + } + } + } + } + } +} diff --git a/lexicons/com/atproto/account/create.json b/lexicons/com/atproto/account/create.json new file mode 100644 index 0000000..f06bf3d --- /dev/null +++ b/lexicons/com/atproto/account/create.json @@ -0,0 +1,43 @@ +{ + "lexicon": 1, + "id": "com.atproto.account.create", + "defs": { + "main": { + "type": "procedure", + "description": "Create an account.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["handle", "email", "password"], + "properties": { + "email": {"type": "string"}, + "handle": {"type": "string"}, + "inviteCode": {"type": "string"}, + "password": {"type": "string"}, + "recoveryKey": {"type": "string"} + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["accessJwt", "refreshJwt", "handle", "did"], + "properties": { + "accessJwt": { "type": "string" }, + "refreshJwt": { "type": "string" }, + "handle": { "type": "string" }, + "did": { "type": "string" } + } + } + }, + "errors": [ + {"name": "InvalidHandle"}, + {"name": "InvalidPassword"}, + {"name": "InvalidInviteCode"}, + {"name": "HandleNotAvailable"} + ] + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/account/createInviteCode.json b/lexicons/com/atproto/account/createInviteCode.json new file mode 100644 index 0000000..710c5a5 --- /dev/null +++ b/lexicons/com/atproto/account/createInviteCode.json @@ -0,0 +1,30 @@ +{ + "lexicon": 1, + "id": "com.atproto.account.createInviteCode", + "defs": { + "main": { + "type": "procedure", + "description": "Create an invite code.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["useCount"], + "properties": { + "useCount": {"type": "integer"} + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["code"], + "properties": { + "code": { "type": "string" } + } + } + } + } + } +} diff --git a/lexicons/com/atproto/account/delete.json b/lexicons/com/atproto/account/delete.json new file mode 100644 index 0000000..5970101 --- /dev/null +++ b/lexicons/com/atproto/account/delete.json @@ -0,0 +1,23 @@ +{ + "lexicon": 1, + "id": "com.atproto.account.delete", + "defs": { + "main": { + "type": "procedure", + "description": "Delete a user account with a token and password.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["did", "password", "token"], + "properties": { + "did": { "type": "string" }, + "password": { "type": "string" }, + "token": { "type": "string" } + } + } + }, + "errors": [{ "name": "ExpiredToken" }, { "name": "InvalidToken" }] + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/account/get.json b/lexicons/com/atproto/account/get.json new file mode 100644 index 0000000..7a0d913 --- /dev/null +++ b/lexicons/com/atproto/account/get.json @@ -0,0 +1,10 @@ +{ + "lexicon": 1, + "id": "com.atproto.account.get", + "defs": { + "main": { + "type": "query", + "description": "Get information about an account." + } + } +} diff --git a/lexicons/com/atproto/account/requestDelete.json b/lexicons/com/atproto/account/requestDelete.json new file mode 100644 index 0000000..f99805e --- /dev/null +++ b/lexicons/com/atproto/account/requestDelete.json @@ -0,0 +1,10 @@ +{ + "lexicon": 1, + "id": "com.atproto.account.requestDelete", + "defs": { + "main": { + "type": "procedure", + "description": "Initiate a user account deletion via email." + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/account/requestPasswordReset.json b/lexicons/com/atproto/account/requestPasswordReset.json new file mode 100644 index 0000000..2b74897 --- /dev/null +++ b/lexicons/com/atproto/account/requestPasswordReset.json @@ -0,0 +1,20 @@ +{ + "lexicon": 1, + "id": "com.atproto.account.requestPasswordReset", + "defs": { + "main": { + "type": "procedure", + "description": "Initiate a user account password reset via email.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["email"], + "properties": { + "email": { "type": "string" } + } + } + } + } + } +} diff --git a/lexicons/com/atproto/account/resetPassword.json b/lexicons/com/atproto/account/resetPassword.json new file mode 100644 index 0000000..01336b9 --- /dev/null +++ b/lexicons/com/atproto/account/resetPassword.json @@ -0,0 +1,22 @@ +{ + "lexicon": 1, + "id": "com.atproto.account.resetPassword", + "defs": { + "main": { + "type": "procedure", + "description": "Reset a user account password using a token.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["token", "password"], + "properties": { + "token": { "type": "string" }, + "password": { "type": "string" } + } + } + }, + "errors": [{ "name": "ExpiredToken" }, { "name": "InvalidToken" }] + } + } +} diff --git a/lexicons/com/atproto/admin/blob.json b/lexicons/com/atproto/admin/blob.json new file mode 100644 index 0000000..475ca9c --- /dev/null +++ b/lexicons/com/atproto/admin/blob.json @@ -0,0 +1,45 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.blob", + "defs": { + "view": { + "type": "object", + "required": ["cid", "mimeType", "size", "createdAt"], + "properties": { + "cid": {"type": "string"}, + "mimeType": {"type": "string"}, + "size": {"type": "integer"}, + "createdAt": {"type": "datetime"}, + "details": { + "type": "union", + "refs": ["#imageDetails", "#videoDetails"] + }, + "moderation": {"type": "ref", "ref": "#moderation"} + } + }, + "imageDetails": { + "type": "object", + "required": ["width", "height"], + "properties": { + "width": {"type": "integer"}, + "height": {"type": "integer"} + } + }, + "videoDetails": { + "type": "object", + "required": ["width", "height", "length"], + "properties": { + "width": {"type": "integer"}, + "height": {"type": "integer"}, + "length": {"type": "integer"} + } + }, + "moderation": { + "type": "object", + "required": [], + "properties": { + "currentAction": {"type": "ref", "ref": "com.atproto.admin.moderationAction#viewCurrent"} + } + } + } +} diff --git a/lexicons/com/atproto/admin/getModerationAction.json b/lexicons/com/atproto/admin/getModerationAction.json new file mode 100644 index 0000000..b6f7b9d --- /dev/null +++ b/lexicons/com/atproto/admin/getModerationAction.json @@ -0,0 +1,21 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.getModerationAction", + "defs": { + "main": { + "type": "query", + "description": "View details about a moderation action.", + "parameters": { + "type": "params", + "required": ["id"], + "properties": { + "id": {"type": "integer"} + } + }, + "output": { + "encoding": "application/json", + "schema": {"type": "ref", "ref": "com.atproto.admin.moderationAction#viewDetail"} + } + } + } +} diff --git a/lexicons/com/atproto/admin/getModerationActions.json b/lexicons/com/atproto/admin/getModerationActions.json new file mode 100644 index 0000000..80915b7 --- /dev/null +++ b/lexicons/com/atproto/admin/getModerationActions.json @@ -0,0 +1,29 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.getModerationActions", + "defs": { + "main": { + "type": "query", + "description": "List moderation actions related to a subject.", + "parameters": { + "type": "params", + "properties": { + "subject": {"type": "string"}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["actions"], + "properties": { + "cursor": {"type": "string"}, + "actions": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.moderationAction#view"}} + } + } + } + } + } +} diff --git a/lexicons/com/atproto/admin/getModerationReport.json b/lexicons/com/atproto/admin/getModerationReport.json new file mode 100644 index 0000000..662c2a7 --- /dev/null +++ b/lexicons/com/atproto/admin/getModerationReport.json @@ -0,0 +1,21 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.getModerationReport", + "defs": { + "main": { + "type": "query", + "description": "View details about a moderation report.", + "parameters": { + "type": "params", + "required": ["id"], + "properties": { + "id": {"type": "integer"} + } + }, + "output": { + "encoding": "application/json", + "schema": {"type": "ref", "ref": "com.atproto.admin.moderationReport#viewDetail"} + } + } + } +} diff --git a/lexicons/com/atproto/admin/getModerationReports.json b/lexicons/com/atproto/admin/getModerationReports.json new file mode 100644 index 0000000..c6de7bf --- /dev/null +++ b/lexicons/com/atproto/admin/getModerationReports.json @@ -0,0 +1,30 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.getModerationReports", + "defs": { + "main": { + "type": "query", + "description": "List moderation reports related to a subject.", + "parameters": { + "type": "params", + "properties": { + "subject": {"type": "string"}, + "resolved": {"type": "boolean"}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["reports"], + "properties": { + "cursor": {"type": "string"}, + "reports": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.moderationReport#view"}} + } + } + } + } + } +} diff --git a/lexicons/com/atproto/admin/getRecord.json b/lexicons/com/atproto/admin/getRecord.json new file mode 100644 index 0000000..c91e1ae --- /dev/null +++ b/lexicons/com/atproto/admin/getRecord.json @@ -0,0 +1,22 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.getRecord", + "defs": { + "main": { + "type": "query", + "description": "View details about a record.", + "parameters": { + "type": "params", + "required": ["uri"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": {"type": "ref", "ref": "com.atproto.admin.record#viewDetail"} + } + } + } +} diff --git a/lexicons/com/atproto/admin/getRepo.json b/lexicons/com/atproto/admin/getRepo.json new file mode 100644 index 0000000..9fafcbf --- /dev/null +++ b/lexicons/com/atproto/admin/getRepo.json @@ -0,0 +1,21 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.getRepo", + "defs": { + "main": { + "type": "query", + "description": "View details about a repository.", + "parameters": { + "type": "params", + "required": ["did"], + "properties": { + "did": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": {"type": "ref", "ref": "com.atproto.admin.repo#viewDetail"} + } + } + } +} diff --git a/lexicons/com/atproto/admin/moderationAction.json b/lexicons/com/atproto/admin/moderationAction.json new file mode 100644 index 0000000..ac830d3 --- /dev/null +++ b/lexicons/com/atproto/admin/moderationAction.json @@ -0,0 +1,85 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.moderationAction", + "defs": { + "view": { + "type": "object", + "required": ["id", "action", "subject", "subjectBlobCids", "reason", "createdBy", "createdAt", "resolvedReportIds"], + "properties": { + "id": {"type": "integer"}, + "action": {"type": "ref", "ref": "#actionType"}, + "subject": { + "type": "union", + "refs": [ + "com.atproto.repo.repoRef", + "com.atproto.repo.strongRef" + ] + }, + "subjectBlobCids": {"type": "array", "items": {"type": "string"}}, + "reason": {"type": "string"}, + "createdBy": {"type": "string"}, + "createdAt": {"type": "string"}, + "reversal": {"type": "ref", "ref": "#reversal"}, + "resolvedReportIds": {"type": "array", "items": {"type": "integer"}} + } + }, + "viewDetail": { + "type": "object", + "required": ["id", "action", "subject", "subjectBlobs", "reason", "createdBy", "createdAt", "resolvedReports"], + "properties": { + "id": {"type": "integer"}, + "action": {"type": "ref", "ref": "#actionType"}, + "subject": { + "type": "union", + "refs": [ + "com.atproto.admin.repo#view", + "com.atproto.admin.record#view" + ] + }, + "subjectBlobs": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.blob#view"}}, + "reason": {"type": "string"}, + "createdBy": {"type": "string"}, + "createdAt": {"type": "string"}, + "reversal": {"type": "ref", "ref": "#reversal"}, + "resolvedReports": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.moderationReport#view"}} + } + }, + "viewCurrent": { + "type": "object", + "required": ["id", "action"], + "properties": { + "id": {"type": "integer"}, + "action": {"type": "ref", "ref": "#actionType"} + } + }, + "reversal": { + "type": "object", + "required": ["reason", "createdBy", "createdAt"], + "properties": { + "reason": {"type": "string"}, + "createdBy": {"type": "string"}, + "createdAt": {"type": "string"} + } + }, + "actionType": { + "type": "string", + "knownValues": [ + "com.atproto.admin.moderationAction#takedown", + "com.atproto.admin.moderationAction#flag", + "com.atproto.admin.moderationAction#acknowledge" + ] + }, + "takedown": { + "type": "token", + "description": "Moderation action type: Takedown. Indicates that content should not be served by the PDS." + }, + "flag": { + "type": "token", + "description": "Moderation action type: Flag. Indicates that the content was reviewed and considered to violate PDS rules, but may still be served." + }, + "acknowledge": { + "type": "token", + "description": "Moderation action type: Acknowledge. Indicates that the content was reviewed and not considered to violate PDS rules." + } + } +} diff --git a/lexicons/com/atproto/admin/moderationReport.json b/lexicons/com/atproto/admin/moderationReport.json new file mode 100644 index 0000000..f399f80 --- /dev/null +++ b/lexicons/com/atproto/admin/moderationReport.json @@ -0,0 +1,44 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.moderationReport", + "defs": { + "view": { + "type": "object", + "required": ["id", "reasonType", "subject", "reportedByDid", "createdAt", "resolvedByActionIds"], + "properties": { + "id": {"type": "integer"}, + "reasonType": {"type": "ref", "ref": "com.atproto.report.reasonType"}, + "reason": {"type": "string"}, + "subject": { + "type": "union", + "refs": [ + "com.atproto.repo.repoRef", + "com.atproto.repo.strongRef" + ] + }, + "reportedByDid": {"type": "string"}, + "createdAt": {"type": "datetime"}, + "resolvedByActionIds": {"type": "array", "items": {"type": "integer"}} + } + }, + "viewDetail": { + "type": "object", + "required": ["id", "reasonType", "subject", "reportedByDid", "createdAt", "resolvedByActions"], + "properties": { + "id": {"type": "integer"}, + "reasonType": {"type": "ref", "ref": "com.atproto.report.reasonType"}, + "reason": {"type": "string"}, + "subject": { + "type": "union", + "refs": [ + "com.atproto.admin.repo#view", + "com.atproto.admin.record#view" + ] + }, + "reportedByDid": {"type": "string"}, + "createdAt": {"type": "datetime"}, + "resolvedByActions": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.moderationAction#view"}} + } + } + } +} diff --git a/lexicons/com/atproto/admin/record.json b/lexicons/com/atproto/admin/record.json new file mode 100644 index 0000000..b168c0e --- /dev/null +++ b/lexicons/com/atproto/admin/record.json @@ -0,0 +1,48 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.record", + "defs": { + "view": { + "type": "object", + "required": ["uri", "cid", "value", "blobCids", "indexedAt", "moderation", "repo"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "value": {"type": "unknown"}, + "blobCids": {"type": "array", "items": {"type": "string"}}, + "indexedAt": {"type": "string"}, + "moderation": {"type": "ref", "ref": "#moderation"}, + "repo": {"type": "ref", "ref": "com.atproto.admin.repo#view"} + } + }, + "viewDetail": { + "type": "object", + "required": ["uri", "cid", "value", "blobs", "indexedAt", "moderation", "repo"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "value": {"type": "unknown"}, + "blobs": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.blob#view"}}, + "indexedAt": {"type": "string"}, + "moderation": {"type": "ref", "ref": "#moderationDetail"}, + "repo": {"type": "ref", "ref": "com.atproto.admin.repo#view"} + } + }, + "moderation": { + "type": "object", + "required": [], + "properties": { + "currentAction": {"type": "ref", "ref": "com.atproto.admin.moderationAction#viewCurrent"} + } + }, + "moderationDetail": { + "type": "object", + "required": ["actions", "reports"], + "properties": { + "currentAction": {"type": "ref", "ref": "com.atproto.admin.moderationAction#viewCurrent"}, + "actions": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.moderationAction#view"}}, + "reports": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.moderationReport#view"}} + } + } + } +} diff --git a/lexicons/com/atproto/admin/repo.json b/lexicons/com/atproto/admin/repo.json new file mode 100644 index 0000000..7e31ed5 --- /dev/null +++ b/lexicons/com/atproto/admin/repo.json @@ -0,0 +1,53 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.repo", + "defs": { + "view": { + "type": "object", + "required": ["did", "handle", "relatedRecords", "indexedAt", "moderation"], + "properties": { + "did": {"type": "string"}, + "handle": {"type": "string"}, + "account": {"type": "ref", "ref": "#account"}, + "relatedRecords": {"type": "array", "items": {"type": "unknown"}}, + "indexedAt": {"type": "string"}, + "moderation": {"type": "ref", "ref": "#moderation"} + } + }, + "viewDetail": { + "type": "object", + "required": ["did", "handle", "relatedRecords", "indexedAt", "moderation"], + "properties": { + "did": {"type": "string"}, + "handle": {"type": "string"}, + "account": {"type": "ref", "ref": "#account"}, + "relatedRecords": {"type": "array", "items": {"type": "unknown"}}, + "indexedAt": {"type": "string"}, + "moderation": {"type": "ref", "ref": "#moderationDetail"} + } + }, + "account": { + "type": "object", + "required": ["email"], + "properties": { + "email": {"type": "string"} + } + }, + "moderation": { + "type": "object", + "required": [], + "properties": { + "currentAction": {"type": "ref", "ref": "com.atproto.admin.moderationAction#viewCurrent"} + } + }, + "moderationDetail": { + "type": "object", + "required": ["actions", "reports"], + "properties": { + "currentAction": {"type": "ref", "ref": "com.atproto.admin.moderationAction#viewCurrent"}, + "actions": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.moderationAction#view"}}, + "reports": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.moderationReport#view"}} + } + } + } +} diff --git a/lexicons/com/atproto/admin/resolveModerationReports.json b/lexicons/com/atproto/admin/resolveModerationReports.json new file mode 100644 index 0000000..edc2d33 --- /dev/null +++ b/lexicons/com/atproto/admin/resolveModerationReports.json @@ -0,0 +1,29 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.resolveModerationReports", + "defs": { + "main": { + "type": "procedure", + "description": "Resolve moderation reports by an action.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["actionId", "reportIds", "createdBy"], + "properties": { + "actionId": {"type": "integer"}, + "reportIds": {"type": "array", "items": {"type": "integer"}}, + "createdBy": {"type": "string"} + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "ref", + "ref": "com.atproto.admin.moderationAction#view" + } + } + } + } +} diff --git a/lexicons/com/atproto/admin/reverseModerationAction.json b/lexicons/com/atproto/admin/reverseModerationAction.json new file mode 100644 index 0000000..c048ad9 --- /dev/null +++ b/lexicons/com/atproto/admin/reverseModerationAction.json @@ -0,0 +1,29 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.reverseModerationAction", + "defs": { + "main": { + "type": "procedure", + "description": "Reverse a moderation action.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["id", "reason", "createdBy"], + "properties": { + "id": {"type": "integer"}, + "reason": {"type": "string"}, + "createdBy": {"type": "string"} + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "ref", + "ref": "com.atproto.admin.moderationAction#view" + } + } + } + } +} diff --git a/lexicons/com/atproto/admin/searchRepos.json b/lexicons/com/atproto/admin/searchRepos.json new file mode 100644 index 0000000..04efb2e --- /dev/null +++ b/lexicons/com/atproto/admin/searchRepos.json @@ -0,0 +1,29 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.searchRepos", + "defs": { + "main": { + "type": "query", + "description": "Find repositories based on a search term.", + "parameters": { + "type": "params", + "properties": { + "term": {"type": "string"}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50}, + "before": {"type": "string"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["repos"], + "properties": { + "cursor": {"type": "string"}, + "repos": {"type": "array", "items": {"type": "ref", "ref": "com.atproto.admin.repo#view"}} + } + } + } + } + } +} diff --git a/lexicons/com/atproto/admin/takeModerationAction.json b/lexicons/com/atproto/admin/takeModerationAction.json new file mode 100644 index 0000000..4778f06 --- /dev/null +++ b/lexicons/com/atproto/admin/takeModerationAction.json @@ -0,0 +1,45 @@ +{ + "lexicon": 1, + "id": "com.atproto.admin.takeModerationAction", + "defs": { + "main": { + "type": "procedure", + "description": "Take a moderation action on a repo.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["action", "subject", "reason", "createdBy"], + "properties": { + "action": { + "type": "string", + "knownValues": [ + "com.atproto.admin.moderationAction#takedown", + "com.atproto.admin.moderationAction#flag", + "com.atproto.admin.moderationAction#acknowledge" + ] + }, + "subject": { + "type": "union", + "refs": [ + "com.atproto.repo.repoRef", + "com.atproto.repo.recordRef" + ] + }, + "subjectBlobCids": {"type": "array", "items": {"type": "string"}}, + "reason": {"type": "string"}, + "createdBy": {"type": "string"} + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "ref", + "ref": "com.atproto.admin.moderationAction#view" + } + }, + "errors": [{ "name": "SubjectHasAction" }] + } + } +} diff --git a/lexicons/com/atproto/blob/upload.json b/lexicons/com/atproto/blob/upload.json new file mode 100644 index 0000000..71769c8 --- /dev/null +++ b/lexicons/com/atproto/blob/upload.json @@ -0,0 +1,23 @@ +{ + "lexicon": 1, + "id": "com.atproto.blob.upload", + "defs": { + "main": { + "type": "procedure", + "description": "Upload a new blob to be added to repo in a later request.", + "input": { + "encoding": "*/*" + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["cid"], + "properties": { + "cid": {"type": "string"} + } + } + } + } + } +} diff --git a/lexicons/com/atproto/handle/resolve.json b/lexicons/com/atproto/handle/resolve.json new file mode 100644 index 0000000..531ee4a --- /dev/null +++ b/lexicons/com/atproto/handle/resolve.json @@ -0,0 +1,26 @@ +{ + "lexicon": 1, + "id": "com.atproto.handle.resolve", + "defs": { + "main": { + "type": "query", + "description": "Provides the DID of a repo.", + "parameters": { + "type": "params", + "properties": { + "handle": {"type": "string", "description": "The handle to resolve. If not supplied, will resolve the host's own handle."} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["did"], + "properties": { + "did": {"type": "string"} + } + } + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/handle/update.json b/lexicons/com/atproto/handle/update.json new file mode 100644 index 0000000..4eec2e3 --- /dev/null +++ b/lexicons/com/atproto/handle/update.json @@ -0,0 +1,20 @@ +{ + "lexicon": 1, + "id": "com.atproto.handle.update", + "defs": { + "main": { + "type": "procedure", + "description": "Updates the handle of the account", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["handle"], + "properties": { + "handle": {"type": "string"} + } + } + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/repo/batchWrite.json b/lexicons/com/atproto/repo/batchWrite.json new file mode 100644 index 0000000..47c27ba --- /dev/null +++ b/lexicons/com/atproto/repo/batchWrite.json @@ -0,0 +1,61 @@ +{ + "lexicon": 1, + "id": "com.atproto.repo.batchWrite", + "defs": { + "main": { + "type": "procedure", + "description": "Apply a batch transaction of creates, puts, and deletes.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["did", "writes"], + "properties": { + "did": { + "type": "string", + "description": "The DID of the repo." + }, + "validate": { + "type": "boolean", + "default": true, + "description": "Validate the records?" + }, + "writes": { + "type": "array", + "items": {"type": "union", "refs": ["#create", "#update", "#delete"], "closed": true} + } + } + } + } + }, + "create": { + "type": "object", + "required": ["action", "collection", "value"], + "properties": { + "action": {"type": "string", "const": "create"}, + "collection": {"type": "string"}, + "rkey": {"type": "string"}, + "value": {"type": "unknown"} + } + }, + "update": { + "type": "object", + "required": ["action", "collection", "rkey", "value"], + "properties": { + "action": {"type": "string", "const": "update"}, + "collection": {"type": "string"}, + "rkey": {"type": "string"}, + "value": {"type": "unknown"} + } + }, + "delete": { + "type": "object", + "required": ["action", "collection", "rkey"], + "properties": { + "action": {"type": "string", "const": "delete"}, + "collection": {"type": "string"}, + "rkey": {"type": "string"} + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/repo/createRecord.json b/lexicons/com/atproto/repo/createRecord.json new file mode 100644 index 0000000..cdc7e37 --- /dev/null +++ b/lexicons/com/atproto/repo/createRecord.json @@ -0,0 +1,47 @@ +{ + "lexicon": 1, + "id": "com.atproto.repo.createRecord", + "defs": { + "main": { + "type": "procedure", + "description": "Create a new record.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["did", "collection", "record"], + "properties": { + "did": { + "type": "string", + "description": "The DID of the repo." + }, + "collection": { + "type": "string", + "description": "The NSID of the record collection." + }, + "validate": { + "type": "boolean", + "default": true, + "description": "Validate the record?" + }, + "record": { + "type": "unknown", + "description": "The record to create." + } + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["uri", "cid"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"} + } + } + } + } + } +} diff --git a/lexicons/com/atproto/repo/deleteRecord.json b/lexicons/com/atproto/repo/deleteRecord.json new file mode 100644 index 0000000..7fb5673 --- /dev/null +++ b/lexicons/com/atproto/repo/deleteRecord.json @@ -0,0 +1,31 @@ +{ + "lexicon": 1, + "id": "com.atproto.repo.deleteRecord", + "defs": { + "main": { + "type": "procedure", + "description": "Delete a record.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["did", "collection", "rkey"], + "properties": { + "did": { + "type": "string", + "description": "The DID of the repo." + }, + "collection": { + "type": "string", + "description": "The NSID of the record collection." + }, + "rkey": { + "type": "string", + "description": "The key of the record." + } + } + } + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/repo/describe.json b/lexicons/com/atproto/repo/describe.json new file mode 100644 index 0000000..b29a3f0 --- /dev/null +++ b/lexicons/com/atproto/repo/describe.json @@ -0,0 +1,31 @@ +{ + "lexicon": 1, + "id": "com.atproto.repo.describe", + "defs": { + "main": { + "type": "query", + "description": "Get information about the repo, including the list of collections.", + "parameters": { + "type": "params", + "required": ["user"], + "properties": { + "user": {"type": "string", "description": "The handle or DID of the repo."} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["handle", "did", "didDoc", "collections", "handleIsCorrect"], + "properties": { + "handle": {"type": "string"}, + "did": {"type": "string"}, + "didDoc": {"type": "unknown"}, + "collections": {"type": "array", "items": {"type": "string"}}, + "handleIsCorrect": {"type": "boolean"} + } + } + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/repo/getRecord.json b/lexicons/com/atproto/repo/getRecord.json new file mode 100644 index 0000000..fd464a4 --- /dev/null +++ b/lexicons/com/atproto/repo/getRecord.json @@ -0,0 +1,32 @@ +{ + "lexicon": 1, + "id": "com.atproto.repo.getRecord", + "defs": { + "main": { + "type": "query", + "description": "Fetch a record.", + "parameters": { + "type": "params", + "required": ["user", "collection", "rkey"], + "properties": { + "user": {"type": "string", "description": "The handle or DID of the repo."}, + "collection": {"type": "string", "description": "The NSID of the collection."}, + "rkey": {"type": "string", "description": "The key of the record."}, + "cid": {"type": "string", "description": "The CID of the version of the record. If not specified, then return the most recent version."} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["uri", "value"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "value": {"type": "unknown"} + } + } + } + } + } +} diff --git a/lexicons/com/atproto/repo/listRecords.json b/lexicons/com/atproto/repo/listRecords.json new file mode 100644 index 0000000..814cf85 --- /dev/null +++ b/lexicons/com/atproto/repo/listRecords.json @@ -0,0 +1,45 @@ +{ + "lexicon": 1, + "id": "com.atproto.repo.listRecords", + "defs": { + "main": { + "type": "query", + "description": "List a range of records in a collection.", + "parameters": { + "type": "params", + "required": ["user", "collection"], + "properties": { + "user": {"type": "string", "description": "The handle or DID of the repo."}, + "collection": {"type": "string", "description": "The NSID of the record type."}, + "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 50, "description": "The number of records to return."}, + "before": {"type": "string", "description": "A TID to filter the range of records returned."}, + "after": {"type": "string", "description": "A TID to filter the range of records returned."}, + "reverse": {"type": "boolean", "description": "Reverse the order of the returned records?"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["records"], + "properties": { + "cursor": {"type": "string"}, + "records": { + "type": "array", + "items": {"type": "ref", "ref": "#record"} + } + } + } + } + }, + "record": { + "type": "object", + "required": ["uri", "cid", "value"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"}, + "value": {"type": "unknown"} + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/repo/putRecord.json b/lexicons/com/atproto/repo/putRecord.json new file mode 100644 index 0000000..f5eddb4 --- /dev/null +++ b/lexicons/com/atproto/repo/putRecord.json @@ -0,0 +1,51 @@ +{ + "lexicon": 1, + "id": "com.atproto.repo.putRecord", + "defs": { + "main": { + "type": "procedure", + "description": "Write a record.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["did", "collection", "rkey", "record"], + "properties": { + "did": { + "type": "string", + "description": "The DID of the repo." + }, + "collection": { + "type": "string", + "description": "The NSID of the record type." + }, + "rkey": { + "type": "string", + "description": "The TID of the record." + }, + "validate": { + "type": "boolean", + "default": true, + "description": "Validate the record?" + }, + "record": { + "type": "unknown", + "description": "The record to create." + } + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["uri", "cid"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"} + } + } + } + } + } +} diff --git a/lexicons/com/atproto/repo/recordRef.json b/lexicons/com/atproto/repo/recordRef.json new file mode 100644 index 0000000..91ebe2d --- /dev/null +++ b/lexicons/com/atproto/repo/recordRef.json @@ -0,0 +1,15 @@ +{ + "lexicon": 1, + "id": "com.atproto.repo.recordRef", + "description": "A URI with optional content-hash fingerprint.", + "defs": { + "main": { + "type": "object", + "required": ["uri"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"} + } + } + } +} diff --git a/lexicons/com/atproto/repo/repoRef.json b/lexicons/com/atproto/repo/repoRef.json new file mode 100644 index 0000000..97ea795 --- /dev/null +++ b/lexicons/com/atproto/repo/repoRef.json @@ -0,0 +1,14 @@ +{ + "lexicon": 1, + "id": "com.atproto.repo.repoRef", + "description": "A did identifying a repository.", + "defs": { + "main": { + "type": "object", + "required": ["did"], + "properties": { + "did": {"type": "string"} + } + } + } +} diff --git a/lexicons/com/atproto/repo/strongRef.json b/lexicons/com/atproto/repo/strongRef.json new file mode 100644 index 0000000..bb9d3ec --- /dev/null +++ b/lexicons/com/atproto/repo/strongRef.json @@ -0,0 +1,15 @@ +{ + "lexicon": 1, + "id": "com.atproto.repo.strongRef", + "description": "A URI with a content-hash fingerprint.", + "defs": { + "main": { + "type": "object", + "required": ["uri", "cid"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"} + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/report/create.json b/lexicons/com/atproto/report/create.json new file mode 100644 index 0000000..213ecae --- /dev/null +++ b/lexicons/com/atproto/report/create.json @@ -0,0 +1,49 @@ +{ + "lexicon": 1, + "id": "com.atproto.report.create", + "defs": { + "main": { + "type": "procedure", + "description": "Report a repo or a record.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["reasonType", "subject"], + "properties": { + "reasonType": {"type": "ref", "ref": "com.atproto.report.reasonType"}, + "reason": {"type": "string"}, + "subject": { + "type": "union", + "refs": [ + "com.atproto.repo.repoRef", + "com.atproto.repo.recordRef" + ] + } + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["id", "reasonType", "subject", "reportedByDid", "createdAt"], + "properties": { + "id": {"type": "integer"}, + "reasonType": {"type": "ref", "ref": "com.atproto.report.reasonType"}, + "reason": {"type": "string"}, + "subject": { + "type": "union", + "refs": [ + "com.atproto.repo.repoRef", + "com.atproto.repo.strongRef" + ] + }, + "reportedByDid": {"type": "string"}, + "createdAt": {"type": "datetime"} + } + } + } + } + } +} diff --git a/lexicons/com/atproto/report/reasonType.json b/lexicons/com/atproto/report/reasonType.json new file mode 100644 index 0000000..9a978d1 --- /dev/null +++ b/lexicons/com/atproto/report/reasonType.json @@ -0,0 +1,21 @@ +{ + "lexicon": 1, + "id": "com.atproto.report.reasonType", + "defs": { + "main": { + "type": "string", + "knownValues": [ + "com.atproto.report.reasonType#spam", + "com.atproto.report.reasonType#other" + ] + }, + "spam": { + "type": "token", + "description": "Moderation report reason: Spam." + }, + "other": { + "type": "token", + "description": "Moderation report reason: Other." + } + } + } diff --git a/lexicons/com/atproto/report/subject.json b/lexicons/com/atproto/report/subject.json new file mode 100644 index 0000000..5c3f198 --- /dev/null +++ b/lexicons/com/atproto/report/subject.json @@ -0,0 +1,31 @@ +{ + "lexicon": 1, + "id": "com.atproto.report.subject", + "defs": { + "repo": { + "type": "object", + "required": ["did"], + "properties": { + "did": {"type": "string", "description": "The DID of the repo."} + } + }, + "record": { + "type": "object", + "required": ["did", "collection", "rkey"], + "properties": { + "did": {"type": "string", "description": "The DID of the repo."}, + "collection": {"type": "string", "description": "The NSID of the collection."}, + "rkey": {"type": "string", "description": "The key of the record."}, + "cid": {"type": "string", "description": "The CID of the version of the record. If not specified, defaults to the most recent version."} + } + }, + "recordRef": { + "type": "object", + "required": ["uri", "cid"], + "properties": { + "uri": {"type": "string"}, + "cid": {"type": "string"} + } + } + } + } diff --git a/lexicons/com/atproto/server/getAccountsConfig.json b/lexicons/com/atproto/server/getAccountsConfig.json new file mode 100644 index 0000000..aeffa4e --- /dev/null +++ b/lexicons/com/atproto/server/getAccountsConfig.json @@ -0,0 +1,29 @@ +{ + "lexicon": 1, + "id": "com.atproto.server.getAccountsConfig", + "defs": { + "main": { + "type": "query", + "description": "Get a document describing the service's accounts configuration.", + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["availableUserDomains"], + "properties": { + "inviteCodeRequired": {"type": "boolean"}, + "availableUserDomains": {"type": "array", "items": {"type": "string"}}, + "links": {"type": "ref", "ref": "#links"} + } + } + } + }, + "links": { + "type": "object", + "properties": { + "privacyPolicy": {"type": "string"}, + "termsOfService": {"type": "string"} + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/session/create.json b/lexicons/com/atproto/session/create.json new file mode 100644 index 0000000..ea8edb5 --- /dev/null +++ b/lexicons/com/atproto/session/create.json @@ -0,0 +1,37 @@ +{ + "lexicon": 1, + "id": "com.atproto.session.create", + "defs": { + "main": { + "type": "procedure", + "description": "Create an authentication session.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["password"], + "properties": { + "identifier": {"type": "string", "description": "Handle or other identifier supported by the server for the authenticating user."}, + "password": {"type": "string"} + } + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["accessJwt", "refreshJwt", "handle", "did"], + "properties": { + "accessJwt": {"type": "string"}, + "refreshJwt": {"type": "string"}, + "handle": {"type": "string"}, + "did": {"type": "string"} + } + } + }, + "errors": [ + {"name": "AccountTakedown"} + ] + } + } +} diff --git a/lexicons/com/atproto/session/delete.json b/lexicons/com/atproto/session/delete.json new file mode 100644 index 0000000..0f8d7a7 --- /dev/null +++ b/lexicons/com/atproto/session/delete.json @@ -0,0 +1,10 @@ +{ + "lexicon": 1, + "id": "com.atproto.session.delete", + "defs": { + "main": { + "type": "procedure", + "description": "Delete the current session." + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/session/get.json b/lexicons/com/atproto/session/get.json new file mode 100644 index 0000000..8e5470d --- /dev/null +++ b/lexicons/com/atproto/session/get.json @@ -0,0 +1,21 @@ +{ + "lexicon": 1, + "id": "com.atproto.session.get", + "defs": { + "main": { + "type": "query", + "description": "Get information about the current session.", + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["handle", "did"], + "properties": { + "handle": {"type": "string"}, + "did": {"type": "string"} + } + } + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/session/refresh.json b/lexicons/com/atproto/session/refresh.json new file mode 100644 index 0000000..6d825bf --- /dev/null +++ b/lexicons/com/atproto/session/refresh.json @@ -0,0 +1,26 @@ +{ + "lexicon": 1, + "id": "com.atproto.session.refresh", + "defs": { + "main": { + "type": "procedure", + "description": "Refresh an authentication session.", + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["accessJwt", "refreshJwt", "handle", "did"], + "properties": { + "accessJwt": {"type": "string"}, + "refreshJwt": {"type": "string"}, + "handle": {"type": "string"}, + "did": {"type": "string"} + } + } + }, + "errors": [ + {"name": "AccountTakedown"} + ] + } + } +} diff --git a/lexicons/com/atproto/sync/getBlocks.json b/lexicons/com/atproto/sync/getBlocks.json new file mode 100644 index 0000000..10fb0eb --- /dev/null +++ b/lexicons/com/atproto/sync/getBlocks.json @@ -0,0 +1,24 @@ +{ + "lexicon": 1, + "id": "com.atproto.sync.getBlocks", + "defs": { + "main": { + "type": "query", + "description": "Gets blocks from a given repo.", + "parameters": { + "type": "params", + "required": ["did", "cids"], + "properties": { + "did": {"type": "string", "description": "The DID of the repo."}, + "cids": { + "type": "array", + "items": {"type": "string"} + } + } + }, + "output": { + "encoding": "application/vnd.ipld.car" + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/sync/getCheckout.json b/lexicons/com/atproto/sync/getCheckout.json new file mode 100644 index 0000000..f71dd04 --- /dev/null +++ b/lexicons/com/atproto/sync/getCheckout.json @@ -0,0 +1,21 @@ +{ + "lexicon": 1, + "id": "com.atproto.sync.getCheckout", + "defs": { + "main": { + "type": "query", + "description": "Gets the repo state.", + "parameters": { + "type": "params", + "required": ["did"], + "properties": { + "did": {"type": "string", "description": "The DID of the repo."}, + "commit": {"type": "string", "description": "The commit to get the checkout from. Defaults to current HEAD."} + } + }, + "output": { + "encoding": "application/vnd.ipld.car" + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/sync/getCommitPath.json b/lexicons/com/atproto/sync/getCommitPath.json new file mode 100644 index 0000000..adfb5b8 --- /dev/null +++ b/lexicons/com/atproto/sync/getCommitPath.json @@ -0,0 +1,32 @@ +{ + "lexicon": 1, + "id": "com.atproto.sync.getCommitPath", + "defs": { + "main": { + "type": "query", + "description": "Gets the path of repo commits", + "parameters": { + "type": "params", + "required": ["did"], + "properties": { + "did": {"type": "string", "description": "The DID of the repo."}, + "latest": { "type": "string", "description": "The most recent commit"}, + "earliest": { "type": "string", "description": "The earliest commit to start from"} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["commits"], + "properties": { + "commits": { + "type": "array", + "items": { "type": "string" } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/sync/getHead.json b/lexicons/com/atproto/sync/getHead.json new file mode 100644 index 0000000..bcb713b --- /dev/null +++ b/lexicons/com/atproto/sync/getHead.json @@ -0,0 +1,27 @@ +{ + "lexicon": 1, + "id": "com.atproto.sync.getHead", + "defs": { + "main": { + "type": "query", + "description": "Gets the current HEAD CID of a repo.", + "parameters": { + "type": "params", + "required": ["did"], + "properties": { + "did": {"type": "string", "description": "The DID of the repo."} + } + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": ["root"], + "properties": { + "root": {"type": "string"} + } + } + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/sync/getRecord.json b/lexicons/com/atproto/sync/getRecord.json new file mode 100644 index 0000000..8ab77ce --- /dev/null +++ b/lexicons/com/atproto/sync/getRecord.json @@ -0,0 +1,23 @@ +{ + "lexicon": 1, + "id": "com.atproto.sync.getRecord", + "defs": { + "main": { + "type": "query", + "description": "Gets blocks needed for existence or non-existence of record.", + "parameters": { + "type": "params", + "required": ["did", "collection", "rkey"], + "properties": { + "did": {"type": "string", "description": "The DID of the repo."}, + "collection": {"type": "string" }, + "rkey": {"type": "string" }, + "commit": {"type": "string", "description": "An optional past commit CID."} + } + }, + "output": { + "encoding": "application/vnd.ipld.car" + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/sync/getRepo.json b/lexicons/com/atproto/sync/getRepo.json new file mode 100644 index 0000000..972ec73 --- /dev/null +++ b/lexicons/com/atproto/sync/getRepo.json @@ -0,0 +1,22 @@ +{ + "lexicon": 1, + "id": "com.atproto.sync.getRepo", + "defs": { + "main": { + "type": "query", + "description": "Gets the repo state.", + "parameters": { + "type": "params", + "required": ["did"], + "properties": { + "did": {"type": "string", "description": "The DID of the repo."}, + "earliest": {"type": "string", "description": "The earliest commit in the commit range (not inclusive)"}, + "latest": {"type": "string", "description": "The latest commit you in the commit range (inclusive"} + } + }, + "output": { + "encoding": "application/vnd.ipld.car" + } + } + } +} \ No newline at end of file diff --git a/lexicons/com/atproto/sync/subscribeAllRepos.json b/lexicons/com/atproto/sync/subscribeAllRepos.json new file mode 100644 index 0000000..e9f0b67 --- /dev/null +++ b/lexicons/com/atproto/sync/subscribeAllRepos.json @@ -0,0 +1,50 @@ +{ + "lexicon": 1, + "id": "com.atproto.sync.subscribeAllRepos", + "defs": { + "main": { + "type": "subscription", + "description": "Subscribe to repo updates", + "parameters": { + "type": "params", + "properties": { + "cursor": { + "type": "integer", + "description": "The last known event to backfill from." + } + } + }, + "message": { + "schema": { + "type": "object", + "required": ["seq", "event", "repo", "commit", "blocks", "blobs", "time"], + "properties": { + "seq": {"type": "integer"}, + "event": { + "type": "string", + "knownValues": [ + "repo_append", + "rebase" + ] + }, + "repo": {"type": "string"}, + "commit": {"type": "string"}, + "prev": {"type": "string"}, + "blocks": {"type": "unknown"}, + "blobs": { + "type": "array", + "items": {"type": "string"} + }, + "time": {"type": "datetime"} + } + } + }, + "infos": [ + {"name": "OutdatedCursor"} + ], + "errors": [ + {"name": "FutureCursor"} + ] + } + } +} \ No newline at end of file