place.wisp.v2.privateSite.create

wisp.place

Documentation

Create a private site from an uploaded archive. Private sites are stored only by the wisp hosting service and are never written to the owner's PDS, because atproto repo records and blobs are publicly readable and broadcast over the firehose. Access is granted to the owner's authenticated account and to any share links they create.

main procedure

Create a private site from an uploaded archive. Private sites are stored only by the wisp hosting service and are never written to the owner's PDS, because atproto repo records and blobs are publicly readable and broadcast over the firehose. Access is granted to the owner's authenticated account and to any share links they create.

Input

Encodingmultipart/form-data

Accepts raw binary data

Output

Encodingapplication/json
createdAt stringdatetime Required

An RFC 3339 formatted timestamp.

expiresAt stringdatetime Optional

Absent when the site never expires.

fileCount integer Required

No description available.

name string Required

Display name. Not an identifier.

siteId stringrecord-key Required

Stable identifier for this private site. Record-key syntax so it can become a permissioned-space key in v2.

totalBytes integer Required

No description available.

url string Required

Owner-facing URL. Requires an authenticated session.

Errors

AuthenticationRequired
InvalidRequest
PayloadTooLarge
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
{
  "description": "Create a private site from an uploaded archive. Private sites are stored only by the wisp hosting service and are never written to the owner's PDS, because atproto repo records and blobs are publicly readable and broadcast over the firehose. Access is granted to the owner's authenticated account and to any share links they create.",
  "errors": [
    {
      "name": "AuthenticationRequired"
    },
    {
      "name": "InvalidRequest"
    },
    {
      "name": "PayloadTooLarge"
    }
  ],
  "input": {
    "encoding": "multipart/form-data"
  },
  "output": {
    "encoding": "application/json",
    "schema": {
      "properties": {
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "expiresAt": {
          "description": "Absent when the site never expires.",
          "format": "datetime",
          "type": "string"
        },
        "fileCount": {
          "type": "integer"
        },
        "name": {
          "description": "Display name. Not an identifier.",
          "type": "string"
        },
        "siteId": {
          "description": "Stable identifier for this private site. Record-key syntax so it can become a permissioned-space key in v2.",
          "format": "record-key",
          "type": "string"
        },
        "totalBytes": {
          "type": "integer"
        },
        "url": {
          "description": "Owner-facing URL. Requires an authenticated session.",
          "type": "string"
        }
      },
      "required": [
        "siteId",
        "name",
        "fileCount",
        "totalBytes",
        "createdAt",
        "url"
      ],
      "type": "object"
    }
  },
  "type": "procedure"
}

Lexicon Garden

@