{ "$schema": "http://json-schema.org/draft-04/schema#", "id": "http://www.iptc.org/std/ninjs/ninjs-schema_1.4.json#", "type": "object", "title": "IPTC ninjs - News in JSON - version 1.4 (approved, 18 May 2022)", "description": "A news item as JSON object -- copyright 2022 IPTC - International Press Telecommunications Council - www.iptc.org - This document is published under the Creative Commons Attribution 4.0 license, see http://creativecommons.org/licenses/by/4.0/", "additionalProperties": false, "required": ["uri"], "patternProperties": { "^description_[a-zA-Z0-9_]+": { "title": "Description", "description_old": "A free-form textual description of the content of the item. (The string appended to description_ in the property name should reflect the format of the text). nar:description", "description": "A free-form textual description of the content of the item. (The string appended to description_ in the property name should reflect the format and/or the purpose of the text, separating the parts with _). nar:description", "type": "string" }, "^body_[a-zA-Z0-9_]+": { "title": "Body", "description": "The textual content of the news object. (The string appended to body_ in the property name should reflect the format and/or the purpose of the text, separating the parts with _). nar:inlineData or nar:inlineXML", "type": "string" }, "^headline_[a-zA-Z0-9_]+": { "title": "Extra headlines", "description": "Additional headlines or strings of that type can be handled here. This is not replacing the main headline-property in ninjs. (The string appended to headline_ in the property name should reflect the format and/or the purpose of the text, separating the parts with _) nar:headline with roles issue #13. (Added in 1.3)", "type": "string" } }, "properties": { "uri": { "title": "Uniform Resource Identifier", "description": "The identifier for this news object. nar:newsItem@guid", "type": "string", "format": "uri" }, "type": { "title": "Type", "description": "The generic news type of this news object. (Value 'component' added in version 1.2 as issue #21.). nar:itemClass", "type": "string", "enum": [ "text", "audio", "video", "picture", "graphic", "composite", "component" ] }, "mimetype": { "title": "MIME type", "description": "A MIME type which applies to this news object. nar:contentType", "type": "string" }, "representationtype": { "title": "Representation type", "description": "Indicates how complete this representation of a news item is. No mapping to nar. Specific for ninjs.", "type": "string", "enum": [ "complete", "incomplete" ] }, "profile": { "title": "Profile", "description": "An identifier for the structure of the news object. This can be any string but we suggest something identifying the structure of the content such as 'text-only' or 'text-photo'. Profiles are typically provider-specific. nar:profile", "type": "string" }, "version": { "title": "Version", "description": "The version of the news object which is identified by the uri property. nar:newsItem@version", "type": "string" }, "firstcreated": { "title": "First created", "description": "Indicates when the first version of the item was created. (Added in version 1.2 from issue #5). nar:firstCreated", "type": "string", "format": "date-time" }, "versioncreated": { "title": "Version created", "description": "The date and time when this version of the news object was created. nar:versionCreated", "type": "string", "format": "date-time" }, "contentcreated": { "title": "Content created", "description": "The date and time when the content of this ninjs object was originally created. For example an old photo that is now handled as a ninjs object. nar:contentCreated (Added in 1.4)", "type": "string", "format": "date-time" }, "embargoed": { "title": "Embargoed", "description": "The date and time before which all versions of the news object are embargoed. If absent, this object is not embargoed. nar:embargoed", "type": "string", "format": "date-time" }, "pubstatus": { "title": "Publication status", "description": "The publishing status of the news object, its value is *usable* by default. nar:pubStatus", "type": "string", "enum": [ "usable", "withheld", "canceled" ] }, "urgency": { "title": "Urgency", "description": "The editorial urgency of the content from 1 to 9. 1 represents the highest urgency, 9 the lowest. nar:urgency", "type": "number" }, "copyrightholder": { "title": "Copyright holder", "description": "The person or organisation claiming the intellectual property for the content. nar:copyrightHolder", "type": "string" }, "copyrightnotice": { "title": "Copyright notice", "description": "Any necessary copyright notice for claiming the intellectual property for the content. nar:copyrightNotice", "type": "string" }, "usageterms": { "title": "Usage terms", "description": "A natural-language statement about the usage terms pertaining to the content. nar:usageTerms", "type": "string" }, "ednote": { "title": "Editorial note", "description": "A note that is intended to be read by internal staff at the receiving organisation, but not published to the end-user. (Added in version 1.2 from issue #6.) . ednote: nar:edNote", "type": "string" }, "language": { "title": "Language", "description": "The human language used by the content. The value should follow IETF BCP47. nar:language", "type": "string" }, "person": { "title": "Person", "description": "An individual human being. nar:subject", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "title": "Name", "description": "The name of a person", "type": "string" }, "rel": { "title": "Relationship", "description": "The relationship of the content of the news object to the person", "type": "string" }, "scheme": { "title": "Scheme", "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the person", "type": "string", "format": "uri" }, "code": { "title": "Code", "description": "The code for the person in a scheme (= controlled vocabulary) which is identified by the scheme property", "type": "string" } } } }, "organisation": { "title": "Organisation", "description": "An administrative and functional structure which may act as as a business, as a political party or not-for-profit party. nar:subject", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "title": "Name", "description": "The name of the organisation", "type": "string" }, "rel": { "title": "Relationship", "description": "The relationship of the content of the news object to the organisation", "type": "string" }, "scheme": { "title": "Scheme", "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the organisation", "type": "string", "format": "uri" }, "code": { "title": "Code", "description": "The code for the organisation in a scheme (= controlled vocabulary) which is identified by the scheme property", "type": "string" }, "symbols": { "title": "Symbols", "description": "Symbols used for a financial instrument linked to the organisation at a specific market place", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "ticker": { "title": "Ticker", "description": "Ticker symbol used for the financial instrument", "type": "string" }, "exchange": { "title": "Exchange", "description": "Identifier for the marketplace which uses the ticker symbols of the ticker property", "type": "string" } } } } } } }, "place": { "title": "Place", "description": "A named location. nar:subject", "type": "array", "items": { "type": "object", "additionalProperties": false, "patternProperties": { "^geometry_[a-zA-Z0-9_]+": { "description": "An object holding geo data of this place. Could be of any relevant geo data JSON object definition.", "type": "object" } }, "properties": { "name": { "title": "Name", "description": "The name of the place", "type": "string" }, "rel": { "title": "Relationship", "description": "The relationship of the content of the news object to the place", "type": "string" }, "scheme": { "title": "Scheme", "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the place", "type": "string", "format": "uri" }, "code": { "title": "Code", "description": "The code for the place in a scheme (= controlled vocabulary) which is identified by the scheme property", "type": "string" } } } }, "subject": { "title": "Subject", "description": "A concept with a relationship to the content. nar:subject", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "title": "Name", "description": "The name of the subject", "type": "string" }, "rel": { "title": "Relationship", "description": "The relationship of the content of the news object to the subject", "type": "string" }, "scheme": { "title": "Scheme", "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the subject", "type": "string", "format": "uri" }, "code": { "title": "Code", "description": "The code for the subject in a scheme (= controlled vocabulary) which is identified by the scheme property", "type": "string" } } } }, "event": { "title": "Event", "description": "Something which happens in a planned or unplanned manner. nar:?", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "title": "Name", "description": "The name of the event", "type": "string" }, "rel": { "title": "Relationship", "description": "The relationship of the content of the news object to the event", "type": "string" }, "scheme": { "title": "Scheme", "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the event", "type": "string", "format": "uri" }, "code": { "title": "Code", "description": "The code for the event in a scheme (= controlled vocabulary) which is identified by the scheme property", "type": "string" } } } }, "object": { "title": "Object", "description": "Something material, excluding persons. nar:subject", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "title": "Name", "description": "The name of the object", "type": "string" }, "rel": { "title": "Relationship", "description": "The relationship of the content of the news object to the object", "type": "string" }, "scheme": { "title": "Scheme", "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the object", "type": "string", "format": "uri" }, "code": { "title": "Code", "description": "The code for the object in a scheme (= controlled vocabulary) which is identified by the scheme property", "type": "string" } } } }, "infosource": { "title": "Info source", "description": "A party (person or organisation) which originated, modified, enhanced, distributed, aggregated or supplied the content or provided some information used to create or enhance the content. (Added in version 1.2 according to issue #15.) . infosource: nar:infoSource", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "title": "Name", "description": "The name of the infosource", "type": "string" }, "rel": { "title": "Relationship", "description": "The relationship of the content of the news object to the infosource", "type": "string" }, "scheme": { "title": "Schema", "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the infosource", "type": "string", "format": "uri" }, "code": { "title": "Code", "description": "The code for the infosource in a scheme (= controlled vocabulary) which is identified by the scheme property", "type": "string" } } } }, "title": { "title": "Title", "description": "A short natural-language name for the item. (Added in version 1.2 according to issue #9). nar:itemMeta/title", "type": "string" }, "byline": { "title": "Byline", "description": "The name(s) of the creator(s) of the content. nar:by", "type": "string" }, "headline": { "title": "Headline", "description": "A brief and snappy introduction to the content, designed to catch the reader's attention. nar:headline", "type": "string" }, "slugline": { "title": "Slugline", "description": "A human-readable identifier for the item. (Added in version 1.2 from issue #4.). nar:slugline", "type": "string" }, "located": { "title": "Located", "description": "The name of the location from which the content originates. nar:located", "type": "string" }, "charcount": { "title": "Character count", "description": "The total character count in the article excluding figure captions. (Added in version 1.2 according to issue #27.). nar:charcount", "type": "number" }, "wordcount": { "title": "Word count", "description": "The total number of words in the article excluding figure captions. (Added in version 1.2 according to issue #27.). nar:wordcount", "type": "number" }, "renditions": { "title": "Renditions", "description": "Wrapper for different renditions of the news object. nar:remoteContent", "type": "object", "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9_]+": { "description": "A specific rendition of the content of the news object. (Description changed in version 1.2 according to issue #17.)", "type": "object", "additionalProperties": false, "properties": { "href": { "title": "href", "description": "The URL for accessing the rendition as a resource. nar:remoteContent@ref", "type": "string", "format": "uri" }, "mimetype": { "title": "mimetype", "description": "A MIME type which applies to the rendition. nar:remoteContent@contenttype", "type": "string" }, "title": { "title": "Title", "description": "A title for the link to the rendition resource", "type": "string" }, "height": { "title": "Height", "description": "For still and moving images: the height of the display area measured in pixels. nar:remoteContent@height", "type": "number" }, "width": { "title": "Width", "description": "For still and moving images: the width of the display area measured in pixels. nar:remoteContent@width", "type": "number" }, "sizeinbytes": { "title": "Size in bytes", "description": "The size of the rendition resource in bytes", "type": "number" }, "duration": { "title": "Duration", "description": "The total time duration of the content in seconds. (Added in version 1.2. Issue #18). nar:remoteContent@duration", "type": "number" }, "format": { "title": "Format", "description": "A refinement of a generic content type (i.e. IANA MIME type) by a literal string value. (Added in version 1.2. Issue #18). nar:remoteContent@contenttypevariant and nar:remoteContent@format", "type": "string" } } } } }, "associations": { "description": "Content of news objects which are associated with this news object. nar:link", "type": "object", "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9_]+": { "$ref": "#" } } }, "altids": { "title": "Alternative id", "description": "Alternative identifiers of the item. It is up to the individual provider to name and set type on the alternative identifiers they like to use. nar:altId issue #3. (Added in version 1.3)", "type": "object", "additionalProperties": true }, "trustindicator": { "title": "Trust indicator", "description": "An array of objects to allow links to documents about trust indicators. (nar:link) issue #44. (Added in version 1.3)", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "scheme": { "title": "Scheme", "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the trust indicator", "type": "string", "format": "uri" }, "code": { "title": "Code", "description": "The code for the trust indicator in a scheme (= controlled vocabulary) which is identified by the scheme property", "type": "string" }, "title": { "title": "Title", "description": "The title of the resource being referenced.", "type": "string" }, "href": { "title": "href", "description": "The URL for accessing the trust indicator resource.", "type": "string", "format": "uri" } } } }, "$standard": { "title": "Standard", "type": "object", "description": "An object with information about standard, version and schema this instance is valid against. nar:standard, nar:standardversion and xml:schema issue #43. (Added in version 1.3)", "additionalProperties": false, "properties": { "name": { "type": "string", "title": "Name of standard.", "description": "For example ninjs. nar:standard" }, "version": { "type": "string", "title": "Version of standard.", "description": "For example 1.3. nar:standardversion" }, "schema": { "type": "string", "format": "uri", "title": "Schema", "description": "The uri of the json schema to use for validation." } } }, "genre": { "title": "Genre", "description": "A nature, intellectual or journalistic form of the content. nar:genre. (Added in version 1.3)", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "title": "Name", "description": "The name of the genre", "type": "string" }, "scheme": { "title": "Scheme", "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the genre. Normally http://cv.iptc.org/newscodes/genre/", "type": "string", "format": "uri" }, "code": { "title": "Code", "description": "The code for the genre in a scheme (= controlled vocabulary) which is identified by the scheme property", "type": "string" } } } }, "expires": { "title": "Expires", "description": "The date and time after which the Item is no longer considered editorially relevant by its provider. nar:expires (Added in 1.4)", "type": "string", "format": "date-time" }, "rightsinfo": { "title": "Rights information", "type": "object", "description": "Expression of rights to be applied to content. nar:rightsInfo (Added in 1.4)", "properties": { "langid": { "type": "string", "title": "Language id", "description": "Identifier for the Rights Expression language used. nar:@langid", "format": "uri" }, "linkedrights": { "title": "Linked rights", "description": "A link from the current Item to Web resource with rights related information. nar:link", "type": "string", "format": "uri" }, "encodedrights": { "title": "Encoded Rights", "additionalProperties": false, "type": "string", "description": "Contains a rights expression as defined by a Rights Expression Language. nar:rightsExpressionXML or nar:rightsExpressionData" } }, "oneOf": [ { "required": ["linkedrights"] }, { "required": ["encodedrights"] } ] } } }