application/jrd+json¶
This page tests the application/jrd+json schema using python and doctests.
Some convenience methods are included from tools.
>>> from jsonschema import validate
>>> from tools import load_schema, dump
>>> from tools.application_jrd_json import *
>>> schema = load_schema("application-jrd-json")
Validation of the wild¶
The following examples check that the result of the webfinger request conforms
to schema and has the content type application/jrd+json.
| name | acct_uri | result |
|---|---|---|
| cattle_grid | acct:cow_says_moo@dev.bovine.social | ✅ |
| mitra | acct:weekinfediverse@mitra.social | ✅ |
| mastodon | acct:Mastodon@mastodon.social | ✅ |
| sharkey | acct:julia@eepy.moe | ✅ |
| wordpress | acct:pfefferle@notiz.blog | ✅ |
| piefed | acct:casualconversation@piefed.social | ✅ |
Adding additional applications.¶
This can be done by editing data/webfinger and opening a pull request.
Examples¶
These example are taken from RFC 7033
>>> validate(instance=example1, schema=schema)
>>> validate(instance=example2, schema=schema)
>>> validate(instance=example3, schema=schema)
Example 1
{
"subject": "acct:carol@example.com",
"links": [
{
"rel": "http://openid.net/specs/connect/1.0/issuer",
"href": "https://openid.example.com"
}
]
}
Example 2
{
"subject": "http://blog.example.com/article/id/314",
"aliases": [
"http://blog.example.com/cool_new_thing",
"http://blog.example.com/steve/article/7"
],
"properties": {
"http://blgx.example.net/ns/version": "1.3",
"http://blgx.example.net/ns/ext": null
},
"links": [
{
"rel": "copyright",
"href": "http://www.example.com/copyright"
},
{
"rel": "author",
"href": "http://blog.example.com/author/steve",
"titles": {
"en-us": "The Magical World of Steve",
"fr": "Le Monde Magique de Steve"
},
"properties": {
"http://example.com/role": "editor"
}
}
]
}
Example 3
{
"subject": "acct:bob@example.com",
"aliases": [
"https://www.example.com/~bob/"
],
"properties": {
"http://example.com/ns/role": "employee"
},
"links": [
{
"rel": "http://webfinger.example/rel/profile-page",
"href": "https://www.example.com/~bob/"
},
{
"rel": "http://webfinger.example/rel/businesscard",
"href": "https://www.example.com/~bob/bob.vcf"
}
]
}
Invalid examples¶
>>> validate(instance=invalid1, schema=schema)
Traceback (most recent call last):
...
jsonschema.exceptions.ValidationError: None is not of type 'object'
Invalid Example 1
{
"subject": "acct:cow_says_moo@dev.bovine.social",
"expires": null,
"aliases": null,
"properties": null,
"links": [
{
"rel": "self",
"type": "application/activity+json",
"href": "https://dev.bovine.social/actor/VPaytKixWivWjbsoo7Fszw",
"titles": null,
"properties": null,
"template": null
}
]
}