pet.trezy.createPet

trezy.pet

Documentation

main procedure

No description available.

Input

Encodingapplication/json
name string Required

The pet's name. Basic Latin only for now: letters, digits, spaces and . , ! ? ' - and nothing else. ⚠ THE LEXICON CANNOT EXPRESS THAT — atproto lexicons have no pattern facet — so createPet.lua is where it is enforced and where the reasoning lives. In short: the leaderboard is public, which makes an unrestricted name string an attack surface (right-to-left overrides, stacking combining marks, zero-width impersonation) rather than a preference; and the two pixel faces disagree about the remaining punctuation, so anything outside this set renders one character in a different typeface mid-word. Leading and trailing whitespace is trimmed and internal runs are collapsed to a single space BEFORE the name is signed and stored.

maxLength: 64 bytesminLength: 1 bytes
species string Required

No description available.

Output

Encodingapplication/json
active boolean Optional

Whether the new pet went straight onto the stage, or is waiting because the player is already at activePetCap. ABSENT when the server could not tell — never guess it, and never default it to true: a client that says 'it's on the stage!' about a pet that is not there sends the player looking for it. Only active pets earn, so this is the difference between a purchase that starts paying immediately and one that does not.

createdAt stringdatetime Optional

An RFC 3339 formatted timestamp.

error string Optional

Present instead of uri/createdAt when the pet was not created for an expected reason. A stable machine code the client branches on — add codes, never rename them.

Known values: unknown-species, missing-name, invalid-name, name-too-long, cannot-afford, not-purchasable, definitions-unavailable
message string Optional

A sentence to show the player, accompanying `error`. Free to reword; do not branch on it.

uri stringat-uri Optional

An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).

Try It

Requests are sent directly from your browser. Some servers may block requests due to CORS.

Base URL for XRPC calls (e.g., https://bsky.social)
Enter valid JSON for the request body
View raw schema
{
  "type": "procedure",
  "input": {
    "schema": {
      "type": "object",
      "required": [
        "species",
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "The pet's name. Basic Latin only for now: letters, digits, spaces and . , ! ? ' - and nothing else. ⚠ THE LEXICON CANNOT EXPRESS THAT — atproto lexicons have no pattern facet — so createPet.lua is where it is enforced and where the reasoning lives. In short: the leaderboard is public, which makes an unrestricted name string an attack surface (right-to-left overrides, stacking combining marks, zero-width impersonation) rather than a preference; and the two pixel faces disagree about the remaining punctuation, so anything outside this set renders one character in a different typeface mid-word. Leading and trailing whitespace is trimmed and internal runs are collapsed to a single space BEFORE the name is signed and stored."
        },
        "species": {
          "type": "string"
        }
      }
    },
    "encoding": "application/json"
  },
  "output": {
    "schema": {
      "type": "object",
      "required": [],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "error": {
          "type": "string",
          "description": "Present instead of uri/createdAt when the pet was not created for an expected reason. A stable machine code the client branches on — add codes, never rename them.",
          "knownValues": [
            "unknown-species",
            "missing-name",
            "invalid-name",
            "name-too-long",
            "cannot-afford",
            "not-purchasable",
            "definitions-unavailable"
          ]
        },
        "active": {
          "type": "boolean",
          "description": "Whether the new pet went straight onto the stage, or is waiting because the player is already at activePetCap. ABSENT when the server could not tell — never guess it, and never default it to true: a client that says 'it's on the stage!' about a pet that is not there sends the player looking for it. Only active pets earn, so this is the difference between a purchase that starts paying immediately and one that does not."
        },
        "message": {
          "type": "string",
          "description": "A sentence to show the player, accompanying `error`. Free to reword; do not branch on it."
        },
        "createdAt": {
          "type": "string",
          "format": "datetime"
        }
      }
    },
    "encoding": "application/json"
  }
}

Lexicon Garden

@