From 1a018da978b6768e567d03fa5a5d23e34078cbd9 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Fri, 31 Jan 2025 15:20:09 -0400 Subject: [PATCH] Add NinJS (#4) Signed-off-by: Juan Cruz Viotti --- DEPENDENCIES | 1 + configuration.json | 19 + vendor/ninjs.mask | 14 + vendor/ninjs/LICENSE | 21 + .../ninjs/specification/ninjs-schema_1.1.json | 328 +++++ .../ninjs/specification/ninjs-schema_1.2.json | 475 +++++++ .../ninjs/specification/ninjs-schema_1.3.json | 572 ++++++++ .../ninjs/specification/ninjs-schema_1.4.json | 618 +++++++++ .../ninjs/specification/ninjs-schema_1.5.json | 727 ++++++++++ .../ninjs/specification/ninjs-schema_2.0.json | 725 ++++++++++ .../ninjs/specification/ninjs-schema_2.1.json | 836 ++++++++++++ .../ninjs/specification/ninjs-schema_3.0.json | 1195 +++++++++++++++++ 12 files changed, 5531 insertions(+) create mode 100644 vendor/ninjs.mask create mode 100644 vendor/ninjs/LICENSE create mode 100644 vendor/ninjs/specification/ninjs-schema_1.1.json create mode 100644 vendor/ninjs/specification/ninjs-schema_1.2.json create mode 100644 vendor/ninjs/specification/ninjs-schema_1.3.json create mode 100644 vendor/ninjs/specification/ninjs-schema_1.4.json create mode 100644 vendor/ninjs/specification/ninjs-schema_1.5.json create mode 100644 vendor/ninjs/specification/ninjs-schema_2.0.json create mode 100644 vendor/ninjs/specification/ninjs-schema_2.1.json create mode 100644 vendor/ninjs/specification/ninjs-schema_3.0.json diff --git a/DEPENDENCIES b/DEPENDENCIES index 2cccc4e..6970e98 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -49,3 +49,4 @@ hca-metadata-5-0-0 https://github.com/HumanCellAtlas/metadata-schema 5.0.0 dats-1-0-0 https://github.com/datatagsuite/schema 1.0.0 fhir https://github.com/FHIR/packages b401fbd45566006a21243a9b88f1391e32b1ed40 asyncapi https://github.com/asyncapi/spec-json-schemas v6.8.1 +ninjs https://github.com/iptc/newsinjson v3.0 diff --git a/configuration.json b/configuration.json index 8922067..e22cf58 100644 --- a/configuration.json +++ b/configuration.json @@ -167,6 +167,18 @@ "email": "info@asyncapi.io", "github": "asyncapi", "website": "https://www.asyncapi.com" + }, + "iptc": { + "title": "IPTC", + "description": "The global standards body of the news media. We provide the technical foundation for the news ecosystem", + "email": "office@iptc.org", + "github": "iptc", + "website": "https://www.iptc.org" + }, + "iptc/ninjs": { + "title": "News in JSON", + "description": "A standard the representation of news in JSON", + "github": "iptc/newsinjson" } }, "schemas": { @@ -400,6 +412,13 @@ "asyncapi": { "base": "http://asyncapi.com", "path": "./vendor/asyncapi" + }, + "iptc/ninjs": { + "base": "http://www.iptc.org/std/ninjs", + "path": "./vendor/ninjs/specification", + "rebase": [ + { "from": "https://geojson.org/schema", "to": "/geojson/v1.0.5" } + ] } } } diff --git a/vendor/ninjs.mask b/vendor/ninjs.mask new file mode 100644 index 0000000..f6a9706 --- /dev/null +++ b/vendor/ninjs.mask @@ -0,0 +1,14 @@ +.circleci/ +documentation/ +examples/ +generator/ +graphql/ +protobufs/ +tools/ +validation/ +README.md +specification/ninjs-schema-dev_0.1_v2.0.json +specification/ninjs-schema-dev_0.1_v2.1.json +specification/ninjs-schema-dev_0.2_v1.4.json +specification/ninjs-schema-dev_0.2_v1.5.json +specification/ninjs-schema_1.0.json diff --git a/vendor/ninjs/LICENSE b/vendor/ninjs/LICENSE new file mode 100644 index 0000000..385e193 --- /dev/null +++ b/vendor/ninjs/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 International Press Telecommunications Council (IPTC) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/ninjs/specification/ninjs-schema_1.1.json b/vendor/ninjs/specification/ninjs-schema_1.1.json new file mode 100644 index 0000000..f7e32cf --- /dev/null +++ b/vendor/ninjs/specification/ninjs-schema_1.1.json @@ -0,0 +1,328 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id" : "http://www.iptc.org/std/ninjs/ninjs-schema_1.1.json#", + "type" : "object", + "title" : "IPTC ninjs - News in JSON - version 1.1 (approved, 2014-03-12) / document revision of 2017-09-05: syntax error corrected", + "description" : "A news item as JSON object -- copyright 2014 IPTC - International Press Telecommunications Council - www.iptc.org - This document is published under the Creative Commons Attribution 3.0 license, see http://creativecommons.org/licenses/by/3.0/ $$comment: as of 2014-03-13 ", + "additionalProperties" : false, + "required": ["uri"], + "patternProperties" : { + "^description_[a-zA-Z0-9_]+" : { + "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 of the text)", + "type" : "string" + }, + "^body_[a-zA-Z0-9_]+" : { + "description" : "The textual content of the news object. (The string appended to body_ in the property name should reflect the format of the text)", + "type" : "string" + } + }, + "properties" : { + "uri" : { + "description" : "The identifier for this news object", + "type" : "string", + "format" : "uri" + }, + "type" : { + "description" : "The generic news type of this news object", + "type" : "string", + "enum" : ["text", "audio", "video", "picture", "graphic", "composite"] + }, + "mimetype" : { + "description" : "A MIME type which applies to this news object", + "type" : "string" + }, + "representationtype" : { + "description" : "Indicates how complete this representation of a news item is", + "type" : "string", + "enum" : ["complete", "incomplete"] + }, + "profile" : { + "description" : "An identifier for the kind of content of this news object", + "type" : "string" + }, + "version" : { + "description" : "The version of the news object which is identified by the uri property", + "type" : "string" + }, + "versioncreated" : { + "description" : "The date and time when this version of the news object was created", + "type" : "string", + "format" : "date-time" + }, + "embargoed" : { + "description" : "The date and time before which all versions of the news object are embargoed. If absent, this object is not embargoed.", + "type" : "string", + "format" : "date-time" + }, + "pubstatus" : { + "description" : "The publishing status of the news object, its value is *usable* by default.", + "type" : "string", + "enum" : ["usable", "withheld", "canceled"] + }, + "urgency" : { + "description" : "The editorial urgency of the content from 1 to 9. 1 represents the highest urgency, 9 the lowest.", + "type" : "number" + }, + "copyrightholder" : { + "description" : "The person or organisation claiming the intellectual property for the content.", + "type" : "string" + }, + "copyrightnotice" : { + "description" : "Any necessary copyright notice for claiming the intellectual property for the content.", + "type" : "string" + }, + "usageterms" : { + "description" : "A natural-language statement about the usage terms pertaining to the content.", + "type" : "string" + }, + "language" : { + "description" : "The human language used by the content. The value should follow IETF BCP47", + "type" : "string" + }, + "person" : { + "description" : "An individual human being", + "type" : "array", + "items" : { + "type" : "object", + "additionalProperties" : false, + "properties" : { + "name" : { + "description" : "The name of a person", + "type" : "string" + }, + "rel" : { + "description" : "The relationship of the content of the news object to the person", + "type" : "string" + }, + "scheme" : { + "description" : "The identifier of a scheme (= controlled vocabulary) which includes a code for the person", + "type" : "string", + "format" : "uri" + }, + "code" : { + "description": "The code for the person in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type" : "string" + } + } + } + }, + "organisation" : { + "description" : "An administrative and functional structure which may act as as a business, as a political party or not-for-profit party", + "type" : "array", + "items" : { + "type" : "object", + "additionalProperties" : false, + "properties" : { + "name" : { + "description" : "The name of the organisation", + "type" : "string" + }, + "rel" : { + "description" : "The relationship of the content of the news object to the organisation", + "type" : "string" + }, + "scheme" : { + "description" : "The identifier of a scheme (= controlled vocabulary) which includes a code for the organisation", + "type" : "string", + "format" : "uri" + }, + "code" : { + "description": "The code for the organisation in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type" : "string" + }, + "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" : { + "description" : "Ticker symbol used for the financial instrument", + "type": "string" + }, + "exchange" : { + "description" : "Identifier for the marketplace which uses the ticker symbols of the ticker property", + "type" : "string" + } + } + } + } + } + } + }, + "place" : { + "description" : "A named location", + "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" : { + "description" : "The name of the place", + "type" : "string" + }, + "rel" : { + "description" : "The relationship of the content of the news object to the place", + "type" : "string" + }, + "scheme" : { + "description" : "The identifier of a scheme (= controlled vocabulary) which includes a code for the place", + "type" : "string", + "format" : "uri" + }, + "code" : { + "description": "The code for the place in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type" : "string" + } + } + } + }, + "subject" : { + "description" : "A concept with a relationship to the content", + "type" : "array", + "items" : { + "type" : "object", + "additionalProperties" : false, + "properties" : { + "name" : { + "description" : "The name of the subject", + "type" : "string" + }, + "rel" : { + "description" : "The relationship of the content of the news object to the subject", + "type" : "string" + }, + "scheme" : { + "description" : "The identifier of a scheme (= controlled vocabulary) which includes a code for the subject", + "type" : "string", + "format" : "uri" + }, + "code" : { + "description": "The code for the subject in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type" : "string" + } + } + } + }, + "event" : { + "description" : "Something which happens in a planned or unplanned manner", + "type" : "array", + "items" : { + "type" : "object", + "additionalProperties" : false, + "properties" : { + "name" : { + "description" : "The name of the event", + "type" : "string" + }, + "rel" : { + "description" : "The relationship of the content of the news object to the event", + "type" : "string" + }, + "scheme" : { + "description" : "The identifier of a scheme (= controlled vocabulary) which includes a code for the event", + "type" : "string", + "format" : "uri" + }, + "code" : { + "description": "The code for the event in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type" : "string" + } + } + } + }, + "object" : { + "description" : "Something material, excluding persons", + "type" : "array", + "items" : { + "type" : "object", + "additionalProperties" : false, + "properties" : { + "name" : { + "description" : "The name of the object", + "type" : "string" + }, + "rel" : { + "description" : "The relationship of the content of the news object to the object", + "type" : "string" + }, + "scheme" : { + "description" : "The identifier of a scheme (= controlled vocabulary) which includes a code for the object", + "type" : "string", + "format" : "uri" + }, + "code" : { + "description": "The code for the object in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type" : "string" + } + } + } + }, + "byline" : { + "description" : "The name(s) of the creator(s) of the content", + "type" : "string" + }, + "headline" : { + "description" : "A brief and snappy introduction to the content, designed to catch the reader's attention", + "type" : "string" + }, + "located" : { + "description" : "The name of the location from which the content originates.", + "type" : "string" + }, + "renditions" : { + "description" : "Wrapper for different renditions of non-textual content of the news object", + "type" : "object", + "additionalProperties" : false, + "patternProperties" : { + "^[a-zA-Z0-9]+" : { + "description" : "A specific rendition of a non-textual content of the news object.", + "type" : "object", + "additionalProperties" : false, + "properties" : { + "href" : { + "description" : "The URL for accessing the rendition as a resource", + "type" : "string", + "format" : "uri" + }, + "mimetype" : { + "description" : "A MIME type which applies to the rendition", + "type" : "string" + }, + "title" : { + "description" : "A title for the link to the rendition resource", + "type" : "string" + }, + "height" : { + "description" : "For still and moving images: the height of the display area measured in pixels", + "type" : "number" + }, + "width" : { + "description" : "For still and moving images: the width of the display area measured in pixels", + "type" : "number" + }, + "sizeinbytes" : { + "description" : "The size of the rendition resource in bytes", + "type" : "number" + } + } + } + } + }, + "associations" : { + "description" : "Content of news objects which are associated with this news object.", + "type" : "object", + "additionalProperties" : false, + "patternProperties" : { + "^[a-zA-Z0-9]+" : { "$ref": "http://www.iptc.org/std/ninjs/ninjs-schema_1.1.json#" } + } + } + } +} \ No newline at end of file diff --git a/vendor/ninjs/specification/ninjs-schema_1.2.json b/vendor/ninjs/specification/ninjs-schema_1.2.json new file mode 100644 index 0000000..05ce381 --- /dev/null +++ b/vendor/ninjs/specification/ninjs-schema_1.2.json @@ -0,0 +1,475 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "http://www.iptc.org/std/ninjs/ninjs-schema_1.2.json#", + "type": "object", + "title": "IPTC ninjs - News in JSON - version 1.2 (approved, 2019-10-16)", + "description": "A news item as JSON object -- copyright 2019 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/ $$comment: as of 2019-10-16 ", + "additionalProperties": false, + "required": ["uri"], + "patternProperties": { + "^description_[a-zA-Z0-9_]+": { + "title": "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 of the text). 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 of the text). nar:inlineData or nar:inlineXML", + "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 kind of content of this news object. This can be any string but we suggest something identifying the content such as 'text-only' or 'text-photo'. (Investigate if this align with NewsML nar:profile or not.)", + "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" + }, + "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": "Binary format name. (Added in version 1.2. Issue #18). 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": "http://www.iptc.org/std/ninjs/ninjs-schema_1.2.json#"} + } + } + } +} diff --git a/vendor/ninjs/specification/ninjs-schema_1.3.json b/vendor/ninjs/specification/ninjs-schema_1.3.json new file mode 100644 index 0000000..2bc2368 --- /dev/null +++ b/vendor/ninjs/specification/ninjs-schema_1.3.json @@ -0,0 +1,572 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "http://www.iptc.org/std/ninjs/ninjs-schema_1.3.json#", + "type": "object", + "title": "IPTC ninjs - News in JSON - 1.3 (approved, 13 May 2020)", + "description": "A news item as JSON object -- copyright 2020 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": "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" + }, + "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": "Binary format name. (Added in version 1.2. Issue #18). 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": "http://www.iptc.org/std/ninjs/ninjs-schema_1.3.json#"} + } + }, + "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" + } + } + } + } + } +} diff --git a/vendor/ninjs/specification/ninjs-schema_1.4.json b/vendor/ninjs/specification/ninjs-schema_1.4.json new file mode 100644 index 0000000..d5ed534 --- /dev/null +++ b/vendor/ninjs/specification/ninjs-schema_1.4.json @@ -0,0 +1,618 @@ +{ + "$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": "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"] + } + ] + } + + } +} diff --git a/vendor/ninjs/specification/ninjs-schema_1.5.json b/vendor/ninjs/specification/ninjs-schema_1.5.json new file mode 100644 index 0000000..9e86a48 --- /dev/null +++ b/vendor/ninjs/specification/ninjs-schema_1.5.json @@ -0,0 +1,727 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://www.iptc.org/std/ninjs/ninjs-schema_1.5.json#", + "type": "object", + "title": "IPTC ninjs - News in JSON - version 1.5 (approved at IPTC Standards Committee May 2023)", + "description": "A news item as JSON object -- copyright 2023 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"], + "definitions": { + "contactinfoType": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "description": "Type would be method of communication like phone, mobile, address etc.", + "type": "string" + }, + "role": { + "description": "Role refers to type and could be private, office etc", + "type": "string" + }, + "lang": { + "description": "If this contactinfo object need to be qualified with what language it is in. The value should follow IETF BCP47.", + "type": "string" + }, + "name": { + "description": "Human readable name of the contact method, like name for a web page, name of persons twitter account etc", + "type": "string" + }, + "value": { + "description": "Actual phone number, email address, web url etc.", + "type": "string" + }, + "address": { + "type": "object", + "description": "The address of a person, place or organisation.", + "additionalProperties": false, + "properties": { + "lines": { + "description": "An array of lines to construct an address. The order is important to construct a correct address.", + "type": "array", + "items": { + "description": "One line in the lines array.", + "type": "string" + } + }, + "locality": { + "description": "A city/town/village etc. part of the address.", + "type": "string" + }, + "area": { + "description": "A subdivision of a country part of the address.", + "type": "string" + }, + "postalcode": { + "description": "A postal code part of the address.", + "type": "string" + }, + "country": { + "description": "A country part of the address.", + "type": "string" + } + } + } + }, + "oneOf": [ + { + "required": ["value"] + }, + { + "required": ["address"] + } + ] + } + }, + "patternProperties": { + "^description_[a-zA-Z0-9_]+": { + "title": "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" + }, + "contactinfo": { + "type": "array", + "items": {"$ref": "#/definitions/contactinfoType"} + } + } + } + }, + "organisation": { + "title": "Organisation", + "description": "An administrative and functional structure which may act 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" + }, + "symboltype": { + "title": "Symbol type uri", + "description": "https://cv.iptc.org/newscodes/financialinstrumentsymboltype. Same as type in G2.", + "type": "string", + "format": "uri" + }, + "symbol": { + "title": "Symbol", + "description": "Compare with hasInstrument in NewsML-G2. Same as symbol in G2.", + "type": "string" + } + } + } + }, + "contactinfo": { + "type": "array", + "items": {"$ref": "#/definitions/contactinfoType"} + } + } + } + }, + "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" + }, + "contactinfo": { + "type": "array", + "items": {"$ref": "#/definitions/contactinfoType"} + } + } + } + }, + "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" + }, + "creator": { + "title": "Creator", + "description": "Specifies which entity (person, organisation or system) that has created or last edited the property.", + "type": "string" + }, + "relevance": { + "title": "Relevance", + "description": "The relevance of the metadata to the news content to which it is attached.", + "type": "integer", + "minimum": 0, + "maximum": 100 + }, + "confidence": { + "title": "Confidence", + "description": "The confidence with which the metadata has been assigned.", + "type": "integer", + "minimum": 0, + "maximum": 100 + } + } + } + }, + "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" + }, + "contactinfo": { + "type": "array", + "items": {"$ref": "#/definitions/contactinfoType"} + } + } + } + }, + "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", + "type": "string", + "description": "Contains a rights expression as defined by a Rights Expression Language. nar:rightsExpressionXML or nar:rightsExpressionData" + } + }, + "oneOf": [ + { + "required": ["linkedrights"] + }, + { + "required": ["encodedrights"] + } + ] + } + } +} diff --git a/vendor/ninjs/specification/ninjs-schema_2.0.json b/vendor/ninjs/specification/ninjs-schema_2.0.json new file mode 100644 index 0000000..a68d3f0 --- /dev/null +++ b/vendor/ninjs/specification/ninjs-schema_2.0.json @@ -0,0 +1,725 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "http://www.iptc.org/std/ninjs/ninjs-schema_2.0.json#", + "type": "object", + "title": "IPTC ninjs - News in JSON - version 2.0 (approved at IPTC Standards Committee October 2021)", + "description": "A news item as JSON object -- copyright 2021 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"], + "properties": { + + "uri": { + "title": "Uniform Resource Identifier", + "description": "The global unique identifier for this news object. This is the only required property and should identify the ninjs object, not be used for links to external resources etc. 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.). See: http://cv.iptc.org/newscodes/ninature/ nar:itemClass", + "type": "string", + "enum": [ + "text", + "audio", + "video", + "picture", + "graphic", + "composite", + "component" + ] + }, + + "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": [ + "full", + "partial" + ] + }, + + "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 this ninjs object 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 this ninjs 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", + "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. Values 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 intended to be published. (Added in version 1.2 from issue #6.). (Consider using this before using the descriptions array.) 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" + }, + + "descriptions": { + "title": "Descriptions", + "description": "An array of one or more descriptions of the ninjs object. See also ednote for information from provider to reciever. Descriptions are seen as metadata. For a simple description use an array with one object only containing the value property. Role and contenttype are then undefined and it is up to the provider.", + "type": "array", + "items": { + "type": "object", + "required": ["value"], + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of this description", + "type": "string" + }, + "contenttype": { + "title": "Content Type", + "description": "The IANA (Internet Assigned Numbers Authority) media type of the content of this description. Used to be called MIME type.", + "type": "string" + }, + "value": { + "title": "Value", + "description": "The descriptive text identified with the above role (and contenttype).", + "type": "string" + } + } + } + }, + + "bodies": { + "title": "Bodies", + "description": "An array of body objects with the content as text or with markup. For a simple body use an array with one object only containing the value property. Role and contenttype are then undefined and it is up to the provider.", + "type": "array", + "items": { + "type": "object", + "required": ["value"], + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of this body", + "type": "string" + }, + "contenttype": { + "title": "Content Type", + "description": "The IANA (Internet Assigned Numbers Authority) media type of the content of this body. Used to be called MIME type.", + "type": "string" + }, + "charcount": { + "title": "Character count", + "description": "The total character count in this body 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 this body excluding figure captions. (Added in version 1.2 according to issue #27.). nar:wordcount", + "type": "number" + }, + "value": { + "title": "Value", + "description": "The body text identified with the above role and contenttype.", + "type": "string" + } + } + } + }, + + "headlines": { + "title": "Headlines", + "description": "An array of objects containing various types of headlines. For a simple headline use an array with one object only containing the value property. Role and contenttype are then undefined and it is up to the provider.", + "type": "array", + "items": { + "type": "object", + "required": ["value"], + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of this headline", + "type": "string" + }, + "contenttype": { + "title": "Content Type", + "description": "The IANA (Internet Assigned Numbers Authority) media type of the content of this headline. Used to be called MIME type.", + "type": "string" + }, + "value": { + "title": "Value", + "description": "The headline identified with the above role and contenttype.", + "type": "string" + } + } + } + }, + + "people": { + "title": "People", + "description": "An array of objects describing individual human beings. 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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the person as a complete uri with the code.", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the person as a free-text string.", + "type": "string" + } + } + } + }, + + "organisations": { + "title": "Organisations", + "description": "An array of objects describing administrative and functional structures which may, for example, 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" + }, + "uri": { + "title": "URI", + "description": "The identifier of the organisation as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the organisation as a free-text string.", + "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" + } + } + } + } + } + } + }, + + "places": { + "title": "Places", + "description": "An array of named locations. nar:subject", + "additionalProperties": false, + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the place as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the place as a free-text string.", + "type": "string" + }, + "geojson": {"$ref": "https://geojson.org/schema/GeoJSON.json#"} + } + } + }, + + "subjects": { + "title": "Subjects", + "description": "An array of objects holding concepts 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" + }, + "uri": { + "title": "URI", + "description": "The identifier of the subject as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the subject as a free-text string.", + "type": "string" + } + } + } + }, + + "events": { + "title": "Events", + "description": "An array of objects describing 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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the event as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the event as a free-text string.", + "type": "string" + } + } + } + }, + + "objects": { + "title": "Objects", + "description": "An array of objects describing 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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the object as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the object as a free-text string.", + "type": "string" + } + } + } + }, + + "infosources": { + "title": "Info sources", + "description": "An array of parties (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" + }, + "role": { + "title": "Role", + "description": "The role the infosource in relationship to the content as a uri.", + "type": "string", + "format": "uri" + }, + "uri": { + "title": "URI", + "description": "The identifier of the infosource as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the infosource as a free-text string.", + "type": "string" + } + } + } + }, + + "title": { + "title": "Title", + "description": "A short natural-language name for the item. Title is metadata, use headlines for publishable headlines. (Added in version 1.2 according to issue #9). nar:itemMeta/title", + "type": "string" + }, + + "by": { + "title": "By", + "description": "A natural-language statement about the creator (author, photographer etc.) of the content. nar:by", + "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" + }, + + "renditions": { + "title": "Renditions", + "description": "An array of objects with different renditions of the news object. nar:remoteContent", + "type": "array", + "additionalProperties": false, + "items": { + "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, + "required": ["name"], + "properties": { + "name": { + "title": "Name", + "description": "The name of this object in the array of renditions. For example 'thumbnail'", + "type": "string" + }, + "href": { + "title": "href", + "description": "The URL for accessing the rendition as a resource. nar:remoteContent@ref", + "type": "string", + "format": "uri" + }, + "contenttype": { + "title": "Content Type", + "description": "A media type which applies to this 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 media type) by a literal string value. nar:remoteContent@contenttypevariant and nar:remoteContent@format", + "type": "string" + } + } + } + }, + + "associations": { + "title": "Associations", + "description": "An array of objects with content of news objects which are associated with this news object.", + "type": "array", + "additionalProperties": false, + "items": { + "description": "One associated object where each object can use all properties in ninjs.", + "type": "object", + "anyOf": [ + { + "properties": { + "name": { + "type": "string", + "description": "The name of this object in the array of associations. For example 'logo'" + } + }, + "required": ["name"] + }, + {"$ref": "#"} + ] + } + }, + + "altids": { + "title": "Alternative ids", + "description": "Alternative identifiers assigned to the content. Each alternative id can have a role and a value. nar:altId issue #3.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of the alternative id", + "type": "string" + }, + "value": { + "title": "Value", + "description": "The alternative id value", + "type": "string" + } + } + } + }, + + "trustindicators": { + "title": "Trust indicators", + "description": "An array of objects to allow links to documents about trust indicators. issue #44. (Added in version 1.3)", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of the trust indicator as a complete uri", + "type": "string", + "format": "uri" + }, + "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": { + "title": "Name of standard.", + "description": "For example ninjs. nar:standard", + "type": "string" + }, + "version": { + "title": "Version of standard.", + "description": "For example 1.3. nar:standardversion", + "type": "string" + }, + "schema": { + "title": "Schema", + "description": "The uri of the json schema to use for validation.", + "type": "string", + "format": "uri" + } + } + }, + + "genres": { + "title": "Genres", + "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" + }, + "uri": { + "title": "URI", + "description": "The identifier of the genre as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the genre as a free-text string.", + "type": "string" + } + } + } + }, + + "rightsinfo": { + "title": "Rights information", + "type": "object", + "description": "Expression of rights to be applied to content. nar:rightsInfo", + "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"] + } + ] + } + } +} diff --git a/vendor/ninjs/specification/ninjs-schema_2.1.json b/vendor/ninjs/specification/ninjs-schema_2.1.json new file mode 100644 index 0000000..de79256 --- /dev/null +++ b/vendor/ninjs/specification/ninjs-schema_2.1.json @@ -0,0 +1,836 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "http://www.iptc.org/std/ninjs/ninjs-schema_2.1.json#", + "type": "object", + "title": "IPTC ninjs - News in JSON - version 2.1 (approved at IPTC Standards Committee May 2023)", + "description": "A news item as JSON object -- copyright 2023 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/", + "$defs": { + "contactinfoType": { + "additionalProperties": false, + "type": "object", + "properties": { + "type": { + "description": "Type would be method of communication like phone, mobile, address etc.", + "type": "string" + }, + "role": { + "description": "Role refers to type and could be private, office etc", + "type": "string" + }, + "lang": { + "description": "If this contactinfo object need to be qualified with what language it is in. The value should follow IETF BCP47.", + "type": "string" + }, + "name": { + "description": "Human readable name of the contact method, like name for a web page, name of persons twitter account etc", + "type": "string" + }, + "value": { + "description": "Actual phone number, email address, web url etc.", + "type": "string" + }, + "address": { + "type": "object", + "description": "The address of a person, place or organisation.", + "additionalProperties": false, + "properties": { + "lines": { + "description": "An array of lines to construct an address. The order is important to construct a correct address.", + "type": "array", + "items": { + "description": "One line in the lines array.", + "type": "string" + } + }, + "locality": { + "description": "A city/town/village etc. part of the address.", + "type": "string" + }, + "area": { + "description": "A subdivision of a country part of the address.", + "type": "string" + }, + "postalcode": { + "description": "A postal code part of the address.", + "type": "string" + }, + "country": { + "description": "A country part of the address.", + "type": "string" + } + } + } + }, + "oneOf": [ + { + "required": [ + "value" + ] + }, + { + "required": [ + "address" + ] + } + ] + }, + "ninjsType": { + "description": "The root schema of ninjs as a type to make it possible to combine schema parts.", + "type": "object", + "properties": { + "uri": { + "title": "Uniform Resource Identifier", + "description": "The global unique identifier for this news object. This is the only required property and should identify the ninjs object, not be used for links to external resources etc. 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.). See: http://cv.iptc.org/newscodes/ninature/ nar:itemClass", + "type": "string", + "enum": [ + "text", + "audio", + "video", + "picture", + "graphic", + "composite", + "component" + ] + }, + "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": [ + "full", + "partial" + ] + }, + "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 this ninjs object 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 this ninjs 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", + "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. Values 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 intended to be published. (Added in version 1.2 from issue #6.). (Consider using this before using the descriptions array.) 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" + }, + "descriptions": { + "title": "Descriptions", + "description": "An array of one or more descriptions of the ninjs object. See also ednote for information from provider to reciever. Descriptions are seen as metadata. For a simple description use an array with one object only containing the value property. Role and contenttype are then undefined and it is up to the provider.", + "type": "array", + "items": { + "type": "object", + "required": [ + "value" + ], + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of this description", + "type": "string" + }, + "contenttype": { + "title": "Content Type", + "description": "The IANA (Internet Assigned Numbers Authority) media type of the content of this description. Used to be called MIME type.", + "type": "string" + }, + "value": { + "title": "Value", + "description": "The descriptive text identified with the above role (and contenttype).", + "type": "string" + } + } + } + }, + "bodies": { + "title": "Bodies", + "description": "An array of body objects with the content as text or with markup. For a simple body use an array with one object only containing the value property. Role and contenttype are then undefined and it is up to the provider.", + "type": "array", + "items": { + "type": "object", + "required": [ + "value" + ], + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of this body", + "type": "string" + }, + "contenttype": { + "title": "Content Type", + "description": "The IANA (Internet Assigned Numbers Authority) media type of the content of this body. Used to be called MIME type.", + "type": "string" + }, + "charcount": { + "title": "Character count", + "description": "The total character count in this body 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 this body excluding figure captions. (Added in version 1.2 according to issue #27.). nar:wordcount", + "type": "number" + }, + "value": { + "title": "Value", + "description": "The body text identified with the above role and contenttype.", + "type": "string" + } + } + } + }, + "headlines": { + "title": "Headlines", + "description": "An array of objects containing various types of headlines. For a simple headline use an array with one object only containing the value property. Role and contenttype are then undefined and it is up to the provider.", + "type": "array", + "items": { + "type": "object", + "required": [ + "value" + ], + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of this headline", + "type": "string" + }, + "contenttype": { + "title": "Content Type", + "description": "The IANA (Internet Assigned Numbers Authority) media type of the content of this headline. Used to be called MIME type.", + "type": "string" + }, + "value": { + "title": "Value", + "description": "The headline identified with the above role and contenttype.", + "type": "string" + } + } + } + }, + "people": { + "title": "People", + "description": "An array of objects describing individual human beings. 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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the person as a complete uri with the code.", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the person as a free-text string.", + "type": "string" + }, + "contactinfo": { + "type": "array", + "items": { + "$ref": "#/$defs/contactinfoType" + } + } + } + } + }, + "organisations": { + "title": "Organisations", + "description": "An array of objects describing administrative and functional structures which may, for example, act 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" + }, + "uri": { + "title": "URI", + "description": "The identifier of the organisation as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the organisation as a free-text string.", + "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" + }, + "symboltype": { + "title": "Symbol type uri", + "description": "https://cv.iptc.org/newscodes/financialinstrumentsymboltype. Same as type in G2.", + "type": "string", + "format": "uri" + }, + "symbol": { + "title": "Symbol", + "description": "Compare with hasInstrument in NewsML-G2. Same as symbol in G2.", + "type": "string" + } + } + } + }, + "contactinfo": { + "type": "array", + "items": { + "$ref": "#/$defs/contactinfoType" + } + } + } + } + }, + "places": { + "title": "Places", + "description": "An array of named locations. nar:subject", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the place as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the place as a free-text string.", + "type": "string" + }, + "contactinfo": { + "type": "array", + "items": { + "$ref": "#/$defs/contactinfoType" + } + }, + "geojson": { + "$ref": "https://geojson.org/schema/GeoJSON.json#" + } + } + } + }, + "subjects": { + "title": "Subjects", + "description": "An array of objects holding concepts 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" + }, + "uri": { + "title": "URI", + "description": "The identifier of the subject as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the subject as a free-text string.", + "type": "string" + }, + "creator": { + "title": "Creator", + "description": "Specifies which entity (person, organisation or system) that has created or last edited the property.", + "type": "string" + }, + "relevance": { + "title": "Relevance", + "description": "The relevance of the metadata to the news content to which it is attached.", + "type": "integer", + "minimum": 0, + "maximum": 100 + }, + "confidence": { + "title": "Confidence", + "description": "The confidence with which the metadata has been assigned.", + "type": "integer", + "minimum": 0, + "maximum": 100 + } + } + } + }, + "events": { + "title": "Events", + "description": "An array of objects describing 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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the event as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the event as a free-text string.", + "type": "string" + } + } + } + }, + "objects": { + "title": "Objects", + "description": "An array of objects describing 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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the object as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the object as a free-text string.", + "type": "string" + } + } + } + }, + "infosources": { + "title": "Info sources", + "description": "An array of parties (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" + }, + "role": { + "title": "Role", + "description": "The role the infosource in relationship to the content as a uri.", + "type": "string" + }, + "uri": { + "title": "URI", + "description": "The identifier of the infosource as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the infosource as a free-text string.", + "type": "string" + }, + "contactinfo": { + "type": "array", + "items": { + "$ref": "#/$defs/contactinfoType" + } + } + } + } + }, + "title": { + "title": "Title", + "description": "A short natural-language name for the item. Title is metadata, use headlines for publishable headlines. (Added in version 1.2 according to issue #9). nar:itemMeta/title", + "type": "string" + }, + "by": { + "title": "By", + "description": "A natural-language statement about the creator (author, photographer etc.) of the content. nar:by", + "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" + }, + "renditions": { + "title": "Renditions", + "description": "An array of objects with different renditions of the news object. nar:remoteContent", + "type": "array", + "items": { + "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, + "required": [ + "name" + ], + "properties": { + "name": { + "title": "Name", + "description": "The name of this object in the array of renditions. For example 'thumbnail'", + "type": "string" + }, + "href": { + "title": "href", + "description": "The URL for accessing the rendition as a resource. nar:remoteContent@ref", + "type": "string", + "format": "uri" + }, + "contenttype": { + "title": "Content Type", + "description": "A media type which applies to this 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 media type) by a literal string value. nar:remoteContent@contenttypevariant and nar:remoteContent@format", + "type": "string" + } + } + } + }, + "associations": { + "title": "Associations", + "description": "An array of objects with content of news objects which are associated with this news object.", + "type": "array", + "items": { + "description": "Each associated object can use all properties in ninjs.", + "type": "object", + "$ref": "#/$defs/ninjsType", + "properties": { + "name": { + "title": "Name (of associated object)", + "description": "Human-readable name of the associated object.", + "type": "string" + } + }, + "required": [ + "name", + "uri" + ], + "unevaluatedProperties": false + } + }, + "altids": { + "title": "Alternative ids", + "description": "Alternative identifiers assigned to the content. Each alternative id can have a role and a value. nar:altId issue #3.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of the alternative id", + "type": "string" + }, + "value": { + "title": "Value", + "description": "The alternative id value", + "type": "string" + } + } + } + }, + "trustindicators": { + "title": "Trust indicators", + "description": "An array of objects to allow links to documents about trust indicators. issue #44. (Added in version 1.3)", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of the trust indicator as a complete uri", + "type": "string", + "format": "uri" + }, + "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": { + "title": "Name of standard.", + "description": "For example ninjs. nar:standard", + "type": "string" + }, + "version": { + "title": "Version of standard.", + "description": "For example 1.3. nar:standardversion", + "type": "string" + }, + "schema": { + "title": "Schema", + "description": "The uri of the json schema to use for validation.", + "type": "string", + "format": "uri" + } + } + }, + "genres": { + "title": "Genres", + "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" + }, + "uri": { + "title": "URI", + "description": "The identifier of the genre as a complete uri", + "type": "string" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the genre as a free-text string.", + "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 2.1)", + "type": "string", + "format": "date-time" + }, + "rightsinfo": { + "title": "Rights information", + "type": "object", + "description": "Expression of rights to be applied to content. nar:rightsInfo", + "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", + "type": "string", + "description": "Contains a rights expression as defined by a Rights Expression Language. nar:rightsExpressionXML or nar:rightsExpressionData" + } + }, + "oneOf": [ + { + "required": [ + "linkedrights" + ] + }, + { + "required": [ + "encodedrights" + ] + } + ] + } + } + }, + "unevaluatedProperties": false + }, + "$ref": "#/$defs/ninjsType", + "required": [ + "uri" + ], + "unevaluatedProperties": false +} diff --git a/vendor/ninjs/specification/ninjs-schema_3.0.json b/vendor/ninjs/specification/ninjs-schema_3.0.json new file mode 100644 index 0000000..a6ed20a --- /dev/null +++ b/vendor/ninjs/specification/ninjs-schema_3.0.json @@ -0,0 +1,1195 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "http://www.iptc.org/std/ninjs/ninjs-schema_3.0.json#", + "type": "object", + "title": "IPTC ninjs - News in JSON - version 3.0", + "description": "A news item as JSON object -- copyright 2024 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/", + "$defs": { + "datesObjectType": { + "type": "object", + "additionalProperties": false, + "description": "All dates pertaining to an event, a planning or a coverage, in particular the start and end date and any recurrence information", + "properties": { + "startDate": { + "title": "Start Date", + "description": "The date and time at which the event starts.", + "type": "string", + "format": "date-time" + }, + "endDate": { + "title": "End Date", + "description": "The date and time at which the event ends.", + "type": "string", + "format": "date-time" + }, + "expectedStartDate": { + "description": "The approximate date (and optionally time) at which the event or coverage is expected to start.", + "$ref": "#/$defs/truncatedDateTimeType" + }, + "expectedEndDate": { + "description": "The approximate date (and optionally time) at which the event or coverage is expected to end.", + "$ref": "#/$defs/truncatedDateTimeType" + }, + "expectedDuration": { + "description": "The time period that the event or coverage is expected to last. Must use the iCalendar duration format (RFC 5545). (Actual duration can be calculated from startDate and endDate)", + "type": "string" + }, + "recurrence": { + "type": "object", + "additionalProperties": false, + "description": "Specifies recurrence information about the event.", + "properties": { + "recurrenceDates": { + "type": "array", + "description": "Date(s) (and optionally times) on which the event occurs.", + "$ref": "#/$defs/truncatedDateTimeType" + }, + "recurrenceRules": { + "type": "array", + "description": "Date(s) (and optionally times) on which the event occurs.", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "frequency": { + "title": "Frequency", + "description": "The FREQ rule part identifies the type of recurrence rule.", + "type": "string", + "enum": [ + "secondly", + "minutely", + "hourly", + "daily", + "weekly", + "monthly", + "yearly" + ] + }, + "interval": { + "description": "The INTERVAL rule part contains a positive integer representing how often the recurrence rule repeats.", + "type": "integer" + }, + "until": { + "description": "The UNTIL rule part defines a date-time value which bounds the recurrence rule in an inclusive manner.", + "type": "string", + "format": "date-time" + }, + "count": { + "description": "The COUNT rule part defines the number of occurrences at which to range-bound the recurrence.", + "type": "integer" + } + } + } + } + } + } + }, + "anyOf": [ + { + "oneOf": [ + { + "required": [ + "startDate" + ] + }, + { + "required": [ + "expectedStartDate" + ] + } + ] + }, + { + "oneOf": [ + { + "required": [ + "endDate" + ] + }, + { + "required": [ + "expectedEndDate" + ] + } + ] + } + ] + }, + "contactInfoType": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "description": "Type would be method of communication like phone, mobile, address etc.", + "type": "string" + }, + "role": { + "description": "Role refers to type and could be private, office etc", + "type": "string" + }, + "lang": { + "description": "Language of this contactInfo instance. The value should follow IETF BCP47.", + "type": "string" + }, + "name": { + "description": "Human-readable name of the contact method, such as a name for a web page, name of persons twitter account etc", + "type": "string" + }, + "value": { + "description": "Actual phone number, email address, web url etc.", + "type": "string" + }, + "address": { + "type": "object", + "additionalProperties": false, + "description": "The address of a person, place or organisation.", + "properties": { + "lines": { + "description": "An array of lines to construct an address. The order is important to construct a correct address.", + "type": "array", + "items": { + "description": "One line in the address lines array.", + "type": "string" + } + }, + "locality": { + "description": "A city/town/village etc. part of the address.", + "type": "string" + }, + "area": { + "description": "A subdivision of a country part of the address.", + "type": "string" + }, + "postalCode": { + "description": "A postal code part of the address.", + "type": "string" + }, + "country": { + "description": "A country part of the address.", + "type": "string" + } + } + } + }, + "oneOf": [ + { + "required": [ + "value" + ] + }, + { + "required": [ + "address" + ] + } + ] + }, + "commissionedType": { + "type": "object", + "additionalProperties": false, + "properties": { + "by": { + "title": "By", + "description": "The person or party that commissioned the content.", + "type": "string" + }, + "on": { + "title": "On", + "description": "The date at which the content was commissioned.", + "type": "string", + "format": "date-time" + }, + "references": { + "title": "References", + "description": "Identifiers that help with the commissioning process such as purchase orders and work order numbers.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "Name of the reference", + "type": "string" + }, + "value": { + "title": "Value", + "description": "Value of the reference", + "type": "string" + } + } + } + } + } + }, + "truncatedDateTimeType": { + "description": "Allows any of year (xs:gYear, YYYY), year/month (xs:gYearMonth, YYYY-MM), year/month/day (xs:date YYYY-MM-DD), and full datetime (xs:dateTime, YYYY-MM-DDTHH:MM:SS+HH:MM), all with an optional timezone suffix. Note that this does NOT include ISO8601 month of year (xs:gMonth, --MM) or yearly day (xs:gMonthDay, --MM-DD)", + "type": "string", + "pattern": "^(-?(?:[1-9][0-9]*)?[0-9]{4})(-(1[0-2]|0[1-9])(-(3[01]|0[1-9]|[12][0-9])(T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\.[0-9]+)?(Z|[+-](?:2[0-3]|[01][0-9]):[0-5][0-9])?)?)?)?$" + }, + "organisationType": { + "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" + }, + "uri": { + "title": "URI", + "description": "The identifier of the organisation as a complete uri.", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the organisation as a free-text string.", + "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": { + "exchange": { + "title": "Exchange", + "description": "Identifier for the marketplace which uses the ticker symbols of the symbol property", + "type": "string" + }, + "symbolType": { + "title": "Symbol type uri", + "description": "Type of financial symbol used. Suggested CV: http://cv.iptc.org/newscodes/financialinstrumentsymboltype/", + "type": "string", + "format": "uri" + }, + "symbol": { + "title": "Symbol", + "description": "Symbol identifier, including ticker symbols.", + "type": "string" + } + } + } + }, + "contactInfo": { + "type": "array", + "items": { + "$ref": "#/$defs/contactInfoType" + } + } + } + }, + "renditionType": { + "type": "object", + "additionalProperties": false, + "description": "A specific rendition of the content of the news object.", + "required": [ + "name" + ], + "properties": { + "name": { + "title": "Name", + "description": "The name of this object in the array of renditions, for example 'thumbnail'. Suggested CV: http://cv.iptc.org/newscodes/rendition/", + "type": "string" + }, + "href": { + "title": "href", + "description": "The URL for accessing the rendition as a resource.", + "type": "string", + "format": "uri" + }, + "contentType": { + "title": "Content Type", + "description": "The IANA Media Type which applies to this rendition.", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A title for the link to the rendition resource", + "type": "string" + }, + "width": { + "title": "Width", + "description": "For still and moving images: the width of the display area measured in pixels.", + "type": "integer" + }, + "height": { + "title": "Height", + "description": "For still and moving images: the height of the display area measured in pixels.", + "type": "integer" + }, + "sizeInBytes": { + "title": "Size in bytes", + "description": "The size of the rendition resource in bytes.", + "type": "integer" + }, + "duration": { + "title": "Duration", + "description": "The total time duration of the content in seconds (fractional seconds are allowed).", + "type": "number" + }, + "format": { + "title": "Format", + "description": "A refinement of a generic content type (i.e. IANA media type) by a literal string value. Suggested CV: http://cv.iptc.org/newscodes/format/", + "type": "string" + }, + "aspectRatio": { + "title": "Aspect ratio", + "description": "Aspect ratio of an image or video file, which is the ratio of the pixel width to its height, such as 16:9 and 4:3.", + "type": "string" + }, + "videoCodec": { + "title": "Video codec", + "description": "The video encoding system used to create the content. Suggested CV: http://cv.iptc.org/newscodes/videocodec/", + "type": "string" + }, + "frameRate": { + "title": "Frame rate", + "description": "The number of video frames per second, which is the rate at which the material should be shown in order to achieve the intended visual effect.", + "type": "number" + }, + "poi": { + "type": "object", + "additionalProperties": false, + "title": "Point of Interest", + "description": "The main point of interest of the rendition, expressed in pixels from the top left.", + "properties": { + "x": { + "title": "X", + "description": "The x-coordinate of the point of interest of the rendition.", + "type": "integer" + }, + "y": { + "title": "Y", + "description": "The y-coordinate of the point of interest of the rendition.", + "type": "integer" + } + } + }, + "transportProtocol": { + "title": "Transport protocol", + "description": "The transport/flow type of the flow (B2B stream).", + "type": "string" + }, + "scanType": { + "title": "Scan type (video profile)", + "description": "The scan type of the video i.e. progressive or interlaced.", + "type": "string", + "enum": [ + "progressive", + "interlaced" + ] + }, + "bitrate": { + "title": "Bitrate", + "description": "The bitrate of the video. Should always include units, e.g. 400 kbps.", + "type": "string" + } + } + }, + "newsObjectType": { + "title": "Type", + "description": "The generic news type of this news object. Based on http://cv.iptc.org/newscodes/ninature/", + "type": "string", + "enum": [ + "text", + "audio", + "video", + "picture", + "graphic", + "composite", + "component", + "event", + "planning" + ] + }, + "ninjsType": { + "description": "The root schema of ninjs as a type to make it possible to combine schema parts.", + "type": "object", + "properties": { + "uri": { + "title": "Uniform Resource Identifier", + "description": "The global unique identifier for this news object. This is the only required property and should be used to identify the ninjs object, not for links to external resources etc.", + "type": "string", + "format": "uri" + }, + "type": { + "$ref": "#/$defs/newsObjectType" + }, + "representationType": { + "title": "Representation type", + "description": "Indicates how complete this representation of a news item is.", + "type": "string", + "enum": [ + "full", + "partial" + ] + }, + "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.", + "type": "string" + }, + "version": { + "title": "Version", + "description": "The version of the news object which is identified by the uri property.", + "type": "string" + }, + "firstCreated": { + "title": "First created", + "description": "Indicates when the first version of this ninjs object was created.", + "type": "string", + "format": "date-time" + }, + "versionCreated": { + "title": "Version created", + "description": "The date and time when this version of this ninjs object was created.", + "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.", + "type": "string", + "format": "date-time" + }, + "embargoedUntil": { + "title": "Embargoed until", + "description": "The date and time before which all versions of the news object are embargoed. If absent, this object is not embargoed.", + "type": "string", + "format": "date-time" + }, + "pubStatus": { + "title": "Publication status", + "description": "The publishing status of the news object. Default value is 'usable'.", + "type": "string", + "enum": [ + "usable", + "withheld", + "canceled" + ] + }, + "urgency": { + "title": "Urgency", + "description": "The editorial urgency of the content. Values from 1 to 9. 1 represents the highest urgency, 9 the lowest.", + "type": "number" + }, + "copyrightHolder": { + "title": "Copyright holder", + "description": "The person or organisation claiming the intellectual property for the content.", + "type": "string" + }, + "copyrightNotice": { + "title": "Copyright notice", + "description": "Any necessary copyright notice for claiming the intellectual property for the content.", + "type": "string" + }, + "usageTerms": { + "title": "Usage terms", + "description": "A natural-language statement about the usage terms pertaining to the content.", + "type": "string" + }, + "edNote": { + "title": "Editorial note", + "description": "A note that is intended to be read by internal staff at the receiving organisation, but not intended to be published. Consider using this before using the descriptions array.", + "type": "string" + }, + "language": { + "title": "Language", + "description": "The human language used by the content. The value should follow IETF BCP47.", + "type": "string" + }, + "descriptions": { + "title": "Descriptions", + "description": "An array of one or more descriptions of the ninjs object. See also edNote for information from provider to reciever. Descriptions are seen as metadata. For a simple description use an array with one object only containing the value property. Role and contentType are then undefined and their interpretation is up to the provider.", + "type": "array", + "items": { + "type": "object", + "required": [ + "value" + ], + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of this description.", + "type": "string" + }, + "contentType": { + "title": "Content Type", + "description": "The IANA (Internet Assigned Numbers Authority) media type of the content of this description. Previously known as MIME Type.", + "type": "string" + }, + "value": { + "title": "Value", + "description": "The descriptive text identified with the above role and/or contentType.", + "type": "string" + } + } + } + }, + "bodies": { + "title": "Bodies", + "description": "An array of body objects with the content as text or with markup. For a simple body use an array with one object only containing the value property. If role and contentType are undefined, their interpretation is up to the provider.", + "type": "array", + "items": { + "type": "object", + "required": [ + "value" + ], + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of this body.", + "type": "string" + }, + "contentType": { + "title": "Content Type", + "description": "The IANA (Internet Assigned Numbers Authority) media type of the content of this body. Previously known as MIME Type.", + "type": "string" + }, + "charCount": { + "title": "Character count", + "description": "The total character count in this body excluding figure captions.", + "type": "integer" + }, + "wordCount": { + "title": "Word count", + "description": "The total number of words in this body excluding figure captions.", + "type": "integer" + }, + "value": { + "title": "Value", + "description": "The body text identified with the above role and contentType.", + "type": "string" + } + } + } + }, + "headlines": { + "title": "Headlines", + "description": "An array of objects containing various types of headlines. For a simple headline use an array with one object only containing the value property. Role and contentType are then undefined and it is up to the provider.", + "type": "array", + "items": { + "type": "object", + "required": [ + "value" + ], + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of this headline", + "type": "string" + }, + "contentType": { + "title": "Content Type", + "description": "The IANA (Internet Assigned Numbers Authority) media type of the content of this headline. Previously known as MIME Type.", + "type": "string" + }, + "value": { + "title": "Value", + "description": "The headline identified with the above role and/or contentType.", + "type": "string" + } + } + } + }, + "people": { + "title": "People", + "description": "An array of objects describing individual human beings.", + "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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the person as a complete uri with the code.", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the person as a free-text string.", + "type": "string" + }, + "contactInfo": { + "type": "array", + "items": { + "$ref": "#/$defs/contactInfoType" + } + } + } + } + }, + "organisations": { + "title": "Organisations", + "description": "An array of objects describing administrative and functional structures which may, for example, act as a business, as a political party or not-for-profit entity.", + "type": "array", + "items": { + "$ref": "#/$defs/organisationType" + } + }, + "places": { + "title": "Places", + "description": "An array of named locations.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the place as a complete uri", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the place as a free-text string.", + "type": "string" + }, + "contactInfo": { + "type": "array", + "items": { + "$ref": "#/$defs/contactInfoType" + } + }, + "geoJSON": { + "$ref": "https://geojson.org/schema/GeoJSON.json#" + } + } + } + }, + "subjects": { + "title": "Subjects", + "description": "An array of objects holding concepts with a relationship to the content.", + "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" + }, + "uri": { + "title": "URI", + "description": "The identifier of the subject as a complete uri.", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the subject as a free-text string.", + "type": "string" + }, + "creator": { + "title": "Creator", + "description": "Specifies which entity (person, organisation or system) that created or last edited the property.", + "type": "string" + }, + "relevance": { + "title": "Relevance", + "description": "The relevance of the metadata to the news item.", + "type": "integer", + "minimum": 0, + "maximum": 100 + }, + "confidence": { + "title": "Confidence", + "description": "The confidence with which the metadata has been assigned.", + "type": "integer", + "minimum": 0, + "maximum": 100 + } + } + } + }, + "events": { + "title": "Events", + "description": "An array of objects describing something which happens in a planned or unplanned manner.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "title": "ID", + "description": "An ID for the event.", + "type": "string" + }, + "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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the event as a complete uri.", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the event as a free-text string.", + "type": "string" + } + } + } + }, + "eventDetails": { + "title": "Event Details", + "description": "A container for properties related to a planned event.", + "type": "object", + "additionalProperties": false, + "properties": { + "eventStatus": { + "type": "string", + "description": "Status of the event (as opposed to the status of coverage of the event). Suggested CV: http://cv.iptc.org/newscodes/eventstatus/", + "format": "uri" + }, + "plannedCoverageStatus": { + "type": "string", + "description": "Status of the coverage (as opposed to the status of the event itself). Suggested CV: http://cv.iptc.org/newscodes/newscoveragestatus/", + "format": "uri" + }, + "dates": { + "type": "object", + "description": "Dates and times for this event.", + "$ref": "#/$defs/datesObjectType" + }, + "organiser": { + "type": "object", + "description": "A person or organisation organising the event.", + "$ref": "#/$defs/organisationType" + } + } + }, + "plannedCoverage": { + "title": "Planned Coverage", + "description": "An array of objects specifying planned coverage which may or may not be related to an event.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "uri": { + "description": "The local identifier of the element which MUST be persistent for all versions of the item, i.e. for its entire lifecycle.", + "type": "string", + "format": "uri" + }, + "title": { + "description": "A human-readable title for the planned content.", + "type": "string" + }, + "pubStatus": { + "title": "Publication status", + "description": "The publishing status of the plannedCoverage object. Default value is 'usable'.", + "type": "string", + "enum": [ + "usable", + "withheld", + "canceled" + ] + }, + "type": { + "type": "string", + "description": "The generic news type of the planned content. Based on: http://cv.iptc.org/newscodes/ninature/ nar:itemClass", + "$ref": "#/$defs/newsObjectType" + }, + "commissioned": { + "type": "object", + "description": "Information about the commissioning of this content.", + "$ref": "#/$defs/commissionedType" + }, + "dates": { + "type": "object", + "description": "Dates and times for this planned content.", + "$ref": "#/$defs/datesObjectType" + }, + "audiences": { + "type": "array", + "description": "Intended audiences for the planned content.", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "audience": { + "description": "Intended audience(s) for the content.", + "type": "string" + }, + "significance": { + "description": "A qualifier which indicates the expected significance of the content for this specific audience.", + "type": "integer" + } + } + } + }, + "exclAudience": { + "type": "array", + "description": "Excluded audience(s) for the planned content.", + "items": { + "type": "string" + } + }, + "edNote": { + "description": "Additional natural language information about the planned content addressed to the editorial people receiving and processing the item.", + "type": "string" + }, + "urgency": { + "description": "The editorial urgency of the planned content, as scoped by the parent element.", + "type": "number", + "minimum": 1, + "maximum": 9 + }, + "language": { + "description": "The human language used by the planned content. The value should follow IETF BCP47.", + "type": "string" + }, + "itemCount": { + "description": "Number of planned items of this kind expressed by a range.", + "type": "object", + "additionalProperties": false, + "properties": { + "rangeFrom": { + "type": "integer" + }, + "rangeTo": { + "type": "integer" + } + } + }, + "wordCount": { + "description": "The count of words of textual content.", + "type": "integer" + }, + "renditions": { + "title": "Renditions", + "description": "An array of objects showing the planned renditions of the news object.", + "type": "array", + "items": { + "$ref": "#/$defs/renditionType" + } + } + } + } + }, + "objects": { + "title": "Objects", + "description": "An array of objects describing something material, excluding persons.", + "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" + }, + "uri": { + "title": "URI", + "description": "The identifier for the object as a complete uri.", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the object as a free-text string.", + "type": "string" + } + } + } + }, + "infoSources": { + "title": "Info sources", + "description": "An array of parties (person or organisation) which originated, modified, enhanced, distributed, aggregated or supplied the content or provided some information used to create or enhance the content.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "The name of the infoSource.", + "type": "string" + }, + "role": { + "title": "Role", + "description": "The role the infoSource in relationship to the content.", + "type": "string" + }, + "uri": { + "title": "URI", + "description": "The identifier of the infosource as a complete uri.", + "type": "string", + "format": "uri" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the infoSource as a free-text string.", + "type": "string" + }, + "contactInfo": { + "type": "array", + "items": { + "$ref": "#/$defs/contactInfoType" + } + } + } + } + }, + "title": { + "title": "Title", + "description": "A short natural-language name for the item. Title is metadata, use headlines for publishable headlines.", + "type": "string" + }, + "by": { + "title": "By", + "description": "A natural-language statement about the creator (author, photographer etc.) of the content.", + "type": "string" + }, + "slugline": { + "title": "Slugline", + "description": "A human-readable identifier for the item.", + "type": "string" + }, + "located": { + "title": "Located", + "description": "The name of the location from which the content originates.", + "type": "string" + }, + "renditions": { + "title": "Renditions", + "description": "An array of objects with different renditions of the news object.", + "type": "array", + "items": { + "$ref": "#/$defs/renditionType" + } + }, + "associations": { + "title": "Associations", + "description": "An array of objects with content of news objects which are associated with this news object.", + "type": "array", + "items": { + "description": "Each associated object can use all properties in ninjs.", + "type": "object", + "$ref": "#/$defs/ninjsType", + "properties": { + "name": { + "title": "Name (of associated object)", + "description": "Human-readable name of the associated object.", + "type": "string" + }, + "rel": { + "title": "Relationship", + "description": "The relationship between this document and the associated document.", + "type": "string" + } + }, + "required": [ + "name", + "uri" + ], + "unevaluatedProperties": false + } + }, + "altIds": { + "title": "Alternative ids", + "description": "Alternative identifiers assigned to the content. Each alternative id can have a role and a value.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of the alternative id.", + "type": "string" + }, + "value": { + "title": "Value", + "description": "The alternative id value.", + "type": "string" + } + } + } + }, + "trustIndicators": { + "title": "Trust indicators", + "description": "An array of objects to allow links to documents about trust indicators.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "role": { + "title": "Role", + "description": "The role of the trust indicator as a complete URI. Suggested CV: http://cv.iptc.org/newscodes/trustindicator", + "type": "string", + "format": "uri" + }, + "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.", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "The name of the standard to which this instance conforms, for example 'ninjs'.", + "type": "string" + }, + "version": { + "title": "Version", + "description": "The version of the standard to which this instance conforms, for example '3.0'.", + "type": "string" + }, + "schema": { + "title": "Schema", + "description": "The URI of the JSON Schema to use for validating this instance, for example 'http://www.iptc.org/std/ninjs/ninjs-schema_3.0.json#'", + "type": "string", + "format": "uri" + } + } + }, + "genres": { + "title": "Genres", + "description": "Indicates a nature, journalistic or intellectual characteristic of the news item.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "The name of the genre.", + "type": "string" + }, + "uri": { + "title": "URI", + "description": "The identifier of the genre as a complete URI. Suggested CV: http://cv.iptc.org/newscodes/genre", + "type": "string" + }, + "literal": { + "title": "Literal", + "description": "An identifier for the genre as a free-text string.", + "type": "string" + } + } + } + }, + "expires": { + "title": "Expires", + "description": "The date and time after which the Item is no longer considered editorially relevant by its provider.", + "type": "string", + "format": "date-time" + }, + "rightsInfo": { + "title": "Rights information", + "type": "object", + "additionalProperties": false, + "description": "Expression of rights to be applied to content.", + "properties": { + "langId": { + "type": "string", + "title": "Language id", + "description": "Identifier for the Rights Expression language used.", + "format": "uri" + }, + "linkedRights": { + "title": "Linked rights", + "description": "A link from the current Item to Web resource with rights related information.", + "type": "string", + "format": "uri" + }, + "encodedRights": { + "title": "Encoded Rights", + "type": "string", + "description": "Contains a rights expression as defined by a Rights Expression Language." + } + }, + "oneOf": [ + { + "required": [ + "linkedRights" + ] + }, + { + "required": [ + "encodedRights" + ] + } + ] + } + } + }, + "unevaluatedProperties": false + }, + "$ref": "#/$defs/ninjsType", + "required": [ + "uri" + ], + "unevaluatedProperties": false +}