radroots_profile.v1.json (35353B)
1 { 2 "suite": "calendar_radroots_profile", 3 "contract_version": "1.0.0", 4 "vectors": [ 5 { 6 "id": "profile_date_parse_minimum_gregorian_001", 7 "kind": "calendar.profile.date.parse.valid", 8 "input": { "value": "0001-01-01" }, 9 "expected": { "value": "0001-01-01" } 10 }, 11 { 12 "id": "profile_date_parse_leap_day_001", 13 "kind": "calendar.profile.date.parse.valid", 14 "input": { "value": "2000-02-29" }, 15 "expected": { "value": "2000-02-29" } 16 }, 17 { 18 "id": "profile_date_parse_year_zero_001", 19 "kind": "calendar.profile.date.parse.invalid", 20 "input": { "value": "0000-01-01" }, 21 "expected": { "error": "invalid_date" } 22 }, 23 { 24 "id": "profile_date_parse_noncanonical_width_001", 25 "kind": "calendar.profile.date.parse.invalid", 26 "input": { "value": "2026-6-20" }, 27 "expected": { "error": "invalid_date" } 28 }, 29 { 30 "id": "profile_authored_date_complete_001", 31 "kind": "calendar.profile.authored.date.valid", 32 "input": { 33 "d": "fernwood-csa-pickup", 34 "title": "CSA pickup", 35 "start": "2026-06-20", 36 "end": "2026-06-21", 37 "description": "Bring clean bins to the farm stand.", 38 "locations": ["Farm stand", "Moss Street Market"], 39 "geohash": "c23nb62w20st", 40 "summary": "Weekly pickup", 41 "image": { 42 "bytes_utf8": "victoria-calendar", 43 "descriptor": { 44 "url": "https://media.example/aba72b48bb536e341ab81c5f86053981c443029766a4374ee86a4f56577ebc84.webp", 45 "sha256": "aba72b48bb536e341ab81c5f86053981c443029766a4374ee86a4f56577ebc84", 46 "size": 17, 47 "type": "image/webp", 48 "uploaded": 1784347200 49 } 50 }, 51 "participants": [ 52 {"pubkey": "585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df", "relay": "wss://relay.example.test", "role": "host"} 53 ], 54 "categories": ["csa", "vegetables"], 55 "references": ["https://example.test/pickup-details"], 56 "calendar_requests": [ 57 {"calendar": "31924:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:farm-calendar", "relay": "wss://relay.example.test"} 58 ] 59 }, 60 "expected": { 61 "wire_parts": { 62 "kind": 31922, 63 "content": "Bring clean bins to the farm stand.", 64 "tags": [ 65 ["d", "fernwood-csa-pickup"], 66 ["title", "CSA pickup"], 67 ["start", "2026-06-20"], 68 ["end", "2026-06-21"], 69 ["location", "Farm stand"], 70 ["location", "Moss Street Market"], 71 ["g", "c23nb62w20st"], 72 ["summary", "Weekly pickup"], 73 ["image", "https://media.example/aba72b48bb536e341ab81c5f86053981c443029766a4374ee86a4f56577ebc84.webp"], 74 ["p", "585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df", "wss://relay.example.test", "host"], 75 ["t", "csa"], 76 ["t", "vegetables"], 77 ["r", "https://example.test/pickup-details"], 78 ["a", "31924:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:farm-calendar", "wss://relay.example.test"] 79 ] 80 }, 81 "media_verification": "byte_verified", 82 "upload_completion": "not_attested_by_codec" 83 } 84 }, 85 { 86 "id": "profile_authored_date_equal_end_001", 87 "kind": "calendar.profile.authored.date.invalid", 88 "input": {"d": "equal-date", "title": "Equal date", "start": "2026-06-20", "end": "2026-06-20"}, 89 "expected": { "error": "invalid_range" } 90 }, 91 { 92 "id": "profile_authored_date_noncanonical_title_001", 93 "kind": "calendar.profile.authored.date.invalid", 94 "input": {"d": "bad-title", "title": " Bad title ", "start": "2026-06-20"}, 95 "expected": { "error": "invalid_title" } 96 }, 97 { 98 "id": "profile_authored_date_uppercase_geohash_001", 99 "kind": "calendar.profile.authored.date.invalid", 100 "input": {"d": "bad-geohash", "title": "Bad geohash", "start": "2026-06-20", "geohash": "C23NB62W20ST"}, 101 "expected": { "error": "invalid_geohash" } 102 }, 103 { 104 "id": "profile_authored_time_canonical_001", 105 "kind": "calendar.profile.authored.time.valid", 106 "input": { 107 "d": "wash-pack-shift", 108 "title": "Wash pack shift", 109 "start": 86399, 110 "end": 172801, 111 "start_tzid": "America/Vancouver", 112 "locations": ["Pack shed"], 113 "geohash": "c23nb62w20st", 114 "categories": ["farm-work"] 115 }, 116 "expected": { 117 "effective_end_tzid": "America/Vancouver", 118 "wire_parts": { 119 "kind": 31923, 120 "content": "", 121 "tags": [ 122 ["d", "wash-pack-shift"], 123 ["title", "Wash pack shift"], 124 ["start", "86399"], 125 ["end", "172801"], 126 ["D", "0"], 127 ["D", "1"], 128 ["D", "2"], 129 ["start_tzid", "America/Vancouver"], 130 ["location", "Pack shed"], 131 ["g", "c23nb62w20st"], 132 ["t", "farm-work"] 133 ] 134 } 135 } 136 }, 137 { 138 "id": "profile_authored_time_maximum_coverage_001", 139 "kind": "calendar.profile.authored.time.coverage.valid", 140 "input": {"d": "annual-farm-plan", "title": "Annual farm plan", "start": 0, "end": 31622400}, 141 "expected": {"count": 366, "first": "0", "last": "365"} 142 }, 143 { 144 "id": "profile_authored_time_over_coverage_limit_001", 145 "kind": "calendar.profile.authored.time.invalid", 146 "input": {"d": "overlong-plan", "title": "Overlong plan", "start": 0, "end": 31708800}, 147 "expected": {"error": "covered_day_limit_exceeded", "max": 366, "actual": 367} 148 }, 149 { 150 "id": "profile_authored_time_invalid_iana_timezone_001", 151 "kind": "calendar.profile.authored.time.invalid", 152 "input": {"d": "bad-zone", "title": "Bad zone", "start": 0, "start_tzid": "america/vancouver"}, 153 "expected": {"error": "invalid_time_zone"} 154 }, 155 { 156 "id": "profile_admit_date_canonical_001", 157 "kind": "calendar.profile.admit.date.valid", 158 "input": { 159 "kind": 31922, 160 "content": "", 161 "tags": [["d", "farm-tour"], ["title", "Urban farm tour"], ["start", "2026-07-18"], ["image", "https://media.example/aba72b48bb536e341ab81c5f86053981c443029766a4374ee86a4f56577ebc84.webp"]] 162 }, 163 "expected": {"d": "farm-tour", "blossom_image": true} 164 }, 165 { 166 "id": "profile_admit_date_forbidden_day_extension_001", 167 "kind": "calendar.profile.admit.date.invalid", 168 "input": { 169 "kind": 31922, 170 "content": "", 171 "tags": [["d", "farm-tour"], ["title", "Urban farm tour"], ["start", "2026-07-18"], ["D", "20620"]] 172 }, 173 "expected": {"error": "forbidden_date_day_index"} 174 }, 175 { 176 "id": "profile_admit_date_noncanonical_metadata_001", 177 "kind": "calendar.profile.admit.date.invalid", 178 "input": { 179 "kind": 31922, 180 "content": "", 181 "tags": [["d", "farm-tour"], ["title", " Urban farm tour "], ["start", "2026-07-18"]] 182 }, 183 "expected": {"error": "non_canonical_field"} 184 }, 185 { 186 "id": "profile_admit_date_uppercase_relay_hint_001", 187 "kind": "calendar.profile.admit.date.invalid", 188 "input": { 189 "kind": 31922, 190 "content": "", 191 "tags": [["d", "farm-tour"], ["title", "Urban farm tour"], ["start", "2026-07-18"], ["p", "585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df", "WSS://relay.example.test"]] 192 }, 193 "expected": {"error": "non_canonical_field"} 194 }, 195 { 196 "id": "profile_admit_date_non_blossom_image_001", 197 "kind": "calendar.profile.admit.date.invalid", 198 "input": { 199 "kind": 31922, 200 "content": "", 201 "tags": [["d", "farm-tour"], ["title", "Urban farm tour"], ["start", "2026-07-18"], ["image", "https://ordinary.example.test/farm-tour.jpg"]] 202 }, 203 "expected": {"error": "non_blossom_image"} 204 }, 205 { 206 "id": "profile_admit_time_canonical_001", 207 "kind": "calendar.profile.admit.time.valid", 208 "input": { 209 "kind": 31923, 210 "content": "", 211 "tags": [["d", "harvest-window"], ["title", "Harvest window"], ["start", "86399"], ["end", "172801"], ["D", "0"], ["D", "1"], ["D", "2"]] 212 }, 213 "expected": {"d": "harvest-window", "covered_days": [0, 1, 2], "blossom_image": false} 214 }, 215 { 216 "id": "profile_admit_time_incomplete_coverage_001", 217 "kind": "calendar.profile.admit.time.invalid", 218 "input": { 219 "kind": 31923, 220 "content": "", 221 "tags": [["d", "harvest-window"], ["title", "Harvest window"], ["start", "86399"], ["end", "172801"], ["D", "0"], ["D", "2"]] 222 }, 223 "expected": {"error": "incomplete_day_coverage"} 224 }, 225 { 226 "id": "profile_admit_time_noncanonical_timestamp_001", 227 "kind": "calendar.profile.admit.time.invalid", 228 "input": { 229 "kind": 31923, 230 "content": "", 231 "tags": [["d", "harvest-window"], ["title", "Harvest window"], ["start", "086399"], ["end", "172801"], ["D", "0"], ["D", "1"], ["D", "2"]] 232 }, 233 "expected": {"error": "non_canonical_field"} 234 }, 235 { 236 "id": "profile_admit_time_noncanonical_day_001", 237 "kind": "calendar.profile.admit.time.invalid", 238 "input": { 239 "kind": 31923, 240 "content": "", 241 "tags": [["d", "harvest-window"], ["title", "Harvest window"], ["start", "86399"], ["end", "172801"], ["D", "00"], ["D", "1"], ["D", "2"]] 242 }, 243 "expected": {"error": "incomplete_day_coverage"} 244 }, 245 { 246 "id": "profile_admit_time_over_coverage_limit_001", 247 "kind": "calendar.profile.admit.time.invalid", 248 "input": { 249 "kind": 31923, 250 "content": "", 251 "tags": [["d", "long-range"], ["title", "Long range"], ["start", "0"], ["end", "31708800"], ["D", "0"]] 252 }, 253 "expected": {"error": "covered_day_limit_exceeded", "max": 366, "actual": 367} 254 }, 255 { 256 "id": "profile_authored_collection_empty_001", 257 "kind": "calendar.profile.authored.collection.valid", 258 "input": { 259 "d": "AAAAAAAAAAAAAAAAAAAAAA", 260 "title": "Victoria farm calendar", 261 "event_references": [] 262 }, 263 "expected": { 264 "wire_parts": { 265 "kind": 31924, 266 "content": "", 267 "tags": [["d", "AAAAAAAAAAAAAAAAAAAAAA"], ["title", "Victoria farm calendar"]] 268 } 269 } 270 }, 271 { 272 "id": "profile_authored_collection_ordered_mixed_001", 273 "kind": "calendar.profile.authored.collection.valid", 274 "input": { 275 "d": "AAAAAAAAAAAAAAAAAAAAAA", 276 "title": "South Island farm schedule", 277 "content": "Market dates and farm work windows for Victoria growers.", 278 "list_description": "NIP-51 set description for compatible clients.", 279 "event_references": [ 280 { 281 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 282 "relay": "wss://date-relay.example.test/events" 283 }, 284 { 285 "coordinate": "31923:e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af:CCCCCCCCCCCCCCCCCCCCCg", 286 "relay": "wss://time-relay.example.test/events" 287 } 288 ] 289 }, 290 "expected": { 291 "wire_parts": { 292 "kind": 31924, 293 "content": "Market dates and farm work windows for Victoria growers.", 294 "tags": [ 295 ["d", "AAAAAAAAAAAAAAAAAAAAAA"], 296 ["title", "South Island farm schedule"], 297 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", "wss://date-relay.example.test/events"], 298 ["a", "31923:e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af:CCCCCCCCCCCCCCCCCCCCCg", "wss://time-relay.example.test/events"], 299 ["description", "NIP-51 set description for compatible clients."] 300 ] 301 } 302 } 303 }, 304 { 305 "id": "profile_authored_collection_byte_verified_blossom_image_001", 306 "kind": "calendar.profile.authored.collection.valid", 307 "input": { 308 "d": "AAAAAAAAAAAAAAAAAAAAAA", 309 "title": "Victoria farm calendar", 310 "content": "A shared calendar with a verified cover image.", 311 "image": { 312 "bytes_utf8": "victoria-calendar", 313 "descriptor": { 314 "url": "https://media.example/aba72b48bb536e341ab81c5f86053981c443029766a4374ee86a4f56577ebc84.webp", 315 "sha256": "aba72b48bb536e341ab81c5f86053981c443029766a4374ee86a4f56577ebc84", 316 "size": 17, 317 "type": "image/webp", 318 "uploaded": 1784347200 319 } 320 }, 321 "event_references": [ 322 { 323 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 324 "relay": null 325 } 326 ] 327 }, 328 "expected": { 329 "wire_parts": { 330 "kind": 31924, 331 "content": "A shared calendar with a verified cover image.", 332 "tags": [ 333 ["d", "AAAAAAAAAAAAAAAAAAAAAA"], 334 ["title", "Victoria farm calendar"], 335 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ"], 336 ["image", "https://media.example/aba72b48bb536e341ab81c5f86053981c443029766a4374ee86a4f56577ebc84.webp"] 337 ] 338 }, 339 "media_verification": "byte_verified", 340 "upload_completion": "not_attested_by_codec" 341 } 342 }, 343 { 344 "id": "profile_authored_collection_human_identifier_001", 345 "kind": "calendar.profile.authored.collection.invalid", 346 "input": {"d": "victoria-calendar", "title": "Victoria farm calendar", "event_references": []}, 347 "expected": {"error": "invalid_calendar_uid"} 348 }, 349 { 350 "id": "profile_authored_collection_noncanonical_title_001", 351 "kind": "calendar.profile.authored.collection.invalid", 352 "input": {"d": "AAAAAAAAAAAAAAAAAAAAAA", "title": " Victoria farm calendar ", "event_references": []}, 353 "expected": {"error": "invalid_title"} 354 }, 355 { 356 "id": "profile_authored_collection_duplicate_coordinate_001", 357 "kind": "calendar.profile.authored.collection.invalid", 358 "input": { 359 "d": "AAAAAAAAAAAAAAAAAAAAAA", 360 "title": "Duplicate event calendar", 361 "event_references": [ 362 { 363 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 364 "relay": "wss://one.example.test" 365 }, 366 { 367 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 368 "relay": "wss://two.example.test" 369 } 370 ] 371 }, 372 "expected": {"error": "duplicate_event_reference"} 373 }, 374 { 375 "id": "profile_authored_collection_uppercase_relay_001", 376 "kind": "calendar.profile.authored.collection.invalid", 377 "input": { 378 "d": "AAAAAAAAAAAAAAAAAAAAAA", 379 "title": "Uppercase relay", 380 "event_references": [ 381 { 382 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 383 "relay": "WSS://Relay.Example.Test/events" 384 } 385 ] 386 }, 387 "expected": {"error": "invalid_event_reference"} 388 }, 389 { 390 "id": "profile_authored_collection_wrong_coordinate_kind_001", 391 "kind": "calendar.profile.authored.collection.invalid", 392 "input": { 393 "d": "AAAAAAAAAAAAAAAAAAAAAA", 394 "title": "Wrong coordinate kind", 395 "event_references": [ 396 { 397 "coordinate": "31924:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 398 "relay": null 399 } 400 ] 401 }, 402 "expected": {"error": "invalid_event_reference"} 403 }, 404 { 405 "id": "profile_authored_collection_media_hash_mismatch_001", 406 "kind": "calendar.profile.authored.collection.invalid", 407 "input": { 408 "d": "AAAAAAAAAAAAAAAAAAAAAA", 409 "title": "Mismatched media", 410 "image": { 411 "bytes_utf8": "victoria-calendar", 412 "descriptor": { 413 "url": "https://media.example/585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df.webp", 414 "sha256": "585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df", 415 "size": 17, 416 "type": "image/webp", 417 "uploaded": 1784347200 418 } 419 }, 420 "event_references": [] 421 }, 422 "expected": {"error": "blob_hash_mismatch"} 423 }, 424 { 425 "id": "profile_admit_collection_empty_001", 426 "kind": "calendar.profile.admit.collection.valid", 427 "input": { 428 "kind": 31924, 429 "content": "", 430 "tags": [["d", "AAAAAAAAAAAAAAAAAAAAAA"], ["title", "Victoria farm calendar"]] 431 }, 432 "expected": { 433 "d": "AAAAAAAAAAAAAAAAAAAAAA", 434 "event_references": [], 435 "blossom_image": false 436 } 437 }, 438 { 439 "id": "profile_admit_collection_ordered_mixed_blossom_001", 440 "kind": "calendar.profile.admit.collection.valid", 441 "input": { 442 "kind": 31924, 443 "content": "Market dates and farm work windows for Victoria growers.", 444 "tags": [ 445 ["d", "AAAAAAAAAAAAAAAAAAAAAA"], 446 ["title", "South Island farm schedule"], 447 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", "wss://date-relay.example.test/events"], 448 ["a", "31923:e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af:CCCCCCCCCCCCCCCCCCCCCg", "wss://time-relay.example.test/events"], 449 ["description", "NIP-51 set description for compatible clients."], 450 ["image", "https://media.example/aba72b48bb536e341ab81c5f86053981c443029766a4374ee86a4f56577ebc84.webp"] 451 ] 452 }, 453 "expected": { 454 "d": "AAAAAAAAAAAAAAAAAAAAAA", 455 "content": "Market dates and farm work windows for Victoria growers.", 456 "list_description": "NIP-51 set description for compatible clients.", 457 "event_references": [ 458 { 459 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 460 "relay": "wss://date-relay.example.test/events" 461 }, 462 { 463 "coordinate": "31923:e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af:CCCCCCCCCCCCCCCCCCCCCg", 464 "relay": "wss://time-relay.example.test/events" 465 } 466 ], 467 "blossom_image": true, 468 "media_verification": "structural_only" 469 } 470 }, 471 { 472 "id": "profile_admit_collection_uppercase_coordinate_and_relay_001", 473 "kind": "calendar.profile.admit.collection.invalid", 474 "input": { 475 "kind": 31924, 476 "content": "", 477 "tags": [ 478 ["d", "AAAAAAAAAAAAAAAAAAAAAA"], 479 ["title", "Uppercase reference"], 480 ["a", "31922:585591529DA0BAB31B3B1B1F986611CF5F435DCA84F978C89EE8A40CCA7103DF:BBBBBBBBBBBBBBBBBBBBBQ", "WSS://Relay.Example.Test/events"] 481 ] 482 }, 483 "expected": {"error": "non_canonical_field", "field": "event_reference"} 484 }, 485 { 486 "id": "profile_admit_collection_duplicate_coordinate_001", 487 "kind": "calendar.profile.admit.collection.invalid", 488 "input": { 489 "kind": 31924, 490 "content": "", 491 "tags": [ 492 ["d", "AAAAAAAAAAAAAAAAAAAAAA"], 493 ["title", "Duplicate reference"], 494 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", "wss://one.example.test"], 495 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", "wss://two.example.test"] 496 ] 497 }, 498 "expected": {"error": "duplicate_event_reference"} 499 }, 500 { 501 "id": "profile_admit_collection_human_identifier_001", 502 "kind": "calendar.profile.admit.collection.invalid", 503 "input": { 504 "kind": 31924, 505 "content": "", 506 "tags": [["d", "victoria-calendar"], ["title", "Victoria farm calendar"]] 507 }, 508 "expected": {"error": "non_canonical_field", "field": "d"} 509 }, 510 { 511 "id": "profile_admit_collection_non_blossom_image_001", 512 "kind": "calendar.profile.admit.collection.invalid", 513 "input": { 514 "kind": 31924, 515 "content": "", 516 "tags": [ 517 ["d", "AAAAAAAAAAAAAAAAAAAAAA"], 518 ["title", "Ordinary image"], 519 ["image", "https://ordinary.example.test/victoria-calendar.jpg"] 520 ] 521 }, 522 "expected": {"error": "non_blossom_image"} 523 }, 524 { 525 "id": "profile_authored_rsvp_minimal_accepted_001", 526 "kind": "calendar.profile.authored.rsvp.valid", 527 "input": { 528 "d": "DDDDDDDDDDDDDDDDDDDDDw", 529 "event_reference": { 530 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 531 "relay": null 532 }, 533 "status": "accepted" 534 }, 535 "expected": { 536 "wire_parts": { 537 "kind": 31925, 538 "content": "", 539 "tags": [ 540 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 541 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ"], 542 ["status", "accepted"] 543 ] 544 } 545 } 546 }, 547 { 548 "id": "profile_authored_rsvp_complete_independent_hints_001", 549 "kind": "calendar.profile.authored.rsvp.valid", 550 "input": { 551 "d": "DDDDDDDDDDDDDDDDDDDDDw", 552 "event_reference": { 553 "coordinate": "31923:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 554 "relay": "wss://coordinate-relay.example.test/events" 555 }, 556 "revision_reference": { 557 "id": "e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af", 558 "relay": "wss://event-relay.example.test/events" 559 }, 560 "status": "tentative", 561 "free_busy": "busy", 562 "author_hint": { 563 "pubkey": "585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df", 564 "relay": "wss://author-relay.example.test/events" 565 }, 566 "note": "I can help with the wash-pack shift." 567 }, 568 "expected": { 569 "wire_parts": { 570 "kind": 31925, 571 "content": "I can help with the wash-pack shift.", 572 "tags": [ 573 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 574 ["a", "31923:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", "wss://coordinate-relay.example.test/events"], 575 ["status", "tentative"], 576 ["e", "e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af", "wss://event-relay.example.test/events"], 577 ["fb", "busy"], 578 ["p", "585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df", "wss://author-relay.example.test/events"] 579 ] 580 }, 581 "observed_free_busy": "busy", 582 "effective_free_busy": "busy" 583 } 584 }, 585 { 586 "id": "profile_authored_rsvp_declined_with_free_busy_001", 587 "kind": "calendar.profile.authored.rsvp.invalid", 588 "input": { 589 "d": "DDDDDDDDDDDDDDDDDDDDDw", 590 "event_reference": { 591 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 592 "relay": null 593 }, 594 "status": "declined", 595 "free_busy": "busy" 596 }, 597 "expected": {"error": "declined_free_busy_forbidden"} 598 }, 599 { 600 "id": "profile_authored_rsvp_human_identifier_001", 601 "kind": "calendar.profile.authored.rsvp.invalid", 602 "input": { 603 "d": "farm-tour-rsvp", 604 "event_reference": { 605 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 606 "relay": null 607 }, 608 "status": "accepted" 609 }, 610 "expected": {"error": "invalid_calendar_uid"} 611 }, 612 { 613 "id": "profile_authored_rsvp_uppercase_event_id_001", 614 "kind": "calendar.profile.authored.rsvp.invalid", 615 "input": { 616 "d": "DDDDDDDDDDDDDDDDDDDDDw", 617 "event_reference": { 618 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 619 "relay": null 620 }, 621 "revision_reference": { 622 "id": "E0266E3CFB0D2886F91C73F5F868F3B98273713E5FCD97C081663F5518A4B3AF", 623 "relay": null 624 }, 625 "status": "accepted" 626 }, 627 "expected": {"error": "invalid_revision_reference"} 628 }, 629 { 630 "id": "profile_authored_rsvp_author_mismatch_001", 631 "kind": "calendar.profile.authored.rsvp.invalid", 632 "input": { 633 "d": "DDDDDDDDDDDDDDDDDDDDDw", 634 "event_reference": { 635 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 636 "relay": null 637 }, 638 "status": "accepted", 639 "author_hint": { 640 "pubkey": "e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af", 641 "relay": null 642 } 643 }, 644 "expected": {"error": "author_hint_mismatch"} 645 }, 646 { 647 "id": "profile_authored_rsvp_uppercase_event_relay_001", 648 "kind": "calendar.profile.authored.rsvp.invalid", 649 "input": { 650 "d": "DDDDDDDDDDDDDDDDDDDDDw", 651 "event_reference": { 652 "coordinate": "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 653 "relay": "WSS://Relay.Example.Test/events" 654 }, 655 "status": "accepted" 656 }, 657 "expected": {"error": "invalid_event_reference"} 658 }, 659 { 660 "id": "profile_authored_rsvp_wrong_coordinate_kind_001", 661 "kind": "calendar.profile.authored.rsvp.invalid", 662 "input": { 663 "d": "DDDDDDDDDDDDDDDDDDDDDw", 664 "event_reference": { 665 "coordinate": "31924:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 666 "relay": null 667 }, 668 "status": "accepted" 669 }, 670 "expected": {"error": "invalid_event_reference"} 671 }, 672 { 673 "id": "profile_admit_rsvp_minimal_accepted_001", 674 "kind": "calendar.profile.admit.rsvp.valid", 675 "input": { 676 "kind": 31925, 677 "content": "", 678 "tags": [ 679 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 680 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ"], 681 ["status", "accepted"] 682 ] 683 }, 684 "expected": { 685 "d": "DDDDDDDDDDDDDDDDDDDDDw", 686 "status": "accepted", 687 "observed_free_busy": null, 688 "effective_free_busy": null 689 } 690 }, 691 { 692 "id": "profile_admit_rsvp_complete_independent_hints_001", 693 "kind": "calendar.profile.admit.rsvp.valid", 694 "input": { 695 "kind": 31925, 696 "content": "I can help with the wash-pack shift.", 697 "tags": [ 698 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 699 ["a", "31923:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", "wss://coordinate-relay.example.test/events"], 700 ["e", "e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af", "wss://event-relay.example.test/events"], 701 ["status", "tentative"], 702 ["fb", "busy"], 703 ["p", "585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df", "wss://author-relay.example.test/events"] 704 ] 705 }, 706 "expected": { 707 "d": "DDDDDDDDDDDDDDDDDDDDDw", 708 "event_reference": { 709 "coordinate": "31923:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", 710 "relay": "wss://coordinate-relay.example.test/events" 711 }, 712 "revision_reference": { 713 "id": "e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af", 714 "relay": "wss://event-relay.example.test/events" 715 }, 716 "author_hint": { 717 "pubkey": "585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df", 718 "relay": "wss://author-relay.example.test/events" 719 }, 720 "status": "tentative", 721 "observed_free_busy": "busy", 722 "effective_free_busy": "busy" 723 } 724 }, 725 { 726 "id": "profile_admit_rsvp_declined_observed_free_busy_001", 727 "kind": "calendar.profile.admit.rsvp.valid", 728 "input": { 729 "kind": 31925, 730 "content": "Unable to attend.", 731 "tags": [ 732 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 733 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ"], 734 ["status", "declined"], 735 ["fb", "busy"] 736 ] 737 }, 738 "expected": { 739 "d": "DDDDDDDDDDDDDDDDDDDDDw", 740 "status": "declined", 741 "observed_free_busy": "busy", 742 "effective_free_busy": null 743 } 744 }, 745 { 746 "id": "profile_admit_rsvp_uppercase_fields_001", 747 "kind": "calendar.profile.admit.rsvp.invalid", 748 "input": { 749 "kind": 31925, 750 "content": "", 751 "tags": [ 752 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 753 ["a", "31922:585591529DA0BAB31B3B1B1F986611CF5F435DCA84F978C89EE8A40CCA7103DF:BBBBBBBBBBBBBBBBBBBBBQ", "WSS://Coordinate-Relay.Example.Test/events"], 754 ["e", "E0266E3CFB0D2886F91C73F5F868F3B98273713E5FCD97C081663F5518A4B3AF", "WSS://Event-Relay.Example.Test/events"], 755 ["status", "accepted"], 756 ["p", "585591529DA0BAB31B3B1B1F986611CF5F435DCA84F978C89EE8A40CCA7103DF", "WSS://Author-Relay.Example.Test/events"] 757 ] 758 }, 759 "expected": {"error": "non_canonical_field"} 760 }, 761 { 762 "id": "profile_admit_rsvp_author_mismatch_001", 763 "kind": "calendar.profile.admit.rsvp.invalid", 764 "input": { 765 "kind": 31925, 766 "content": "", 767 "tags": [ 768 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 769 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ"], 770 ["status", "accepted"], 771 ["p", "e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af"] 772 ] 773 }, 774 "expected": {"error": "author_hint_mismatch"} 775 }, 776 { 777 "id": "profile_admit_rsvp_human_identifier_001", 778 "kind": "calendar.profile.admit.rsvp.invalid", 779 "input": { 780 "kind": 31925, 781 "content": "", 782 "tags": [ 783 ["d", "farm-tour-rsvp"], 784 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ"], 785 ["status", "accepted"] 786 ] 787 }, 788 "expected": {"error": "non_canonical_field", "field": "d"} 789 }, 790 { 791 "id": "profile_admit_collection_uppercase_coordinate_001", 792 "kind": "calendar.profile.admit.collection.invalid", 793 "input": { 794 "kind": 31924, 795 "content": "", 796 "tags": [ 797 ["d", "AAAAAAAAAAAAAAAAAAAAAA"], 798 ["title", "Uppercase coordinate"], 799 ["a", "31922:585591529DA0BAB31B3B1B1F986611CF5F435DCA84F978C89EE8A40CCA7103DF:BBBBBBBBBBBBBBBBBBBBBQ"] 800 ] 801 }, 802 "expected": {"error": "non_canonical_field", "field": "event_reference"} 803 }, 804 { 805 "id": "profile_admit_collection_uppercase_relay_001", 806 "kind": "calendar.profile.admit.collection.invalid", 807 "input": { 808 "kind": 31924, 809 "content": "", 810 "tags": [ 811 ["d", "AAAAAAAAAAAAAAAAAAAAAA"], 812 ["title", "Uppercase relay"], 813 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", "WSS://Relay.Example.Test/events"] 814 ] 815 }, 816 "expected": {"error": "non_canonical_field", "field": "event_reference"} 817 }, 818 { 819 "id": "profile_admit_rsvp_uppercase_coordinate_001", 820 "kind": "calendar.profile.admit.rsvp.invalid", 821 "input": { 822 "kind": 31925, 823 "content": "", 824 "tags": [ 825 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 826 ["a", "31922:585591529DA0BAB31B3B1B1F986611CF5F435DCA84F978C89EE8A40CCA7103DF:BBBBBBBBBBBBBBBBBBBBBQ"], 827 ["status", "accepted"] 828 ] 829 }, 830 "expected": {"error": "non_canonical_field", "field": "event_reference"} 831 }, 832 { 833 "id": "profile_admit_rsvp_uppercase_event_id_001", 834 "kind": "calendar.profile.admit.rsvp.invalid", 835 "input": { 836 "kind": 31925, 837 "content": "", 838 "tags": [ 839 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 840 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ"], 841 ["e", "E0266E3CFB0D2886F91C73F5F868F3B98273713E5FCD97C081663F5518A4B3AF"], 842 ["status", "accepted"] 843 ] 844 }, 845 "expected": {"error": "non_canonical_field", "field": "revision_reference"} 846 }, 847 { 848 "id": "profile_admit_rsvp_uppercase_author_pubkey_001", 849 "kind": "calendar.profile.admit.rsvp.invalid", 850 "input": { 851 "kind": 31925, 852 "content": "", 853 "tags": [ 854 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 855 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ"], 856 ["status", "accepted"], 857 ["p", "585591529DA0BAB31B3B1B1F986611CF5F435DCA84F978C89EE8A40CCA7103DF"] 858 ] 859 }, 860 "expected": {"error": "non_canonical_field", "field": "author_hint"} 861 }, 862 { 863 "id": "profile_admit_rsvp_uppercase_a_relay_001", 864 "kind": "calendar.profile.admit.rsvp.invalid", 865 "input": { 866 "kind": 31925, 867 "content": "", 868 "tags": [ 869 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 870 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ", "WSS://Coordinate-Relay.Example.Test/events"], 871 ["status", "accepted"] 872 ] 873 }, 874 "expected": {"error": "non_canonical_field", "field": "event_reference"} 875 }, 876 { 877 "id": "profile_admit_rsvp_uppercase_e_relay_001", 878 "kind": "calendar.profile.admit.rsvp.invalid", 879 "input": { 880 "kind": 31925, 881 "content": "", 882 "tags": [ 883 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 884 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ"], 885 ["e", "e0266e3cfb0d2886f91c73f5f868f3b98273713e5fcd97c081663f5518a4b3af", "WSS://Event-Relay.Example.Test/events"], 886 ["status", "accepted"] 887 ] 888 }, 889 "expected": {"error": "non_canonical_field", "field": "revision_reference"} 890 }, 891 { 892 "id": "profile_admit_rsvp_uppercase_p_relay_001", 893 "kind": "calendar.profile.admit.rsvp.invalid", 894 "input": { 895 "kind": 31925, 896 "content": "", 897 "tags": [ 898 ["d", "DDDDDDDDDDDDDDDDDDDDDw"], 899 ["a", "31922:585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df:BBBBBBBBBBBBBBBBBBBBBQ"], 900 ["status", "accepted"], 901 ["p", "585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df", "WSS://Author-Relay.Example.Test/events"] 902 ] 903 }, 904 "expected": {"error": "non_canonical_field", "field": "author_hint"} 905 } 906 ] 907 }