io.atcr.hold.exportUserData

did:web:lexicon.atcr.io

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "crewExport": {
      "properties": {
        "addedAt": {
          "format": "datetime",
          "type": "string"
        },
        "permissions": {
          "items": {
            "maxLength": 64,
            "type": "string"
          },
          "type": "array"
        },
        "role": {
          "maxLength": 32,
          "type": "string"
        },
        "tier": {
          "maxLength": 32,
          "type": "string"
        }
      },
      "type": "object"
    },
    "layerExport": {
      "properties": {
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "digest": {
          "maxLength": 128,
          "type": "string"
        },
        "manifest": {
          "format": "at-uri",
          "type": "string"
        },
        "mediaType": {
          "maxLength": 256,
          "type": "string"
        },
        "size": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "main": {
      "description": "Export all user data from this hold (GDPR compliance). Returns all records stored on this hold's PDS that reference the authenticated user's DID.",
      "errors": [
        {
          "name": "AuthRequired"
        }
      ],
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "blueskyPosts": {
              "description": "Bluesky posts that mention the user",
              "items": {
                "ref": "#postExport",
                "type": "ref"
              },
              "type": "array"
            },
            "crewRecord": {
              "description": "User's crew record (if they are a crew member)",
              "ref": "#crewExport",
              "type": "ref"
            },
            "exportedAt": {
              "description": "RFC3339 timestamp of when the export was generated",
              "format": "datetime",
              "type": "string"
            },
            "holdDid": {
              "description": "DID of this hold service",
              "format": "did",
              "type": "string"
            },
            "isCaptain": {
              "description": "Whether the user is the captain (owner) of this hold",
              "type": "boolean"
            },
            "layerRecords": {
              "description": "Layer records uploaded by the user",
              "items": {
                "ref": "#layerExport",
                "type": "ref"
              },
              "type": "array"
            },
            "statsRecords": {
              "description": "Repository stats records owned by the user",
              "items": {
                "ref": "#statsExport",
                "type": "ref"
              },
              "type": "array"
            },
            "userDid": {
              "description": "DID of the user whose data was exported",
              "format": "did",
              "type": "string"
            }
          },
          "required": [
            "exportedAt",
            "holdDid",
            "userDid",
            "isCaptain",
            "layerRecords",
            "statsRecords",
            "blueskyPosts"
          ],
          "type": "object"
        }
      },
      "parameters": {
        "properties": {},
        "type": "params"
      },
      "type": "query"
    },
    "postExport": {
      "properties": {
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "text": {
          "maxGraphemes": 3000,
          "maxLength": 30000,
          "type": "string"
        },
        "uri": {
          "format": "at-uri",
          "type": "string"
        }
      },
      "type": "object"
    },
    "statsExport": {
      "properties": {
        "lastPull": {
          "format": "datetime",
          "type": "string"
        },
        "lastPush": {
          "format": "datetime",
          "type": "string"
        },
        "pullCount": {
          "type": "integer"
        },
        "pushCount": {
          "type": "integer"
        },
        "repository": {
          "maxLength": 256,
          "type": "string"
        },
        "updatedAt": {
          "format": "datetime",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "id": "io.atcr.hold.exportUserData",
  "lexicon": 1
}

Validate Record

Validate a record against io.atcr.hold.exportUserData

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:web:lexicon.atcr.io
CID
bafyreicstoas6yz7a2qsf5shobx4olu523qqy2uc7opjaewopain7kemey
Indexed At
2026-08-27 01:50 UTC
AT-URI
at://did:web:lexicon.atcr.io/com.atproto.lexicon.schema/io.atcr.hold.exportUserData

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Delete all user data from this hold (GDPR compliance). Deletes crew record (if not captain), layer records, and stats records. Does NOT delete actual blob data from S3 - only PDS records.

Lexicon Garden

@