AskCHIS Neighborhood Edition

API change history

The AskCHIS Neighborhood Edition (AskCHIS NE) API provides access to all of the estimates available in the AskCHIS NE dashboard (http://askchisne.ucla.edu). The API can be used for both web development and research and makes it easy for users to build custom queries and extract estimates. Health indicators in AskCHIS NE are created using a sophisticated modeling technique called Small Area Estimation (SAE). For more information on data provenance, please visit the help section in AskCHIS NE.

Variable

Return data for a specific health indicator (e.g. variable) for specific geographic areas provided.

Note: The geoType or the geoIds parameter is required. You can have both, or just one, but you cannot leave them both empty.

Free Tier Restriction: Only one geographic area can be queried at a time. If multiple geoIds are provided, the first one will be used.

Try it

Request

Request URL

Request parameters

  • string

    Indicator name

  • (optional)
    string

    Can be any of the following (case-sensitive): population, estimate, SE, CI_LB95, CI_UB95, CV , MSE

    To query for more than one attribute, provide a comma-separated list (e.g. attributes=population, estimate, SE

  • (optional)
    string

    can be one of the following: cities, assembly, congress, senate, zcta (zip codes), state, counties

  • (optional)
    string

    Can be any GeoId that represents a geographic entity.

    To query for more than one GeoId, provide a comma-separated list (e.g. geoids=666000,644000,92037,92117).

    geoIds must belong to locations with the same geoType (all 'CITIES' or all 'COUNTIES' for example) or a '400 - Bad Request' message will be returned.

  • (optional)
    number

    Desired dataset year

Request headers

  • string
    Subscription key which provides access to this API. Found in your Profile.

Request body

Responses

200 OK

Representations

[
    {
        "name": "OBESEA",
        "description": "Adult respondents ages 18+ who had a body mass index (BMI) of 30.0 or above. BMI was calculated using respondent's self-reported weight and height.",
        "category": "Health Topic",
        "subcategory": "Obese/Overweight",
        "attributeTypes": [
            "estimate",
            "CI_LB95",
            "CI_UB95",
            "population",
            "indicator_type"
        ],
        "attributeLabels": [
            "Obese (BMI ≥ 30) (18+)",
            "-",
            "-",
            "-",
            "indicator_type"
        ],
        "geographies": [
            {
                "geoId": "6",
                "geoName": "California",
                "geoTypeId": "STATE",
                "attributes": [
                    "0.248",
                    "0.241",
                    "0.255",
                    "27796500",
                    "2"
                ],
                "isSuppressed": false,
                "suppressionReason": null
            }
        ]
    }
]

400 Bad Request

Returned when geoType and geoIds are empty

Code samples

@ECHO OFF

curl -v -X GET "http://askchisne.azure-api.net/api/variable/{name}?attributes={string}&geoType={string}&geoIds={string}&year={number}"
-H "Ocp-Apim-Subscription-Key: {subscription key}"

--data-ascii "{body}" 
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;

namespace CSHttpClientSample
{
    static class Program
    {
        static void Main()
        {
            MakeRequest();
            Console.WriteLine("Hit ENTER to exit...");
            Console.ReadLine();
        }
        
        static async void MakeRequest()
        {
            var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            // Request headers
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

            // Request parameters
            queryString["attributes"] = "{string}";
            queryString["geoType"] = "{string}";
            queryString["geoIds"] = "{string}";
            queryString["year"] = "{number}";
            var uri = "http://askchisne.azure-api.net/api/variable/{name}?" + queryString;

            var response = await client.GetAsync(uri);
        }
    }
}	
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class JavaSample 
{
    public static void main(String[] args) 
    {
        HttpClient httpclient = HttpClients.createDefault();

        try
        {
            URIBuilder builder = new URIBuilder("http://askchisne.azure-api.net/api/variable/{name}");

            builder.setParameter("attributes", "{string}");
            builder.setParameter("geoType", "{string}");
            builder.setParameter("geoIds", "{string}");
            builder.setParameter("year", "{number}");

            URI uri = builder.build();
            HttpGet request = new HttpGet(uri);
            request.setHeader("Ocp-Apim-Subscription-Key", "{subscription key}");


            // Request body
            StringEntity reqEntity = new StringEntity("{body}");
            request.setEntity(reqEntity);

            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) 
            {
                System.out.println(EntityUtils.toString(entity));
            }
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}

<!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {
        var params = {
            // Request parameters
            "attributes": "{string}",
            "geoType": "{string}",
            "geoIds": "{string}",
            "year": "{number}",
        };
      
        $.ajax({
            url: "http://askchisne.azure-api.net/api/variable/{name}?" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
            },
            type: "GET",
            // Request body
            data: "{body}",
        })
        .done(function(data) {
            alert("success");
        })
        .fail(function() {
            alert("error");
        });
    });
</script>
</body>
</html>
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
    NSString* path = @"http://askchisne.azure-api.net/api/variable/{name}";
    NSArray* array = @[
                         // Request parameters
                         @"entities=true",
                         @"attributes={string}",
                         @"geoType={string}",
                         @"geoIds={string}",
                         @"year={number}",
                      ];
    
    NSString* string = [array componentsJoinedByString:@"&"];
    path = [path stringByAppendingFormat:@"?%@", string];

    NSLog(@"%@", path);

    NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
    [_request setHTTPMethod:@"GET"];
    // Request headers
    [_request setValue:@"{subscription key}" forHTTPHeaderField:@"Ocp-Apim-Subscription-Key"];
    // Request body
    [_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
    
    NSURLResponse *response = nil;
    NSError *error = nil;
    NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];

    if (nil != error)
    {
        NSLog(@"Error: %@", error);
    }
    else
    {
        NSError* error = nil;
        NSMutableDictionary* json = nil;
        NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
        NSLog(@"%@", dataString);
        
        if (nil != _connectionData)
        {
            json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
        }
        
        if (error || !json)
        {
            NSLog(@"Could not parse loaded json with error:%@", error);
        }
        
        NSLog(@"%@", json);
        _connectionData = nil;
    }
    
    [pool drain];

    return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';

$request = new Http_Request2('http://askchisne.azure-api.net/api/variable/{name}');
$url = $request->getUrl();

$headers = array(
    // Request headers
    'Ocp-Apim-Subscription-Key' => '{subscription key}',
);

$request->setHeader($headers);

$parameters = array(
    // Request parameters
    'attributes' => '{string}',
    'geoType' => '{string}',
    'geoIds' => '{string}',
    'year' => '{number}',
);

$url->setQueryVariables($parameters);

$request->setMethod(HTTP_Request2::METHOD_GET);

// Request body
$request->setBody("{body}");

try
{
    $response = $request->send();
    echo $response->getBody();
}
catch (HttpException $ex)
{
    echo $ex;
}

?>
########### Python 2.7 #############
import httplib, urllib, base64

headers = {
    # Request headers
    'Ocp-Apim-Subscription-Key': '{subscription key}',
}

params = urllib.urlencode({
    # Request parameters
    'attributes': '{string}',
    'geoType': '{string}',
    'geoIds': '{string}',
    'year': '{number}',
})

try:
    conn = httplib.HTTPConnection('askchisne.azure-api.net')
    conn.request("GET", "/api/variable/{name}?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################

########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64

headers = {
    # Request headers
    'Ocp-Apim-Subscription-Key': '{subscription key}',
}

params = urllib.parse.urlencode({
    # Request parameters
    'attributes': '{string}',
    'geoType': '{string}',
    'geoIds': '{string}',
    'year': '{number}',
})

try:
    conn = http.client.HTTPConnection('askchisne.azure-api.net')
    conn.request("GET", "/api/variable/{name}?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################
require 'net/http'

uri = URI('http://askchisne.azure-api.net/api/variable/{name}')

query = URI.encode_www_form({
    # Request parameters
    'attributes' => '{string}',
    'geoType' => '{string}',
    'geoIds' => '{string}',
    'year' => '{number}'
})

if uri.query && uri.query.length > 0
    uri.query += '&' + query
else
    uri.query = query
end

request = Net::HTTP::Get.new(uri.request_uri)
# Request headers
request['Ocp-Apim-Subscription-Key'] = '{subscription key}'
# Request body
request.body = "{body}"

response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    http.request(request)
end

puts response.body