Properties
| Name | Type | Description |
|---|---|---|
| id | string | |
| source | string | Publisher id; see listPublishers. |
| publisher | object | |
| kind | string | |
| slug | string | |
| title | stringnull | |
| summary | stringnull | |
| publishedAt | string | |
| modifiedAt | string | The publisher's last edit of the current version. |
| sections | array | Every section of the publisher's site the document was listed under. Tasmania Police has no site sections; its documents carry `feed` or `feed-walk`, the collection pass that saw them. |
| url | stringnull | Where the publisher published it (the earliest path seen). Publishers delete documents, so it can stop resolving; the archive does not. |
| versionCount | integer | |
| removedAt | stringnull | When the publisher stopped publishing it; null while still published. |
| attributes | object | Publisher-specific fields. Their meanings are listed per publisher by listPublishers. |
| extract | objectnull | What was read from the release's own text: when, where, what kind of event, and whether it asks the public for information. Each field is null when the text does not state it clearly; nothing is guess |
| imageCount | integer | How many images the current version carries, served or not. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/dataquoll-io/json-schema/dataquoll-io-publication-schema.json",
"title": "Publication",
"x-generated": "2026-11-05",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/dataquoll-io-openapi.json#/components/schemas/Publication",
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"source": {
"type": "string",
"description": "Publisher id; see listPublishers."
},
"publisher": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"agency": {
"type": "string"
},
"type": {
"type": "string"
},
"jurisdiction": {
"type": "string"
}
}
},
"kind": {
"type": "string",
"enum": [
"media_release",
"news",
"alert",
"notice"
]
},
"slug": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"summary": {
"type": [
"string",
"null"
]
},
"publishedAt": {
"type": "string",
"format": "date-time"
},
"modifiedAt": {
"type": "string",
"format": "date-time",
"description": "The publisher's last edit of the current version."
},
"sections": {
"type": "array",
"items": {
"type": "string"
},
"description": "Every section of the publisher's site the document was listed under. Tasmania Police has no site sections; its documents carry `feed` or `feed-walk`, the collection pass that saw them."
},
"url": {
"type": [
"string",
"null"
],
"format": "uri",
"description": "Where the publisher published it (the earliest path seen). Publishers delete documents, so it can stop resolving; the archive does not."
},
"versionCount": {
"type": "integer"
},
"removedAt": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "When the publisher stopped publishing it; null while still published."
},
"attributes": {
"type": "object",
"additionalProperties": true,
"description": "Publisher-specific fields. Their meanings are listed per publisher by listPublishers."
},
"extract": {
"type": [
"object",
"null"
],
"description": "What was read from the release's own text: when, where, what kind of event, and whether it asks the public for information. Each field is null when the text does not state it clearly; nothing is guessed. Null when the release has not been read yet, or its page has no text.",
"properties": {
"eventAt": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "When the text says the event happened: a clock time with its day, either stated ('About 12.30am on Tuesday 20 October') or counted back from the release's own publication ('about 10am this morning', 'about 11.15pm on Saturday night'), read in the publisher's time zone and given as an instant (ISO 8601, UTC, like every timestamp here). Null when no single time could be read: a range, a roundup of several incidents, a time with no day, a stated date that does not fit, a coming event, or a time the release gives for when the event was found rather than when it happened."
},
"place": {
"type": [
"object",
"null"
],
"description": "Null when the text does not place the event in one suburb. Otherwise where the text says the event happened, matched to G-NAF (Geoscape's national address file; attribution at /api/v1/attribution). suburb and street are G-NAF's names.",
"properties": {
"suburb": {
"type": [
"string",
"null"
]
},
"street": {
"type": [
"string",
"null"
],
"description": "The street the text names, or both streets of an intersection (\"Cross Street and Railway Terrace\"). Null when the text names none, or several."
},
"lat": {
"type": [
"number",
"null"
]
},
"lng": {
"type": [
"number",
"null"
]
},
"precision": {
"type": [
"string",
"null"
],
"enum": [
"exact",
"address",
"street",
"locality",
"postcode",
"lga",
"state",
null
],
"description": "street = on the named street within the named suburb: G-NAF's point for the street (the event was on it, somewhere along it, and on a long road that can be kilometres from the event), or, for an intersection the text names, the point where the two streets meet (attributes.intersection names them; placed only when G-NAF's addresses on the two streets come within 150 m). locality = the suburb's G-NAF point; a street, when given, has no point of its own here (an intersection G-NAF could not place, or a street G-NAF holds without a point or twice in that suburb). address is reserved for a house the text names; none is placed yet."
}
}
},
"category": {
"type": [
"string",
"null"
],
"enum": [
"crash",
"drink_drug_driving",
"traffic_offence",
"theft_break_in",
"assault",
"drugs_weapons",
"fire",
"missing_person",
"death",
"community_advice",
null
],
"description": "The kind of event, read from the title: crash; drink_drug_driving (drink or drug driving); traffic_offence (speeding, licence and other driving offences, pursuits); theft_break_in (theft, break-in, robbery); assault (assault and other violence); drugs_weapons (drugs, firearms and other weapons); fire; missing_person; death (a death that is not a crash); community_advice (warnings, scams and safety advice). Null when the title fits none of these, or several."
},
"attributes": {
"type": "object",
"additionalProperties": true,
"description": "Extraction details. is_appeal = true when the release asks the public for information (a Crime Stoppers ask included); help lines and general safety advice do not count. intersection = the two streets (G-NAF's names) of an intersection placed at their meeting point."
},
"method": {
"type": "string"
},
"extractedAt": {
"type": "string",
"format": "date-time"
}
}
},
"imageCount": {
"type": "integer",
"description": "How many images the current version carries, served or not."
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/dataquoll-io-publication"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.