Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
},
"ignorePatterns": [
"**/routeTree.gen.ts",
"**/src/lexicons/generated/bundle.ts",
"eslint.config.js",
"**/public/**/*.js",
"**/node_modules",
Expand Down
26 changes: 26 additions & 0 deletions lexicons/fyi/atstore/auth/thirdPartyReviews.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"lexicon": 1,
"id": "fyi.atstore.authThirdPartyReviews",
"description": "OAuth permission bundle for third-party apps that publish AT Store profile self plus listing reviews on the user's repo; reads use public directory XRPC.",
"defs": {
"main": {
"type": "permission-set",
"title": "Submit AT Store reviews",
"detail": "Create fyi.atstore.profile/self when needed and fyi.atstore.listing.review records on the user's PDS via repository APIs; read public directory data via XRPC queries.",
"permissions": [
{
"type": "permission",
"resource": "repo",
"collection": ["fyi.atstore.profile"],
"action": ["create"]
},
{
"type": "permission",
"resource": "repo",
"collection": ["fyi.atstore.listing.review"],
"action": ["create"]
}
]
}
}
}
155 changes: 155 additions & 0 deletions lexicons/fyi/atstore/directory/getListing.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
{
"lexicon": 1,
"id": "fyi.atstore.directory.getListing",
"defs": {
"listingCardGet": {
"type": "object",
"required": [
"uri",
"name",
"tagline",
"description",
"category",
"accent",
"reviewCount",
"priceLabel",
"appTags",
"categorySlugs"
],
"properties": {
"uri": {
"type": "string",
"format": "at-uri",
"maxLength": 2560,
"description": "AT URI of the fyi.atstore.listing.detail record."
},
"name": { "type": "string", "maxLength": 640 },
"tagline": { "type": "string", "maxLength": 2000 },
"description": { "type": "string", "maxLength": 20000 },
"iconUrl": { "type": "string", "maxLength": 8192, "nullable": true },
"heroImageUrl": {
"type": "string",
"maxLength": 8192,
"nullable": true
},
"categorySlug": {
"type": "string",
"maxLength": 512,
"nullable": true
},
"categorySlugs": {
"type": "array",
"items": { "type": "string", "maxLength": 512 }
},
"category": { "type": "string", "maxLength": 640 },
"accent": {
"type": "string",
"maxLength": 16,
"knownValues": ["blue", "pink", "purple", "green"]
},
"rating": {
"type": "string",
"maxLength": 16,
"nullable": true
},
"reviewCount": { "type": "integer" },
"priceLabel": { "type": "string", "maxLength": 32 },
"productAccountHandle": {
"type": "string",
"maxLength": 512,
"nullable": true
},
"appTags": {
"type": "array",
"items": { "type": "string", "maxLength": 256 }
}
}
},
"listingLinkRow": {
"type": "object",
"required": ["uri"],
"properties": {
"label": { "type": "string", "maxLength": 640 },
"uri": { "type": "string", "maxLength": 2048 }
}
},
"listingDetailResponse": {
"type": "object",
"required": ["listing", "isStoreManaged"],
"properties": {
"listing": {
"type": "ref",
"ref": "#listingCardGet"
},
"isStoreManaged": { "type": "boolean" },
"repoDid": { "type": "string", "maxLength": 2048, "nullable": true },
"productAccountDid": {
"type": "string",
"maxLength": 2048,
"nullable": true
},
"sourceTagline": {
"type": "string",
"maxLength": 20000,
"nullable": true
},
"sourceFullDescription": {
"type": "string",
"maxLength": 20000,
"nullable": true
},
"screenshots": {
"type": "array",
"items": { "type": "string", "maxLength": 4096 }
},
"externalUrl": {
"type": "string",
"maxLength": 2048,
"nullable": true
},
"sourceUrl": { "type": "string", "maxLength": 8192, "nullable": true },
"createdAt": { "type": "string", "maxLength": 64, "nullable": true },
"updatedAt": { "type": "string", "maxLength": 64, "nullable": true },
"links": {
"type": "array",
"items": {
"type": "ref",
"ref": "#listingLinkRow"
}
}
}
},
"main": {
"type": "query",
"description": "Fetch one public verified listing. Provide exactly one of `uri` (fyi.atstore.listing.detail AT URI) or `externalUrl` (unique storefront URL); `externalUrl` uses the same matching rules as the former resolve endpoint.",
"parameters": {
"type": "params",
"properties": {
"uri": {
"type": "string",
"format": "at-uri",
"maxLength": 2560,
"description": "AT URI of the fyi.atstore.listing.detail record."
},
"externalUrl": {
"type": "string",
"maxLength": 2048,
"description": "Listing external_url / product URL as stored on the record; must match at most one public listing."
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "ref",
"ref": "#listingDetailResponse"
}
},
"errors": [
{ "name": "ListingNotFound" },
{ "name": "InvalidParams" },
{ "name": "AmbiguousResolution" }
]
}
}
}
119 changes: 119 additions & 0 deletions lexicons/fyi/atstore/directory/searchListings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
{
"lexicon": 1,
"id": "fyi.atstore.directory.searchListings",
"defs": {
"listingCardSearch": {
"type": "object",
"required": [
"uri",
"name",
"tagline",
"description",
"category",
"accent",
"reviewCount",
"priceLabel",
"appTags",
"categorySlugs"
],
"properties": {
"uri": {
"type": "string",
"format": "at-uri",
"maxLength": 2560,
"description": "AT URI of the fyi.atstore.listing.detail record."
},
"name": { "type": "string", "maxLength": 640 },
"tagline": { "type": "string", "maxLength": 2000 },
"description": { "type": "string", "maxLength": 20000 },
"iconUrl": { "type": "string", "maxLength": 8192, "nullable": true },
"heroImageUrl": {
"type": "string",
"maxLength": 8192,
"nullable": true
},
"categorySlug": {
"type": "string",
"maxLength": 512,
"nullable": true
},
"categorySlugs": {
"type": "array",
"items": { "type": "string", "maxLength": 512 }
},
"category": { "type": "string", "maxLength": 640 },
"accent": {
"type": "string",
"maxLength": 16,
"knownValues": ["blue", "pink", "purple", "green"]
},
"rating": {
"type": "string",
"maxLength": 16,
"nullable": true
},
"reviewCount": { "type": "integer" },
"priceLabel": { "type": "string", "maxLength": 32 },
"productAccountHandle": {
"type": "string",
"maxLength": 512,
"nullable": true
},
"appTags": {
"type": "array",
"items": { "type": "string", "maxLength": 256 }
}
}
},
"main": {
"type": "query",
"description": "Directory listing search and pagination (verified listings with a listing.detail AT URI only).",
"parameters": {
"type": "params",
"properties": {
"q": {
"type": "string",
"maxLength": 512
},
"sort": {
"type": "string",
"maxLength": 24,
"default": "popular",
"enum": ["popular", "newest", "alphabetical"]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
},
"cursor": {
"type": "string",
"maxLength": 512
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["listings"],
"properties": {
"cursor": {
"type": "string",
"maxLength": 512
},
"listings": {
"type": "array",
"items": {
"type": "ref",
"ref": "#listingCardSearch"
}
}
}
}
},
"errors": [{ "name": "InvalidCursor" }]
}
}
}
Loading
Loading