{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Sets the requesting user's off-protocol presence. An absent field leaves the current value unchanged.",
      "errors": [
        {
          "description": "The request has no valid service auth.",
          "name": "AuthRequired"
        },
        {
          "description": "A field is present but does not hold an allowed value.",
          "name": "InvalidRequest"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "customEmoji": {
              "description": "A custom emoji shown beside the status. The uri must name an emoji item record. Absent leaves the current value unchanged. Takes precedence over removeCustomEmoji.",
              "ref": "social.colibri.beta.richtext.facet#customEmoji",
              "type": "ref"
            },
            "emoji": {
              "description": "A Unicode emoji shown beside the status. An empty string clears it. Absent leaves the current value unchanged.",
              "type": "string"
            },
            "expiresAt": {
              "description": "When the status clears. Absent leaves the current value unchanged. Takes precedence over removeExpiresAt.",
              "format": "datetime",
              "type": "string"
            },
            "onlineState": {
              "description": "Derived online state. Absent leaves the current value unchanged.",
              "knownValues": [
                "online",
                "away",
                "dnd",
                "offline"
              ],
              "type": "string"
            },
            "removeCustomEmoji": {
              "description": "Removes the custom emoji. Ignored when customEmoji is also given.",
              "type": "boolean"
            },
            "removeExpiresAt": {
              "description": "Removes the status expiry, so the status stays until it is changed. Ignored when expiresAt is also given.",
              "type": "boolean"
            },
            "showWhileOffline": {
              "description": "Whether a client shows the status while the user is offline. Absent leaves the current value unchanged.",
              "type": "boolean"
            },
            "text": {
              "description": "The status text. An empty string clears it. Absent leaves the current value unchanged.",
              "maxLength": 64,
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "presence": {
              "description": "The requesting user's presence, after the update.",
              "ref": "social.colibri.beta.actor.defs#presence",
              "type": "ref"
            }
          },
          "required": [
            "presence"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "social.colibri.beta.actor.setStatus",
  "lexicon": 1
}
