@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Geocoder REST API
@base https://geocoder.api.gov.bc.ca/
@version 2.0.0
@auth ApiKey apikey in header
@common_fields {outputFormat: str(json/geojson/xhtml/kml/gml/csv/shpz)=json}
@endpoints 16
@toc addresses.{outputFormat}(1), occupants(5), sites(5), intersections(4), parcels(1)

@group addresses.{outputFormat}
@endpoint GET /addresses.{outputFormat}
@optional {addressString: str, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, maxResults: int=1, interpolation: str(adaptive/linear/none)=adaptive, echo: bool=true, brief: bool=false, autoComplete: bool=false, exactSpelling: bool=false, fuzzyMatch: bool=false, setBack: int=0, outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, minScore: int=1, matchPrecision: str, matchPrecisionNot: str, siteName: str, unitDesignator: str(APT/BLDG/BSMT/FLR/LOBBY/LWR/PAD/PH/REAR/RM/SIDE/SITE/SUITE/TH/UNIT/UPPR), unitNumber: str, unitNumberSuffix: str, civicNumber: str, civicNumberSuffix: str, streetName: str, streetType: str, streetDirection: str(N/S/E/W/O/NE/NO/NW/SE/SO/SW), streetQualifier: str, localityName: str, provinceCode: str=BC, localities: str, notLocalities: str, bbox: str, centre: str, maxDistance: num, extrapolate: bool, parcelPoint: str}
@returns(200)

@endgroup

@group occupants
@endpoint GET /occupants/addresses.{outputFormat}
@optional {addressString: str, tags: str, tagCondition: str(or/and)=or, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, maxResults: int=1, interpolation: str(adaptive/linear/none)=adaptive, echo: bool=false, brief: bool=false, autoComplete: bool=false, exactSpelling: bool=false, fuzzyMatch: bool=false, setBack: int=0, outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, minScore: int=1, matchPrecision: str=OCCUPANT, matchPrecisionNot: str, siteName: str, unitDesignator: str(APT/BLDG/BSMT/FLR/LOBBY/LWR/PAD/PH/REAR/RM/SIDE/SITE/SUITE/TH/UNIT/UPPR), unitNumber: str, unitNumberSuffix: str, civicNumber: str, civicNumberSuffix: str, streetName: str, streetType: str, streetDirection: str(N/S/E/W/O/NE/NO/NW/SE/SO/SW), streetQualifier: str, localityName: str, provinceCode: str=BC, localities: str, notLocalities: str, bbox: str, centre: str, maxDistance: num, extrapolate: bool, parcelPoint: str}
@returns(200)

@endgroup

@group sites
@endpoint GET /sites/nearest.{outputFormat}
@required {point: str}
@optional {maxDistance: int, outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, setBack: int=0, brief: bool=false, excludeUnits: bool=false, onlyCivic: bool=false}
@returns(200)

@endgroup

@group occupants
@endpoint GET /occupants/nearest.{outputFormat}
@required {point: str}
@optional {maxDistance: int, tags: str, outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, brief: bool=false, setBack: int=0}
@returns(200)

@endgroup

@group intersections
@endpoint GET /intersections/nearest.{outputFormat}
@required {point: str}
@optional {maxDistance: int, outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, minDegree: int=2, maxDegree: int=100}
@returns(200)

@endgroup

@group sites
@endpoint GET /sites/near.{outputFormat}
@required {point: str}
@optional {maxDistance: int, outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, maxResults: int=1, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, setBack: int=0, brief: bool=false, excludeUnits: bool=false, onlyCivic: bool=false}
@returns(200)

@endgroup

@group occupants
@endpoint GET /occupants/near.{outputFormat}
@required {point: str}
@optional {tags: str, maxDistance: int, outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, maxResults: int=1, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, brief: bool=false, setBack: int=0}
@returns(200)

@endgroup

@group intersections
@endpoint GET /intersections/near.{outputFormat}
@required {point: str, outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326}
@optional {maxDistance: int, maxResults: int=1, minDegree: int=2, maxDegree: int=100}
@returns(200)

@endgroup

@group sites
@endpoint GET /sites/within.{outputFormat}
@required {bbox: str}
@optional {outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, maxResults: int=1, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, setBack: int=0, brief: bool=false, excludeUnits: bool=false, onlyCivic: bool=false}
@returns(200)

@endgroup

@group occupants
@endpoint GET /occupants/within.{outputFormat}
@required {bbox: str}
@optional {tags: str, outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, maxResults: int=200, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, brief: bool=false, setBack: int=0}
@returns(200)

@endgroup

@group intersections
@endpoint GET /intersections/within.{outputFormat}
@required {bbox: str}
@optional {outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, maxResults: int=200, minDegree: int=2, maxDegree: int=100}
@returns(200)

@endgroup

@group sites
@endpoint GET /sites/{siteID}/subsites.{outputFormat}
@required {siteID: str}
@optional {outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, brief: bool=false, setBack: int=0}
@returns(200)

@endpoint GET /sites/{siteID}.{outputFormat}
@required {siteID: str}
@optional {outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, brief: bool=false, setBack: int=0}
@returns(200)

@endgroup

@group occupants
@endpoint GET /occupants/{occupantID}.{outputFormat}
@required {occupantID: str}
@optional {outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326, locationDescriptor: str(any/accessPoint/frontDoorPoint/parcelPoint/rooftopPoint/routingPoint)=any, brief: bool=false, setBack: int=0}
@returns(200)

@endgroup

@group parcels
@endpoint GET /parcels/pids/{siteID}.{outputFormat}
@required {siteID: str}
@returns(200)

@endgroup

@group intersections
@endpoint GET /intersections/{intersectionID}.{outputFormat}
@required {intersectionID: str}
@optional {outputSRS: int(4326/4269/3005/26907/26908/26909/26910/26911)=4326}
@returns(200)

@endgroup

@end
