From
bafyreigbnq5wuxsn2mxja7xwvtrdddcxgtl6jcxst6dydi3gev3dggwr7e
indexed 2026-05-24 05:17 UTC
View this version
To
bafyreidbjwg3i4doccxpmj7b75y3kzr3i3ziv2k6q4ksn7pjijn7ehadau
indexed 2026-09-11 00:26 UTC
View this version
Compatibility
breaking 2 breaking changes, 2 non-breaking changes.
Breaking changes (2)
- ConstraintAdded ConstraintAdded { vertex_id: "place.wisp.v2.wh:body.secret", sort: "minLength", value: "1" }
- ConstraintAdded ConstraintAdded { vertex_id: "place.wisp.v2.wh:body.secretId", sort: "maxLength", value: "64" }
Non-breaking changes (2)
- AddedVertex AddedVertex { vertex_id: "place.wisp.v2.wh#atUri.backlinksOnly" }
- AddedEdge AddedEdge { src: "place.wisp.v2.wh#atUri", tgt: "place.wisp.v2.wh#atUri.backlinksOnly", kind: "prop", name: Some("backlinksOnly") }
Migration guidance
Added
AddedVertex { vertex_id: "place.wisp.v2.wh#atUri.backlinksOnly" }
Constraint changes
- ConstraintAdded ConstraintAdded { vertex_id: "place.wisp.v2.wh:body.secretId", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "place.wisp.v2.wh:body.secret", sort: "minLength", value: "1" }
Notes
- Non-breaking: AddedEdge { src: "place.wisp.v2.wh#atUri", tgt: "place.wisp.v2.wh#atUri.backlinksOnly", kind: "prop", name: Some("backlinksOnly") }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"atUri": {55
"description": "Watch by AT-URI. at://did watches all collections for a DID. at://did/collection watches all records of that collection for a DID. at://did/collection/record watches a specific record.",66
"properties": {77
"aturi": {88
"type": "string"99
},1010
"backlinks": {1111
"description": "If true, also watch for records in any repo that reference this DID and collection.",1212
"type": "boolean"13
},14
"backlinksOnly": {15
"description": "If true, fire only for records in other repos that reference this scope. Events from the scope DID's own repo never fire, including records that reference itself. Implies backlinks.",16
"type": "boolean"1317
}1418
},1519
"required": [1620
"aturi"1721
],1822
"type": "object"1923
},2024
"main": {2125
"description": "Webhook configuration for AT Protocol record events. Fires an HTTP POST to a URL when a matching record event is observed on the firehose.",2226
"key": "any",2327
"record": {2428
"properties": {2529
"createdAt": {2630
"description": "Timestamp of when the webhook was created.",2731
"format": "datetime",2832
"type": "string"2933
},3034
"enabled": {3135
"description": "Whether the webhook is active. Defaults to true if omitted.",3236
"type": "boolean"3337
},3438
"events": {3539
"description": "Which record events to trigger on. Defaults to all events if omitted.",3640
"items": {3741
"enum": [3842
"create",3943
"update",4044
"delete"4145
],4246
"type": "string"4347
},4448
"maxLength": 3,4549
"type": "array"4650
},4751
"scope": {4852
"description": "What to watch. An AT-URI scopes to a specific DID, collection, or record.",4953
"ref": "#atUri",5054
"type": "ref"5155
},5256
"secret": {5357
"description": "Optional raw secret used to sign the webhook payload with HMAC-SHA256. Prefer secretId to avoid embedding plaintext values in PDS records.",5458
"maxLength": 256,59
"minLength": 1,5560
"type": "string"5661
},5762
"secretId": {58
"description": "Name of a server-managed signing secret created via place.wisp.v2.secret.create. Takes precedence over secret if both are present.",63
"description": "1–64 character server-managed signing secret ID. Use ASCII letters, digits, dots, underscores, and hyphens only.",5964
"format": "record-key",65
"maxLength": 64,6066
"type": "string"6167
},6268
"url": {6369
"description": "HTTPS endpoint to POST the webhook payload to.",6470
"format": "uri",6571
"maxLength": 2048,6672
"type": "string"6773
}6874
},6975
"required": [7076
"scope",7177
"url",7278
"createdAt"7379
],7480
"type": "object"7581
},7682
"type": "record"7783
}7884
},7985
"id": "place.wisp.v2.wh",8086
"lexicon": 18187
}