{"action":"created","issue":{"url":"https://api.github.com/repos/brentsimmons/JSONFeed/issues/90","repository_url":"https://api.github.com/repos/brentsimmons/JSONFeed","labels_url":"https://api.github.com/repos/brentsimmons/JSONFeed/issues/90/labels{/name}","comments_url":"https://api.github.com/repos/brentsimmons/JSONFeed/issues/90/comments","events_url":"https://api.github.com/repos/brentsimmons/JSONFeed/issues/90/events","html_url":"https://github.com/brentsimmons/JSONFeed/issues/90","id":232087852,"number":90,"title":"Official JSON Schema","user":{"login":"sonicdoe","id":652793,"avatar_url":"https://avatars3.githubusercontent.com/u/652793?v=3","gravatar_id":"","url":"https://api.github.com/users/sonicdoe","html_url":"https://github.com/sonicdoe","followers_url":"https://api.github.com/users/sonicdoe/followers","following_url":"https://api.github.com/users/sonicdoe/following{/other_user}","gists_url":"https://api.github.com/users/sonicdoe/gists{/gist_id}","starred_url":"https://api.github.com/users/sonicdoe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonicdoe/subscriptions","organizations_url":"https://api.github.com/users/sonicdoe/orgs","repos_url":"https://api.github.com/users/sonicdoe/repos","events_url":"https://api.github.com/users/sonicdoe/events{/privacy}","received_events_url":"https://api.github.com/users/sonicdoe/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2017-05-29T19:48:35Z","updated_at":"2017-05-30T19:34:06Z","closed_at":null,"body":"In https://github.com/brentsimmons/JSONFeed/issues/82#issuecomment-304655237 @manton expressed interest in an official [JSON Schema](http://json-schema.org) for JSON Feed:\r\n\r\n> I've seen at least 2 schemas and I'm not sure that one is really the \"official\" one yet. I'd love to see some consensus from the community on that. I haven't looked closely enough at the schemas to know which one is best or if differences can be merged to create a more complete version.\r\n\r\nAs far as I am aware, both @madskristensen and I have created schemas so far. See also #14, #21, #80, and #82.\r\n\r\nTo make progress towards an official schema, I have gone through [SchemaStore/schemastore’s JSON Feed schema](https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/feed.json) and [sonicdoe/jsonfeed-schema](https://github.com/sonicdoe/jsonfeed-schema). Here are the most notable differences:\r\n\r\n- schemastore describes every property using `description`\r\n- schemastore uses JSON Schema `draft-04`, jsonfeed-schema uses `draft-06`\r\n- schemastore orders properties alphabetically, jsonfeed-schema orders properties as listed in [the spec](https://jsonfeed.org/version/1)\r\n- schemastore specifies a more forgiving `version` property\r\n- schemastore uses a different regex (`^_[a-zA-Z]([^.]+)$`) than jsonfeed-schema (`^_\\\\w[^.]*$`) for extensions\r\n- jsonfeed-schema specifies a pattern for properties inside of extensions\r\n- schemastore specifies the `about` property in extensions\r\n- schemastore allows `item.id` to be a number, jsonfeed-schema only allows a string\r\n- schemastore specifies `uniqueItems` on `item.tags`\r\n\r\nI’ve intentionally tried not to make any judgments in the above list. I’ll try to go into more detail about the decisions I have made in jsonfeed-schema tomorrow so that we can discuss the up- and downsides of both approaches."},"comment":{"url":"https://api.github.com/repos/brentsimmons/JSONFeed/issues/comments/304984271","html_url":"https://github.com/brentsimmons/JSONFeed/issues/90#issuecomment-304984271","issue_url":"https://api.github.com/repos/brentsimmons/JSONFeed/issues/90","id":304984271,"user":{"login":"madskristensen","id":1258877,"avatar_url":"https://avatars0.githubusercontent.com/u/1258877?v=3","gravatar_id":"","url":"https://api.github.com/users/madskristensen","html_url":"https://github.com/madskristensen","followers_url":"https://api.github.com/users/madskristensen/followers","following_url":"https://api.github.com/users/madskristensen/following{/other_user}","gists_url":"https://api.github.com/users/madskristensen/gists{/gist_id}","starred_url":"https://api.github.com/users/madskristensen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/madskristensen/subscriptions","organizations_url":"https://api.github.com/users/madskristensen/orgs","repos_url":"https://api.github.com/users/madskristensen/repos","events_url":"https://api.github.com/users/madskristensen/events{/privacy}","received_events_url":"https://api.github.com/users/madskristensen/received_events","type":"User","site_admin":false},"created_at":"2017-05-30T19:34:06Z","updated_at":"2017-05-30T19:34:06Z","body":"> schemastore describes every property using description\r\n\r\nThe description is important because it is being used by supporting editors like Visual Studio and IntelliJ to provide hover tooltips.\r\n\r\n> schemastore specifies a more forgiving version property\r\n\r\nThe spec wasn't clear so I left the version as a `uri` type instead of a fixed enum value\r\n\r\n> schemastore uses a different regex (^_[a-zA-Z]([^.]+)$) than jsonfeed-schema (^_\\\\w[^.]*$) for extensions\r\n\r\nGreat if you have an improved regex for it. Thumbs up!\r\n\r\n> schemastore specifies the about property in extensions\r\n\r\nThat's because it's the only property in the specification for extension objects. Validating that you should have at least one in the document is very difficult to do, so I'm passing on that as well.\r\n\r\n> schemastore allows item.id to be a number, jsonfeed-schema only allows a string\r\n\r\nString-only makes sense to me\r\n\r\n> schemastore specifies uniqueItems on item.tags\r\nI did that because it seems to be a usual best practice when I look at similar JSON formats"}}
{"actor":{"display_login":"madskristensen"}}