At Protocol Lexicons
At Protocol uses Lexicons to describe objects and operations
This site contains all at protocol lexicons defined in the following repositories
- https://github.com/bluesky-social/atproto/
- https://github.com/lexicon-community/lexicon
- https://github.com/FujoWebDev/lexicon-guestbook/
- com.atproto.lexicon.resolveLexicon
- com.atproto.lexicon.schema
- com.atproto.sync.defs
- com.atproto.sync.getBlob
- com.atproto.sync.getBlocks
- com.atproto.sync.getCheckout
- com.atproto.sync.getHead
- com.atproto.sync.getHostStatus
- com.atproto.sync.getLatestCommit
- com.atproto.sync.getRecord
- com.atproto.sync.getRepo
- com.atproto.sync.getRepoStatus
- com.atproto.sync.listBlobs
- com.atproto.sync.listHosts
- com.atproto.sync.listRepos
- com.atproto.sync.listReposByCollection
- com.atproto.sync.notifyOfUpdate
- com.atproto.sync.requestCrawl
- com.atproto.sync.subscribeRepos
- com.atproto.server.activateAccount
- com.atproto.server.checkAccountStatus
- com.atproto.server.confirmEmail
- com.atproto.server.createAccount
- com.atproto.server.createAppPassword
- com.atproto.server.createInviteCode
- com.atproto.server.createInviteCodes
- com.atproto.server.createSession
- com.atproto.server.deactivateAccount
- com.atproto.server.defs
- com.atproto.server.deleteAccount
- com.atproto.server.deleteSession
- com.atproto.server.describeServer
- com.atproto.server.getAccountInviteCodes
- com.atproto.server.getServiceAuth
- com.atproto.server.getSession
- com.atproto.server.listAppPasswords
- com.atproto.server.refreshSession
- com.atproto.server.requestAccountDelete
- com.atproto.server.requestEmailConfirmation
- com.atproto.server.requestEmailUpdate
- com.atproto.server.requestPasswordReset
- com.atproto.server.reserveSigningKey
- com.atproto.server.resetPassword
- com.atproto.server.revokeAppPassword
- com.atproto.server.updateEmail
- com.atproto.label.defs
- com.atproto.label.queryLabels
- com.atproto.label.subscribeLabels
- com.atproto.admin.defs
- com.atproto.admin.deleteAccount
- com.atproto.admin.disableAccountInvites
- com.atproto.admin.disableInviteCodes
- com.atproto.admin.enableAccountInvites
- com.atproto.admin.getAccountInfo
- com.atproto.admin.getAccountInfos
- com.atproto.admin.getInviteCodes
- com.atproto.admin.getSubjectStatus
- com.atproto.admin.searchAccounts
- com.atproto.admin.sendEmail
- com.atproto.admin.updateAccountEmail
- com.atproto.admin.updateAccountHandle
- com.atproto.admin.updateAccountPassword
- com.atproto.admin.updateAccountSigningKey
- com.atproto.admin.updateSubjectStatus
- com.atproto.moderation.createReport
- com.atproto.moderation.defs
- com.atproto.temp.addReservedHandle
- com.atproto.temp.checkHandleAvailability
- com.atproto.temp.checkSignupQueue
- com.atproto.temp.dereferenceScope
- com.atproto.temp.fetchLabels
- com.atproto.temp.requestPhoneVerification
- com.atproto.temp.revokeAccountCredentials
- com.atproto.repo.applyWrites
- com.atproto.repo.createRecord
- com.atproto.repo.defs
- com.atproto.repo.deleteRecord
- com.atproto.repo.describeRepo
- com.atproto.repo.getRecord
- com.atproto.repo.importRepo
- com.atproto.repo.listMissingBlobs
- com.atproto.repo.listRecords
- com.atproto.repo.putRecord
- com.atproto.repo.strongRef
- com.atproto.repo.uploadBlob
- com.atproto.identity.defs
- com.atproto.identity.getRecommendedDidCredentials
- com.atproto.identity.refreshIdentity
- com.atproto.identity.requestPlcOperationSignature
- com.atproto.identity.resolveDid
- com.atproto.identity.resolveHandle
- com.atproto.identity.resolveIdentity
- com.atproto.identity.signPlcOperation
- com.atproto.identity.submitPlcOperation
- com.atproto.identity.updateHandle
- tools.ozone.setting.defs
- tools.ozone.setting.listOptions
- tools.ozone.setting.removeOptions
- tools.ozone.setting.upsertOption
- tools.ozone.verification.defs
- tools.ozone.verification.grantVerifications
- tools.ozone.verification.listVerifications
- tools.ozone.verification.revokeVerifications
- tools.ozone.set.addValues
- tools.ozone.set.defs
- tools.ozone.set.deleteSet
- tools.ozone.set.deleteValues
- tools.ozone.set.getValues
- tools.ozone.set.querySets
- tools.ozone.set.upsertSet
- tools.ozone.queue.assignModerator
- tools.ozone.queue.createQueue
- tools.ozone.queue.defs
- tools.ozone.queue.deleteQueue
- tools.ozone.queue.getAssignments
- tools.ozone.queue.listQueues
- tools.ozone.queue.routeReports
- tools.ozone.queue.unassignModerator
- tools.ozone.queue.updateQueue
- tools.ozone.server.getCapabilities
- tools.ozone.server.getConfig
- tools.ozone.report.assignModerator
- tools.ozone.report.closeReports
- tools.ozone.report.createActivity
- tools.ozone.report.defs
- tools.ozone.report.getAssignments
- tools.ozone.report.getHistoricalStats
- tools.ozone.report.getLatestReport
- tools.ozone.report.getLiveStats
- tools.ozone.report.getReport
- tools.ozone.report.listActivities
- tools.ozone.report.queryActivities
- tools.ozone.report.queryReports
- tools.ozone.report.reassignQueue
- tools.ozone.report.refreshStats
- tools.ozone.report.unassignModerator
- tools.ozone.team.addMember
- tools.ozone.team.defs
- tools.ozone.team.deleteMember
- tools.ozone.team.listMembers
- tools.ozone.team.listOnlineMembers
- tools.ozone.team.updateMember
- tools.ozone.safelink.addRule
- tools.ozone.safelink.defs
- tools.ozone.safelink.queryEvents
- tools.ozone.safelink.queryRules
- tools.ozone.safelink.removeRule
- tools.ozone.safelink.syncSource
- tools.ozone.safelink.updateRule
- tools.ozone.signature.defs
- tools.ozone.signature.findCorrelation
- tools.ozone.signature.findRelatedAccounts
- tools.ozone.signature.searchAccounts
- tools.ozone.moderation.cancelScheduledActions
- tools.ozone.moderation.defs
- tools.ozone.moderation.emitEvent
- tools.ozone.moderation.getAccountPreferences
- tools.ozone.moderation.getAccountTimeline
- tools.ozone.moderation.getEvent
- tools.ozone.moderation.getRecord
- tools.ozone.moderation.getRecords
- tools.ozone.moderation.getRepo
- tools.ozone.moderation.getReporterStats
- tools.ozone.moderation.getRepos
- tools.ozone.moderation.getSubjects
- tools.ozone.moderation.listScheduledActions
- tools.ozone.moderation.queryEvents
- tools.ozone.moderation.queryStatuses
- tools.ozone.moderation.scheduleAction
- tools.ozone.moderation.searchRepos
- tools.ozone.inbox.appealActionedSubject
- tools.ozone.inbox.defs
- tools.ozone.inbox.getAccountStatus
- tools.ozone.inbox.getActionedSubject
- tools.ozone.inbox.getNotificationPreferences
- tools.ozone.inbox.getReport
- tools.ozone.inbox.getUnreadCount
- tools.ozone.inbox.listActionedSubjects
- tools.ozone.inbox.listNotifications
- tools.ozone.inbox.listReports
- tools.ozone.inbox.putNotificationPreferences
- tools.ozone.inbox.updateSeen
- tools.ozone.communication.createTemplate
- tools.ozone.communication.defs
- tools.ozone.communication.deleteTemplate
- tools.ozone.communication.listTemplates
- tools.ozone.communication.updateTemplate
- tools.ozone.hosting.getAccountHistory
- community.lexicon.location.address
- community.lexicon.location.fsq
- community.lexicon.location.geo
- community.lexicon.location.hthree
- community.lexicon.interaction.like
- community.lexicon.bookmarks.authManageBookmarks
- community.lexicon.bookmarks.authViewBookmarks
- community.lexicon.bookmarks.bookmark
- community.lexicon.bookmarks.getActorBookmarks
- community.lexicon.preference.ai
- community.lexicon.app.defs
- community.lexicon.app.entry
- community.lexicon.app.profile
- community.lexicon.app.profileLocalization
- community.lexicon.calendar.event
- community.lexicon.calendar.rsvp
- community.lexicon.payments.webMonetization
- com.fujocoded.guestbook.book
- com.fujocoded.guestbook.defs
- com.fujocoded.guestbook.gate
- com.fujocoded.guestbook.getGuestbook
- com.fujocoded.guestbook.getGuestbooks
- com.fujocoded.guestbook.submission
View Source
param(
[Collections.IDictionary]
$LexiconRepository = [Ordered]@{
'At Protocol' = 'https://github.com/bluesky-social/atproto/'
'Community Lexicons' = 'https://github.com/lexicon-community/lexicon'
'FujoWebDev.LexiconGuestbook' = 'https://github.com/FujoWebDev/lexicon-guestbook/'
},
[Collections.IDictionary]
$LexiconPatterns = [Ordered]@{
'At Protocol' = '/lexicons/**/**.json'
'Community Lexicons' = '/community/lexicon/**/**.json'
'FujoWebDev.LexiconGuestbook' = '/lexicons/com/fujocoded/'
},
[Collections.IDictionary]
$LexiconPath
)
# We'll be populating a subdirectory with a sparse checkout of a repository.
if (-not $psScriptRoot) { return }
Push-Location $PSScriptRoot
$greatGreatGrandParent = $PSScriptRoot | Split-Path | Split-Path | Split-Path
if (-not $lexiconPath) {
$lexiconPath = [Ordered]@{}
}
foreach ($key in $LexiconRepository.Keys) {
if (-not $lexiconPath[$key]) {
$lexiconPath[$key] = Join-Path $greatGreatGrandParent ($key -replace '[\s\p{P}]+', '.')
}
}
$title = 'At Protocol Lexicons'
$Description = 'List of all At Protocol Lexicons defined in the lexicon-community and atproto repositories.'
$lexiconFiles = @(
# Sparse clone each lexicon
foreach ($key in $LexiconRepository.Keys) {
git.sparse -Repository $LexiconRepository[$key] -Path $lexiconPath[$key] -Pattern $LexiconPatterns[$key] |
Add-Member NoteProperty -Name 'Repository' -Value $LexiconRepository[$key] -Force -PassThru |
Add-Member NoteProperty -Name 'Pattern' -Value $LexiconPatterns[$key] -Force -PassThru
}
)
$AllLexicons = @()
$lexiconsById = [Ordered]@{}
$lexiconFiles |
ForEach-Object {
$json = Get-Content -Path $_.FullName -Raw
$jsonObject = ConvertFrom-Json -InputObject $json -AsHashtable
if (-not $jsonObject.id) { return }
$json > "$($jsonObject.id).json"
$AllLexicons += $jsonObject
$lexiconsById[$jsonObject.id] = $jsonObject
}
"<h1>At Protocol Lexicons</h1>"
"<h2>At Protocol uses Lexicons to describe objects and operations</h2>"
"<p>This site contains all at protocol lexicons defined in the following repositories</p>"
"<ul>"
$(
foreach ($value in $LexiconRepository.Values) {
"<li><a href='$value'>$value</a></li>"
}
)
"</ul>"
"<hr/>"
#region Build Lexicon Hierarchy
$treeDepth = 0
$currentTreeBranch = ''
$lexiconHierarchy = [Ordered]@{}
foreach ($lexicon in $AllLexicons) {
$currentLexicon = $lexiconHierarchy
try {
foreach ($nameSegment in $lexicon.id.Split('.')) {
if (-not $currentLexicon.$nameSegment) {
$currentLexicon.$nameSegment = [Ordered]@{}
}
$lexiconParent = $currentLexicon
$currentLexicon = $currentLexicon[$nameSegment]
}
$lastNameSegment = $nameSegment
$lexiconParent[$lastNameSegment] = $lexicon.defs
}
catch {
Write-Warning "Error processing $($lexicon.id): $_"
}
}
#endregion Build Lexicon Hierarchy
$AllLexicons |
ForEach-Object -Begin {
"<ul class='atLexicons'>"
} -Process {
"<li>"
"<a href='$($_.id).json'>$($_.id)</a>"
"</li>"
} -End {
"</ul>"
}
"<hr/>"
"<details>"
"<summary>View Source</summary>"
"<pre><code class='language-PowerShell'>$([Web.HttpUtility]::HtmlEncode($MyInvocation.MyCommand.ScriptBlock))</code></pre>"
"</details>"
ConvertTo-Json -Depth 10 $AllLexicons > .\All.json
ConvertTo-Json -Depth 10 $lexiconHierarchy > .\Hierarchy.json
($lexiconsById | ConvertTo-Json -Depth 30) > .\ById.json
Pop-Location