@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api BC Gov News API Service 1.0
@base https://news.api.gov.bc.ca/
@version 1.0
@common_fields {api-version: str=1.0}
@endpoints 27
@hint download_for_search
@toc api(27)

@endpoint GET /api/FacebookPosts/ByUri
@optional {uri: str=}
@returns(200) {poster: str, posterLogo: str, posterSubtitle: str, posterLikes: int(int32), content: str, postLikes: int(int32), postComments: int(int32), postShares: int(int32), facebookObjectId: int(int32), type: str, pictureUri: str}

@endpoint GET /api/Home
@returns(200) {liveWebcastFlashMediaManifestUrl: str, liveWebcastM3uPlaylist: str, name: str, topPostKey: str, featurePostKey: str}

@endpoint GET /api/Ministries
@returns(200)

@endpoint GET /api/Ministries/{key}
@required {key: str}
@returns(200) {childMinistryKey: str, parentMinistryKey: str, ministryUrl: str, displayAdditionalName: str, topicLinks: [map], serviceLinks: [map], newsletterLinks: [map], ministerName: str, contactUser: map{fullName: str, phoneNumber: str, mobileNumber: str, emailAddress: str}, secondContactUser: map{fullName: str, phoneNumber: str, mobileNumber: str, emailAddress: str}, weekendContactNumber: str, twitterFeedUsername: str, flickrUri: str, youtubeUri: str, audioUri: str, isActive: bool, name: str, topPostKey: str, featurePostKey: str}

@endpoint GET /api/Ministries/{key}/Minister
@required {key: str}
@returns(200) {headline: str, summary: str, details: str, emailHtml: str, photo: str, post: str}

@endpoint GET /api/Newsletters
@returns(200)

@endpoint GET /api/Newsletters/{newsletterKey}
@required {newsletterKey: str}
@returns(200) {name: str, ministryName: str, description: str, editions: [map]}

@endpoint GET /api/Newsletters/{newsletterKey}/Editions/{editionKey}
@required {newsletterKey: str, editionKey: str}
@returns(200) {name: str, htmlBody: str}

@endpoint GET /api/Newsletters/{newsletterKey}/Editions/{editionKey}/Articles/{articleKey}
@required {newsletterKey: str, editionKey: str, articleKey: str}
@returns(200) {editionName: str, htmlBody: str}

@endpoint GET /api/Newsletters/Images/{guid}
@required {guid: str}
@returns(200) {fileName: str, imageBytes: str(byte), imageType: str}

@endpoint GET /api/Posts/{key}
@required {key: str}
@returns(200) {kind: str, atomId: str, summary: str, socialMediaSummary: str, socialMediaHeadline: str, keywords: str, publishDate: str(date-time), leadMinistryKey: str, hasMediaAssets: bool, isNewsOnDemand: bool, assetUrl: str, location: str, documents: [map], reference: str, redirectUri: str, ministryKeys: [str], sectorKeys: [str], serviceKeys: [str], facebookPictureUri: str, azureAssets: [map]}

@endpoint GET /api/Posts
@optional {postKeys: [str]=}
@returns(200)

@endpoint GET /api/Posts/Latest/{indexKind}/{indexKey}
@required {indexKind: str, indexKey: str}
@optional {postKind: str=, count: int(int32)=, skip: int(int32)=}
@returns(200)

@endpoint GET /api/Posts/Keys/{indexKind}/{indexKey}
@required {indexKind: str, indexKey: str}
@optional {postKind: str=, count: int(int32)=, skip: int(int32)=}
@returns(200)

@endpoint GET /api/Posts/Keys/{reference}
@required {reference: str}
@returns(200) {key: str, value: str}

@endpoint GET /api/Posts/LatestMediaUri/{mediaType}
@required {mediaType: str}
@returns(200)

@endpoint GET /api/ResourceLinks
@returns(200)

@endpoint GET /api/Sectors
@returns(200)

@endpoint GET /api/Sectors/{key}
@required {key: str}
@returns(200) {twitterFeedUsername: str, flickrUri: str, youtubeUri: str, audioUri: str, isActive: bool, name: str, topPostKey: str, featurePostKey: str}

@endpoint GET /api/Services
@returns(200)

@endpoint GET /api/Services/{key}
@required {key: str}
@returns(200) {twitterFeedUsername: str, flickrUri: str, youtubeUri: str, audioUri: str, isActive: bool, name: str, topPostKey: str, featurePostKey: str}

@endpoint GET /api/Slides/{id}
@required {id: str}
@returns(200) {slideId: str(uuid), headline: str, summary: str, actionLabel: str, actionUri: str, image: str(byte), facebookPostUri: str, justify: str, imageType: str}

@endpoint GET /api/Slides
@returns(200)

@endpoint GET /api/Tags
@returns(200)

@endpoint GET /api/Tags/{key}
@required {key: str}
@returns(200) {twitterFeedUsername: str, flickrUri: str, youtubeUri: str, audioUri: str, isActive: bool, name: str, topPostKey: str, featurePostKey: str}

@endpoint GET /api/Themes
@returns(200)

@endpoint GET /api/Themes/{key}
@required {key: str}
@returns(200) {twitterFeedUsername: str, flickrUri: str, youtubeUri: str, audioUri: str, isActive: bool, name: str, topPostKey: str, featurePostKey: str}

@end
