Something went wrong. Try again.
atproto Thingiverse but good
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685{ "lexicon": 1, "id": "space.polymodel.library.defs", "defs": { "name": { "type": "string", "maxGraphemes": 256, "maxLength": 1024 }, "tag": { "type": "string", "maxGraphemes": 256, "maxLength": 1024 }, "tags": { "type": "array", "items": { "type": "ref", "ref": "#tag" }, "maxLength": 16 }, "shortText": { "type": "string", "maxGraphemes": 300, "maxLength": 2000 }, "instructions": { "type": "array", "items": { "type": "string" }, "maxLength": 100 }, "cover": { "type": "array", "items": { "type": "ref", "ref": "#image" }, "maxLength": 8 }, "previews": { "type": "array", "items": { "type": "ref", "ref": "#image" }, "maxLength": 12 }, "intendedToWorkWith": { "type": "array", "items": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, "maxLength": 32 }, "printSettings": { "type": "array", "items": { "type": "string" }, "maxLength": 50 }, "searchQuery": { "type": "string", "maxLength": 256 }, "actor": { "type": "object", "required": ["did", "handle"], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "format": "handle" }, "displayName": { "type": "string" }, "avatar": { "type": "string", "format": "uri", "description": "Avatar image URL resolved by the app view (CDN)." }, "pronouns": { "type": "string", "description": "Hydrated profile pronouns for bylines and cards." }, "description": { "type": "string" }, "followerCount": { "type": "integer" }, "followingCount": { "type": "integer" }, "thingCount": { "type": "integer", "description": "Count of published Polymodel things by this actor." }, "viewer": { "type": "ref", "ref": "#actorViewerState" } } }, "viewerState": { "type": "object", "properties": { "like": { "type": "string", "format": "at-uri" }, "save": { "type": "string", "format": "at-uri" } } }, "bbox": { "type": "object", "description": "Axis-aligned bounding-box dimensions. ATProto has no float type, so x/y/z are decimal strings (e.g. 12.5) parsed to floats internally.", "properties": { "x": { "type": "string" }, "y": { "type": "string" }, "z": { "type": "string" }, "unit": { "type": "string" } }, "required": ["x", "y", "z"] }, "aspectRatio": { "type": "object", "description": "Width:height aspect ratio of an image, for layout before the blob loads.", "required": ["width", "height"], "properties": { "width": { "type": "integer" }, "height": { "type": "integer" } } }, "image": { "type": "object", "description": "An authored image: a blob plus alt text and aspect ratio. Stored on records; the app view resolves it to #imageView.", "required": ["image", "alt", "aspectRatio"], "properties": { "image": { "type": "blob", "accept": ["image/png", "image/jpeg", "image/webp"], "maxSize": 5242880 }, "alt": { "type": "string", "maxGraphemes": 2000, "maxLength": 10000, "description": "Alt text describing the image, for accessibility." }, "aspectRatio": { "type": "ref", "ref": "#aspectRatio" } } }, "imageView": { "type": "object", "description": "A resolved image view: CDN URLs for thumbnail and full size plus aspect ratio. Currently resolved via Bluesky's CDN by the app view.", "required": ["thumb", "fullsize"], "properties": { "alt": { "type": "string" }, "thumb": { "type": "string", "format": "uri", "description": "Fully-qualified thumbnail URL (CDN, resolved by the app view)." }, "fullsize": { "type": "string", "format": "uri", "description": "Fully-qualified full-size URL (CDN, resolved by the app view)." }, "aspectRatio": { "type": "ref", "ref": "#aspectRatio" } } }, "file": { "type": "object", "description": "Chunk-capable geometry manifest. Reassemble by concatenating chunks in offset order. Per-chunk integrity is the blob CID; offset+size make ordering explicit; digest verifies the fully reassembled file.", "properties": { "mimeType": { "type": "string" }, "size": { "type": "integer", "description": "size in bytes of the fully reassembled file" }, "digest": { "type": "bytes", "description": "sha256 digest of the fully reassembled file" }, "chunks": { "type": "array", "items": { "type": "ref", "ref": "#chunk" }, "maxLength": 4096 } }, "required": ["mimeType", "size", "chunks"] }, "chunk": { "type": "object", "properties": { "blob": { "type": "blob", "accept": [ "model/stl", "model/3mf", "model/obj", "model/gltf+json", "model/gltf-binary", "application/x-ldraw", "model/ldraw", "application/octet-stream", "model/step", "application/step" ], "maxSize": 104857600 }, "offset": { "type": "integer", "minimum": 0 }, "size": { "type": "integer", "minimum": 0 } }, "required": ["blob", "offset", "size"] }, "thingView": { "type": "object", "required": [ "uri", "cid", "author", "record", "indexedAt", "name", "license", "likeCount", "saveCount", "modelCount", "partCount", "viewer" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "author": { "type": "ref", "ref": "#actor" }, "record": { "type": "unknown" }, "indexedAt": { "type": "string", "format": "datetime" }, "name": { "type": "string" }, "summary": { "type": "string" }, "license": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Hydrated display tags, including appview-aggregated external tag assertions." }, "cover": { "type": "array", "items": { "type": "ref", "ref": "#imageView" } }, "previews": { "type": "array", "items": { "type": "ref", "ref": "#imageView" } }, "derivedFrom": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, "intendedToWorkWith": { "type": "array", "items": { "type": "ref", "ref": "com.atproto.repo.strongRef" } }, "likeCount": { "type": "integer" }, "saveCount": { "type": "integer" }, "modelCount": { "type": "integer" }, "partCount": { "type": "integer", "description": "Thing-level aggregate count of parts across included models, computed by the app view." }, "viewer": { "type": "ref", "ref": "#viewerState" } } }, "thingViewBasic": { "type": "object", "required": [ "uri", "cid", "author", "name", "likeCount", "saveCount", "modelCount", "partCount", "indexedAt", "viewer" ], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "name": { "type": "string" }, "author": { "type": "ref", "ref": "#actor" }, "cover": { "type": "array", "items": { "type": "ref", "ref": "#imageView" } }, "previews": { "type": "array", "items": { "type": "ref", "ref": "#imageView" } }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Hydrated display tags for browse/search/profile cards, including appview-aggregated external tag assertions." }, "likeCount": { "type": "integer" }, "saveCount": { "type": "integer" }, "modelCount": { "type": "integer" }, "partCount": { "type": "integer", "description": "Thing-level aggregate count of parts across included models, computed by the app view." }, "indexedAt": { "type": "string", "format": "datetime" }, "viewer": { "type": "ref", "ref": "#viewerState" } } }, "modelView": { "type": "object", "required": ["uri", "cid", "author", "record", "indexedAt", "name", "partCount", "viewer"], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "author": { "type": "ref", "ref": "#actor" }, "record": { "type": "unknown" }, "indexedAt": { "type": "string", "format": "datetime" }, "name": { "type": "string" }, "summary": { "type": "string" }, "cover": { "type": "array", "items": { "type": "ref", "ref": "#imageView" } }, "previews": { "type": "array", "items": { "type": "ref", "ref": "#imageView" } }, "partCount": { "type": "integer" }, "viewer": { "type": "ref", "ref": "#viewerState" } } }, "partView": { "type": "object", "required": ["uri", "cid", "author", "record", "indexedAt", "name", "file", "viewer"], "properties": { "uri": { "type": "string", "format": "at-uri" }, "cid": { "type": "string", "format": "cid" }, "author": { "type": "ref", "ref": "#actor" }, "record": { "type": "unknown" }, "indexedAt": { "type": "string", "format": "datetime" }, "name": { "type": "string" }, "format": { "type": "string" }, "file": { "type": "ref", "ref": "#file" }, "previews": { "type": "array", "items": { "type": "ref", "ref": "#imageView" } }, "viewer": { "type": "ref", "ref": "#viewerState" } } }, "feedItem": { "type": "object", "properties": { "thing": { "type": "ref", "ref": "#thingViewBasic" } }, "required": ["thing"] }, "feedView": { "type": "object", "properties": { "cursor": { "type": "string" }, "items": { "type": "array", "items": { "type": "ref", "ref": "#feedItem" } } }, "required": ["items"] }, "actorViewDetailed": { "type": "object", "description": "Detailed hydrated actor/profile view for profile surfaces, modeled after app.bsky.actor profile view splits.", "required": ["did", "handle", "record", "indexedAt", "viewer"], "properties": { "did": { "type": "string", "format": "did" }, "handle": { "type": "string", "format": "handle" }, "displayName": { "type": "string" }, "description": { "type": "string" }, "avatar": { "type": "string", "format": "uri", "description": "Avatar image URL resolved by the app view (CDN)." }, "pronouns": { "type": "string" }, "defaultLicense": { "type": "string" }, "printers": { "type": "array", "items": { "type": "string" } }, "links": { "type": "array", "items": { "type": "string", "format": "uri" } }, "followerCount": { "type": "integer" }, "followingCount": { "type": "integer" }, "thingCount": { "type": "integer", "description": "Count of published Polymodel things by this actor." }, "record": { "type": "unknown" }, "indexedAt": { "type": "string", "format": "datetime" }, "viewer": { "type": "ref", "ref": "#actorViewerState" } } }, "workMeta": { "type": "object", "description": "Reference-only shared field set; fields are inlined on thing/model.", "properties": { "name": { "type": "string" }, "summary": { "type": "string" }, "instructions": { "type": "array", "items": { "type": "string" } }, "license": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } }, "cover": { "type": "array", "items": { "type": "ref", "ref": "#image" } }, "previews": { "type": "array", "items": { "type": "ref", "ref": "#image" } }, "derivedFrom": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, "intendedToWorkWith": { "type": "array", "items": { "type": "ref", "ref": "com.atproto.repo.strongRef" } } } }, "actorViewerState": { "type": "object", "description": "Viewer-specific relationship state for an actor/profile.", "properties": { "following": { "type": "string", "format": "at-uri", "description": "Follow record URI if the requester follows this actor." }, "followedBy": { "type": "string", "format": "at-uri", "description": "Follow record URI if this actor follows the requester." }, "muted": { "type": "boolean" }, "blockedBy": { "type": "boolean" }, "blocking": { "type": "string", "format": "at-uri", "description": "Block record URI if the requester blocks this actor." } } } }}