@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api BC Geographical Names Web Service - REST API
@base https://apps.gov.bc.ca/pub/bcgnws
@version 3.x.x
@endpoints 14
@toc names(9), features(1), featureClasses(1), featureCategories(1), featureTypes(1), nameAuthorities(1)

@group names
@endpoint GET /names/search
@required {outputFormat: str(json/xml/kml/csv)=json, name: str}
@optional {exactSpelling: int(0/1)=0, featureClass: str=*, featureCategory: str=*, featureType: str=*, sortBy: str(relevance/name/featureType/decisionDate)=relevance, outputSRS: int(4326/4269/3005/3857/26907/26908/26909/26910/26911)=4326, embed: int(0/1), outputStyle: str(summary/detail)=summary, itemsPerPage: int=20, startIndex: int=1}
@returns(200)
@errors {400}

@endpoint GET /names/official/search
@required {outputFormat: str(json/xml/kml/csv)=json, name: str}
@optional {exactSpelling: int(0/1)=0, featureClass: str=*, featureCategory: str=*, featureType: str=*, sortBy: str(relevance/name/featureType/decisionDate)=relevance, outputSRS: int(4326/4269/3005/3857/26907/26908/26909/26910/26911)=4326, embed: int(0/1), outputStyle: str(summary/detail)=summary, itemsPerPage: int=20, startIndex: int=1}
@returns(200)
@errors {400}

@endpoint GET /names/notOfficial/search
@required {outputFormat: str(json/xml/kml/csv)=json, name: str}
@optional {exactSpelling: int(0/1)=0, featureClass: str=*, featureCategory: str=*, featureType: str=*, sortBy: str(relevance/name/featureType/decisionDate)=relevance, outputSRS: int(4326/4269/3005/3857/26907/26908/26909/26910/26911)=4326, embed: int(0/1), outputStyle: str(summary/detail)=summary, itemsPerPage: int=20, startIndex: int=1}
@returns(200)
@errors {400}

@endpoint GET /names/inside
@required {outputFormat: str(json/xml/kml/csv)=json, bbox: str}
@optional {featureClass: str=*, featureCategory: str=*, featureType: str=*, sortBy: str(name/featureType/decisionDate)=name, outputSRS: int(4326/4269/3005/3857/26907/26908/26909/26910/26911)=4326, embed: int(0/1), outputStyle: str(summary/detail)=summary, itemsPerPage: int=20, startIndex: int=1}
@returns(200)
@errors {400}

@endpoint GET /names/near
@required {outputFormat: str(json/xml/kml/csv)=json, featurePoint: str, distance: str}
@optional {featureClass: str=*, featureCategory: str=*, featureType: str=*, sortBy: str(name/featureType/decisionDate)=name, outputSRS: int(4326/4269/3005/3857/26907/26908/26909/26910/26911)=4326, embed: int(0/1), outputStyle: str(summary/detail)=summary, itemsPerPage: int=20, startIndex: int=1}
@returns(200)
@errors {400}

@endpoint GET /names/decisions/recent
@required {outputFormat: str(json/xml/kml/csv)=json, days: int=30}
@optional {featureClass: str=*, featureCategory: str=*, featureType: str=*, sortBy: str(name/featureType/decisionDate)=name, outputSRS: int(4326/4269/3005/3857/26907/26908/26909/26910/26911)=4326, embed: int(0/1), outputStyle: str(summary/detail)=summary, itemsPerPage: int=20, startIndex: int=1}
@returns(200)
@errors {400}

@endpoint GET /names/decisions/year
@required {outputFormat: str(json/xml/kml/csv)=json, year: int}
@optional {featureClass: str=*, featureCategory: str=*, featureType: str=*, sortBy: str(name/featureType/decisionDate)=name, outputSRS: int(4326/4269/3005/3857/26907/26908/26909/26910/26911)=4326, embed: int(0/1), outputStyle: str(summary/detail)=summary, itemsPerPage: int=20, startIndex: int=1}
@returns(200)
@errors {400}

@endpoint GET /names/changes
@required {outputFormat: str(json/xml/kml/csv)=json, fromDate: int, toDate: int}
@optional {featureClass: str=*, featureCategory: str=*, featureType: str=*, sortBy: str(name/featureType/decisionDate)=name, outputSRS: int(4326/4269/3005/3857/26907/26908/26909/26910/26911)=4326, embed: int(0/1), outputStyle: str(summary/detail)=summary, itemsPerPage: int=20, startIndex: int=1}
@returns(200)
@errors {400}

@endpoint GET /names/{nameId}.{outputFormat}
@required {nameId: int, outputFormat: str(json/xml/kml/csv/html)=json}
@returns(200)
@errors {404}

@endgroup

@group features
@endpoint GET /features/{featureId}
@required {featureId: int}
@returns(200)
@errors {404}

@endgroup

@group featureClasses
@endpoint GET /featureClasses
@required {outputFormat: str(json/xml)=json}
@returns(200)

@endgroup

@group featureCategories
@endpoint GET /featureCategories
@required {outputFormat: str(json/xml)=json}
@returns(200)

@endgroup

@group featureTypes
@endpoint GET /featureTypes
@required {outputFormat: str(json/xml)=json}
@returns(200)

@endgroup

@group nameAuthorities
@endpoint GET /nameAuthorities
@required {outputFormat: str(json/xml)=json}
@returns(200)

@endgroup

@end
