API fields are based on files in /app/graphql/types/**
, but converted to camelCase.
Data Structures
Either specified by the query with these fields or returned from the server in this structure
PingType: String
NeighbourhoodType {
name: String
abbreviatedName: String
unit: String
unitName: String
unitCodeKey: String
unitCodeValue: String
}
ContactType {
name: String
email: String
telephone: String
}
OpeningHoursType {
dayOfWeek: String
opens: String
closes: String
}
AddressType {
streetAddress: String
postalCode: String
addressLocality: String
addressRegion: String
neighbourhood: NeighbourhoodType
}
PartnerType {
id: ID
name: String
summary: String
description: String
accessibilitySummary: String
logo: String
url: String
facebookUrl: String
twitterUrl: String
address: AddressType
areasServed: [NeighbourhoodType]
contact: ContactType
openingHours: OpeningHoursType
articles: [Article]
}
EventType {
id: ID
name: String
summary: String
description: String
startDate: ISO88601Format
endDate: ISO88601Format
address: AddressType
organizer: PartnerType
}
ArticleType {
name: String
headline: String
text: String
articleBody: String
datePublished: ISO88601Format
dateCreated: ISO88601Format
dateUpdated: ISO88601Format
providers: [Partners]
}
Making queries
Currently we only serve read queries and no mutations. The examples are written in javascript.
The following code is a bare-bones query wrapper using the node-fetch
npm module.
import fetch from 'node-fetch';
const endPoint = 'http://192.168.0.39:3000/api/v1/graphql';
function query (query, variables) {
return new Promise((resolve, reject) => {
fetch(endPoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
body: JSON.stringify({
variables,
query
})
})
.then(r => r.json())
.then(data => resolve(data))
});
}
Ping
/*
An empty call that tests if you're code is working and responds
with a simple message.
*/
query("{ping}")
.then( (response) => {
console.log(response);
});
/* response */
{
data: { ping: 'Hello World! The time is 2022-03-21 11:10:20 +0000' }
}
Event (show)
let queryString = `
query Event($id: ID!) {
event(id: $id) {
id
name
summary
description
startDate
endDate
address {
streetAddress
postalCode
addressLocality
addressRegion
}
organizer {
id
name
}
}
}`;
query(queryString, { id: 2 })
.then( (response) => {
console.log(JSON.stringify(response, null, 2));
});
/* response */
{
"data": {
"event": {
"id": "2",
"name": "event 0: A summary of an event",
"summary": "event 0: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
}
}
Events (index)
Shows a set of events in managable chunks. Can be used to load events on demand for pagination/infinite scroll. It’s a bit tricky so there’s an explanation of how connections work.
let queryString = `
query EventConnection($first: Int, $after: String) {
eventConnection(first: $first, after: $after) {
pageInfo {
hasNextPage
endCursor
}
edges {
cursor
node {
id
name
summary
description
startDate
endDate
address {
streetAddress
postalCode
addressLocality
addressRegion
}
organizer {
id
name
}
}
}
}
}`;
/* return the first block of events */
query(queryString, {first: 5})
.then( (response) => {
console.log(JSON.stringify(response, null, 2));
});
/* first response */
"data": {
"eventConnection": {
"pageInfo": {
"hasNextPage": true
},
"edges": [
{
"cursor": "MQ",
"node": {
"id": "2",
"name": "event 0: A summary of an event",
"summary": "event 0: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
},
{
"cursor": "Mg",
"node": {
"id": "3",
"name": "event 1: A summary of an event",
"summary": "event 1: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
},
{
"cursor": "Mw",
"node": {
"id": "4",
"name": "event 2: A summary of an event",
"summary": "event 2: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
},
{
"cursor": "NA",
"node": {
"id": "5",
"name": "event 3: A summary of an event",
"summary": "event 3: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
},
{
"cursor": "NQ",
"node": {
"id": "6",
"name": "event 4: A summary of an event",
"summary": "event 4: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
}
]
}
}
}
/*
Notes on connection pagination:
Cursors are GraphQL's way of identifying a record in a connection.
They act like IDs but are more complicated for reasons.
Input parameters
first: limit the number of records to return
after: only fetch records that follow on from this cursor
In the response each record is wrapped in an 'edge' that contains
the GQL cursor identifier.
pageInfo:
hasNextPage: (boolean) there are records that follow from this block
endCursor: (string) the cursor of the last record retrieved
*/
/* then to get the next block of events */
query(queryString, {first: 5, after: "NQ"})
.then( (response) => {
console.log(JSON.stringify(response, null, 2));
});
/* second response */
{
"data": {
"eventConnection": {
"pageInfo": {
"hasNextPage": true
},
"edges": [
{
"cursor": "Ng",
"node": {
"id": "7",
"name": "event 5: A summary of an event",
"summary": "event 5: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
},
{
"cursor": "Nw",
"node": {
"id": "8",
"name": "event 6: A summary of an event",
"summary": "event 6: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
},
{
"cursor": "OA",
"node": {
"id": "9",
"name": "event 7: A summary of an event",
"summary": "event 7: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
},
{
"cursor": "OQ",
"node": {
"id": "10",
"name": "event 8: A summary of an event",
"summary": "event 8: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
},
{
"cursor": "MTA",
"node": {
"id": "11",
"name": "event 9: A summary of an event",
"summary": "event 9: A summary of an event",
"description": "A longer description of this event",
"startDate": "2022-02-10 00:00:00 +0000",
"endDate": null,
"address": {
"streetAddress": "123 A Street, A place",
"postalCode": "SE2 0QG",
"addressLocality": "Belvedere",
"addressRegion": "London (region)"
},
"organizer": null
}
}
]
}
}
}
Events (filter)
Events can be filtered by date range, neighbourhood or tag. All events are returned in ascending order of start date.
let queryString = `
query EventsByFilter(
$fromDate: String,
$toDate: String,
$neighbourhoodId: Int,
$tagId: Int)
{
eventsByFilter(
fromDate: $fromDate,
toDate: $toDate,
neighbourhoodId: $neighbourhoodId,
tagId: $tagId)
{
id
name
summary
description
startDate
endDate
address {
streetAddress
postalCode
addressLocality
addressRegion
}
organizer {
id
name
}
}
}`;
/*
notes on event filter
The filter has the following parameters:
fromDate: the initial start point. defaults to
date request was made. can be in the past.
format is YYYY-MM-DD HH:MM
toDate: the end limit of query. must be after fromDate
neighbourhoodId: scope events to be in a
neighbourhood. returns events in BOTH
the address and service area.
tagId: scope events to only one tag
*/
query(queryString)
.then( (response) => {
console.log(JSON.stringify(response, null, 2));
});
/* response */
{
"data": {
"eventsByFilter": []
}
}
Some sample GQL queries that show the various input fields. The fields can be combined in one query
# default query with no args
query {
eventsByFilter {
id
name
startDate
}
# query with fromDate
query {
eventsByFilter(fromDate: "1985-01-01 00:00") {
id
name
startDate
}
# query with fromDate and toDate
query {
eventsByFilter(fromDate: "1990-01-01 00:00", toDate: "1990-03-01 00:00") {
id
name
startDate
}
# query with neighbourhoodId
query {
eventsByFilter(neighbourhoodId: 123) {
id
name
}
}
# query with tagId
query {
eventsByFilter(tagId: #{have_tag.id}) {
id
name
}
}
Partners (show)
let queryString = `
query Partner($id: ID!) {
partner(id: $id) {
id
name
summary
description
accessibilitySummary
logo
url
facebookUrl
twitterUrl
address {
streetAddress
postalCode
addressLocality
addressRegion
neighbourhood {
name
abbreviatedName
unit
unitName
unitCodeKey
unitCodeValue
}
}
contact {
name
email
telephone
}
openingHours {
dayOfWeek
opens
closes
}
areasServed {
name
abbreviatedName
unit
unitName
unitCodeKey
unitCodeValue
}
}
}`;
query(queryString, { id: 10 })
.then( (response) => {
console.log(JSON.stringify(response, null, 2));
});
/* typical response */
{
"data": {
"partner": {
"id": "10",
"name": "London Partner",
"summary": "A Partner in London",
"description": "Longer description of London Partner is here",
"accessibilitySummary": "",
"logo": "",
"url": "",
"facebookUrl": "",
"twitterUrl": "https://twitter.com/",
"address": null,
"contact": {
"name": "Me",
"email": "me@example.com",
"telephone": ""
},
"openingHours": [],
"areasServed": [
{
"name": "London",
"abbreviatedName": null,
"unit": "region",
"unitName": "London",
"unitCodeKey": "RGN19CD",
"unitCodeValue": "E12000007"
}
]
}
}
}
Partners (index)
Show a sample request returning all events for a given date range with a given partner and tag?
let queryString = `
query PartnerConnection($first: Int, $after: String) {
partnerConnection(first: $first, after: $after) {
pageInfo {
hasNextPage
endCursor
}
edges {
cursor
node {
id
name
summary
description
accessibilitySummary
logo
url
facebookUrl
twitterUrl
address {
streetAddress
postalCode
addressLocality
addressRegion
neighbourhood {
name
abbreviatedName
unit
unitName
unitCodeKey
unitCodeValue
}
}
contact {
name
email
telephone
}
openingHours {
dayOfWeek
opens
closes
}
areasServed {
name
abbreviatedName
unit
unitName
unitCodeKey
unitCodeValue
}
}
}
}
}`;
/*
The partnerConnection pagination works the same as event pagination above
*/
/* return the first block of partners */
query(queryString, {first: 3})
.then( (response) => {
console.log(JSON.stringify(response, null, 2));
})
/* response */
{
"data": {
"partnerConnection": {
"pageInfo": {
"hasNextPage": true,
"endCursor": "Mw"
},
"edges": [
{
"cursor": "MQ",
"node": {
"id": "12",
"name": "Service Area Partner",
"summary": "",
"description": "",
"accessibilitySummary": "",
"logo": "",
"url": "",
"facebookUrl": "",
"twitterUrl": "https://twitter.com/",
"address": null,
"contact": {
"name": "Me",
"email": "me@example.com",
"telephone": ""
},
"openingHours": [],
"areasServed": [
{
"name": "London",
"abbreviatedName": null,
"unit": "region",
"unitName": "London",
"unitCodeKey": "RGN19CD",
"unitCodeValue": "E12000007"
}
]
}
},
{
"cursor": "Mg",
"node": {
"id": "10",
"name": "London Partner",
"summary": "A Partner in London",
"description": "Longer description of London Partner is here",
"accessibilitySummary": "",
"logo": "",
"url": "",
"facebookUrl": "",
"twitterUrl": "https://twitter.com/",
"address": null,
"contact": {
"name": "Me",
"email": "me@example.com",
"telephone": ""
},
"openingHours": [],
"areasServed": [
{
"name": "London",
"abbreviatedName": null,
"unit": "region",
"unitName": "London",
"unitCodeKey": "RGN19CD",
"unitCodeValue": "E12000007"
}
]
}
},
{
"cursor": "Mw",
"node": {
"id": "13",
"name": "Inner London Partner",
"summary": "Summary of outer london partner",
"description": "",
"accessibilitySummary": "",
"logo": "",
"url": "",
"facebookUrl": "",
"twitterUrl": "https://twitter.com/",
"address": null,
"contact": {
"name": "",
"email": "",
"telephone": ""
},
"openingHours": [
{
"dayOfWeek": "Monday",
"opens": "09:00:00",
"closes": "17:00:00"
},
{
"dayOfWeek": "Tuesday",
"opens": "09:00:00",
"closes": "17:00:00"
},
{
"dayOfWeek": "Friday",
"opens": "09:00:00",
"closes": "17:00:00"
}
],
"areasServed": [
{
"name": "Inner London",
"abbreviatedName": null,
"unit": "county",
"unitName": "Inner London",
"unitCodeKey": "CTY19CD",
"unitCodeValue": "E13000001"
}
]
}
}
]
}
}
}
Articles (index)
The article index follows the same connection pattern as used by events and partners.
let queryString = `
query ArticleConnection($first: Int, $after: String) {
articleConnection(first: $first, after: $after) {
pageInfo {
hasNextPage
endCursor
}
edges {
cursor
node {
headline
text
datePublished
providers {
name
}
}
}
}
}`;
/*
The articleConnection pagination works the same as event pagination above
*/
/* return the first block of partners */
query(queryString, {first: 3})
.then( (response) => {
console.log(JSON.stringify(response, null, 2));
})
{
"data": {
"articleConnection": {
"edges": [
{
"node": {
"headline": "Article 1",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nunc nunc, posuere eu congue sed, volutpat quis odio. Curabitur quis mollis arcu. Vestibulum porta orci ligula, in lacinia nulla malesuada sed. Duis volutpat tincidunt nulla, sed tincidunt massa accumsan id. Praesent finibus erat id nibh gravida, eu iaculis sem mollis. Nunc sed sapien cursus, hendrerit ipsum eu, elementum ligula. Praesent efficitur tellus quis nunc interdum, ac bibendum sapien malesuada. Suspendisse auctor porttitor venenatis. Vivamus hendrerit orci sit amet ante placerat, ut eleifend arcu euismod. Suspendisse scelerisque neque eget nulla bibendum molestie. Phasellus posuere egestas dictum. Morbi non arcu sit amet orci hendrerit blandit ut vitae lorem. Ut ac risus faucibus, vestibulum quam laoreet, convallis tortor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam et consectetur leo. Praesent nec nulla arcu.\r\n\r\nPraesent id euismod turpis, quis gravida sem. Sed molestie ligula elit, a lacinia lectus efficitur non. Vestibulum accumsan, metus in faucibus pretium, nibh nulla mollis turpis, id maximus sapien magna quis velit. Nunc porttitor metus sit amet viverra consequat. Sed id ullamcorper lectus. Maecenas eget turpis eleifend, porttitor risus porttitor, dignissim lorem. In sed elementum augue. Praesent ligula dolor, faucibus nec iaculis et, pretium eget nulla. Morbi convallis libero non vehicula pulvinar."
}
},
{
"node": {
"headline": "Article 2",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nunc nunc, posuere eu congue sed, volutpat quis odio. Curabitur quis mollis arcu. Vestibulum porta orci ligula, in lacinia nulla malesuada sed. Duis volutpat tincidunt nulla, sed tincidunt massa accumsan id. Praesent finibus erat id nibh gravida, eu iaculis sem mollis. Nunc sed sapien cursus, hendrerit ipsum eu, elementum ligula. Praesent efficitur tellus quis nunc interdum, ac bibendum sapien malesuada. Suspendisse auctor porttitor venenatis. Vivamus hendrerit orci sit amet ante placerat, ut eleifend arcu euismod. Suspendisse scelerisque neque eget nulla bibendum molestie. Phasellus posuere egestas dictum. Morbi non arcu sit amet orci hendrerit blandit ut vitae lorem. Ut ac risus faucibus, vestibulum quam laoreet, convallis tortor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam et consectetur leo. Praesent nec nulla arcu.\r\n\r\nPraesent id euismod turpis, quis gravida sem. Sed molestie ligula elit, a lacinia lectus efficitur non. Vestibulum accumsan, metus in faucibus pretium, nibh nulla mollis turpis, id maximus sapien magna quis velit. Nunc porttitor metus sit amet viverra consequat. Sed id ullamcorper lectus. Maecenas eget turpis eleifend, porttitor risus porttitor, dignissim lorem. In sed elementum augue. Praesent ligula dolor, faucibus nec iaculis et, pretium eget nulla. Morbi convallis libero non vehicula pulvinar."
}
},
{
"node": {
"headline": "Article 3",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nunc nunc, posuere eu congue sed, volutpat quis odio. Curabitur quis mollis arcu. Vestibulum porta orci ligula, in lacinia nulla malesuada sed. Duis volutpat tincidunt nulla, sed tincidunt massa accumsan id. Praesent finibus erat id nibh gravida, eu iaculis sem mollis. Nunc sed sapien cursus, hendrerit ipsum eu, elementum ligula. Praesent efficitur tellus quis nunc interdum, ac bibendum sapien malesuada. Suspendisse auctor porttitor venenatis. Vivamus hendrerit orci sit amet ante placerat, ut eleifend arcu euismod. Suspendisse scelerisque neque eget nulla bibendum molestie. Phasellus posuere egestas dictum. Morbi non arcu sit amet orci hendrerit blandit ut vitae lorem. Ut ac risus faucibus, vestibulum quam laoreet, convallis tortor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam et consectetur leo. Praesent nec nulla arcu.\r\n\r\nPraesent id euismod turpis, quis gravida sem. Sed molestie ligula elit, a lacinia lectus efficitur non. Vestibulum accumsan, metus in faucibus pretium, nibh nulla mollis turpis, id maximus sapien magna quis velit. Nunc porttitor metus sit amet viverra consequat. Sed id ullamcorper lectus. Maecenas eget turpis eleifend, porttitor risus porttitor, dignissim lorem. In sed elementum augue. Praesent ligula dolor, faucibus nec iaculis et, pretium eget nulla. Morbi convallis libero non vehicula pulvinar."
}
}
]
}
}
}
Articles by tag and by partner tag
To find an article that has been tagged with a given tag the following endpoint is provided (Articles can return any field that is listed in the ArticleType
found at the top of this page)
query {
articlesByTag(tagID) {
headline
articleBody
author
datePublished
}
}
Only articles that have been published will be returned. All articles are sorted by datePublished
. The following response is typical
{
"data": [
{
"headline": "Article 1",
"articleBody": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nunc nunc, posuere eu congue sed, volutpat quis odio. Curabitur quis mollis arcu. Vestibulum porta orci ligula, in lacinia nulla malesuada sed. Duis volutpat tincidunt nulla, sed tincidunt massa accumsan id. Praesent finibus erat id nibh gravida, eu iaculis sem mollis. Nunc sed sapien cursus, hendrerit ipsum eu, elementum ligula. Praesent efficitur tellus quis nunc interdum, ac bibendum sapien malesuada. Suspendisse auctor porttitor venenatis. Vivamus hendrerit orci sit amet ante placerat, ut eleifend arcu euismod. Suspendisse scelerisque neque eget nulla bibendum molestie. Phasellus posuere egestas dictum. Morbi non arcu sit amet orci hendrerit blandit ut vitae lorem. Ut ac risus faucibus, vestibulum quam laoreet, convallis tortor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam et consectetur leo. Praesent nec nulla arcu.\r\n\r\nPraesent id euismod turpis, quis gravida sem. Sed molestie ligula elit, a lacinia lectus efficitur non. Vestibulum accumsan, metus in faucibus pretium, nibh nulla mollis turpis, id maximus sapien magna quis velit. Nunc porttitor metus sit amet viverra consequat. Sed id ullamcorper lectus. Maecenas eget turpis eleifend, porttitor risus porttitor, dignissim lorem. In sed elementum augue. Praesent ligula dolor, faucibus nec iaculis et, pretium eget nulla. Morbi convallis libero non vehicula pulvinar."
"author": "A User",
"datePublished": "2022-02-10 00:00:00 +0000"
},
{
"headline": "Article 2",
"articleBody": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nunc nunc, posuere eu congue sed, volutpat quis odio. Curabitur quis mollis arcu. Vestibulum porta orci ligula, in lacinia nulla malesuada sed. Duis volutpat tincidunt nulla, sed tincidunt massa accumsan id. Praesent finibus erat id nibh gravida, eu iaculis sem mollis. Nunc sed sapien cursus, hendrerit ipsum eu, elementum ligula. Praesent efficitur tellus quis nunc interdum, ac bibendum sapien malesuada. Suspendisse auctor porttitor venenatis. Vivamus hendrerit orci sit amet ante placerat, ut eleifend arcu euismod. Suspendisse scelerisque neque eget nulla bibendum molestie. Phasellus posuere egestas dictum. Morbi non arcu sit amet orci hendrerit blandit ut vitae lorem. Ut ac risus faucibus, vestibulum quam laoreet, convallis tortor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam et consectetur leo. Praesent nec nulla arcu.\r\n\r\nPraesent id euismod turpis, quis gravida sem. Sed molestie ligula elit, a lacinia lectus efficitur non. Vestibulum accumsan, metus in faucibus pretium, nibh nulla mollis turpis, id maximus sapien magna quis velit. Nunc porttitor metus sit amet viverra consequat. Sed id ullamcorper lectus. Maecenas eget turpis eleifend, porttitor risus porttitor, dignissim lorem. In sed elementum augue. Praesent ligula dolor, faucibus nec iaculis et, pretium eget nulla. Morbi convallis libero non vehicula pulvinar."
"author": "A User",
"datePublished": "2022-02-08 00:00:00 +0000"
},
{
"headline": "Article 3",
"articleBody": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nunc nunc, posuere eu congue sed, volutpat quis odio. Curabitur quis mollis arcu. Vestibulum porta orci ligula, in lacinia nulla malesuada sed. Duis volutpat tincidunt nulla, sed tincidunt massa accumsan id. Praesent finibus erat id nibh gravida, eu iaculis sem mollis. Nunc sed sapien cursus, hendrerit ipsum eu, elementum ligula. Praesent efficitur tellus quis nunc interdum, ac bibendum sapien malesuada. Suspendisse auctor porttitor venenatis. Vivamus hendrerit orci sit amet ante placerat, ut eleifend arcu euismod. Suspendisse scelerisque neque eget nulla bibendum molestie. Phasellus posuere egestas dictum. Morbi non arcu sit amet orci hendrerit blandit ut vitae lorem. Ut ac risus faucibus, vestibulum quam laoreet, convallis tortor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam et consectetur leo. Praesent nec nulla arcu.\r\n\r\nPraesent id euismod turpis, quis gravida sem. Sed molestie ligula elit, a lacinia lectus efficitur non. Vestibulum accumsan, metus in faucibus pretium, nibh nulla mollis turpis, id maximus sapien magna quis velit. Nunc porttitor metus sit amet viverra consequat. Sed id ullamcorper lectus. Maecenas eget turpis eleifend, porttitor risus porttitor, dignissim lorem. In sed elementum augue. Praesent ligula dolor, faucibus nec iaculis et, pretium eget nulla. Morbi convallis libero non vehicula pulvinar."
"author": "A User",
"datePublished": "2022-02-02 00:00:00 +0000"
},
]
}
articlesByPartnerTag
has the same symantics and response format as articlesByTag
except it will return all articles that are associated with a partner
that has the given tag.
Article (show)
(TBD)
Show a sample request returning all fields for a named article
Include nested fields like author partner etc