def metadata(self, **kwargs):
        r""" Returns the metadata for a station or stations. Users must specify at least one geographic search parameter
        ('stid', 'state', 'country', 'county', 'radius', 'bbox', 'cwa', 'nwsfirezone', 'gacc', or 'subgacc') to obtain
        observation data. Other parameters may also be included. See below for optional parameters.

        Arguments:
        ----------
        complete: string, optional
            A value of 1 or 0. When set to 1, an extended list of metadata attributes for each returned station is
            provided. This result is useful for exploring the zones and regions in which a station resides.
            e.g. complete='1'
        sensorvars: string, optional
            A value of 1 or 0. When set to 1, a complete history of sensor variables and period of record is given for
            each station. e.g. sensorvars='1'
        obrange: string, optional
            Filters metadata for stations which were in operation for a specified time period. Users can specify one
            date or a date range. Dates are in the format of YYYYmmdd. e.g. obrange='20150101',
            obrange='20040101,20060101'
        obtimezone: string, optional
            Set to either UTC or local. Sets timezone of obs. Default is UTC. e.g. obtimezone='local'
        stid: string, optional
            Single or comma separated list of MesoWest station IDs. e.g. stid='kden,kslc,wbb'
        county: string, optional
            County/parish/borough (US/Canada only), full name e.g. county='Larimer'
        state: string, optional
            US state, 2-letter ID e.g. state='CO'
        country: string, optional
            Single or comma separated list of abbreviated 2 or 3 character countries e.g. country='us,ca,mx'
        radius: string, optional
            Distance from a lat/lon pt or stid as [lat,lon,radius (mi)] or [stid, radius (mi)]. e.g. radius="-120,40,20"
        bbox: string, optional
            Stations within a [lon/lat] box in the order [lonmin,latmin,lonmax,latmax] e.g. bbox="-120,40,-119,41"
        cwa: string, optional
            NWS county warning area. See http://www.nws.noaa.gov/organization.php for CWA list. e.g. cwa='LOX'
        nwsfirezone: string, optional
            NWS fire zones. See http://www.nws.noaa.gov/geodata/catalog/wsom/html/firezone.htm for a shapefile
            containing the full list of zones. e.g. nwsfirezone='LOX241'
        gacc: string, optional
            Name of Geographic Area Coordination Center e.g. gacc='EBCC' See http://gacc.nifc.gov/ for a list of GACCs.
        subgacc: string, optional
            Name of Sub GACC e.g. subgacc='EB07'
        vars: string, optional
            Single or comma separated list of sensor variables. Will return all stations that match one of provided
            variables. Useful for filtering all stations that sense only certain vars. Do not request vars twice in
            the query. e.g. vars='wind_speed,pressure' Use the variables function to see a list of sensor vars.
        status: string, optional
            A value of either active or inactive returns stations currently set as active or inactive in the archive.
            Omitting this param returns all stations. e.g. status='active'
        units: string, optional
            String or set of strings and pipes separated by commas. Default is metric units. Set units='ENGLISH' for
            FREEDOM UNITS ;) Valid  other combinations are as follows: temp|C, temp|F, temp|K; speed|mps, speed|mph,
            speed|kph, speed|kts; pres|pa, pres|mb; height|m, height|ft; precip|mm, precip|cm, precip|in; alti|pa,
            alti|inhg. e.g. units='temp|F,speed|kph,metric'
        groupby: string, optional
            Results can be grouped by key words: state, county, country, cwa, nwszone, mwsfirezone, gacc, subgacc
            e.g. groupby='state'
        timeformat: string, optional
            A python format string for returning customized date-time groups for observation times. Can include
            characters. e.g. timeformat='%m/%d/%Y at %H:%M'

        Returns:
        --------
            A dictionary of metadata.

        Raises:
        -------
            None.

        """

        self._check_geo_param(kwargs)
        kwargs['token'] = self.token

        return self._get_response('stations/metadata', kwargs)