NAV Navbar
shell javascript python
  • Introduction
  • Getting Started
  • API Reference
  • Introduction

    Getting Started

    GLOBE Developer Keys

    To use the GLOBE API, your device or app must be reviewed and approved by GLOBE. We require you to fill out this form (link TBD) for our review which includes information on your device, availability of the device and what type of training is being provided to your users. Once approved, you will receive a developer key. All requests to the GLOBE API must be accompanied by a valid developer key.

    GLOBE Access Codes

    In order to streamline the setup of citizen science devices and apps, GLOBE has implemented a token-based Access Code system to associate users with data collected by third-party devices and apps. Any GLOBE Member or GLOBE Citizen Scientist can generate an access code by going to the GLOBE Data Entry System and selecting “Register a device”.

    Access Code Types

    There are currently three different types of access codes available.

    Stationary Device Access Codes

    These access codes are intended for use with devices that don't move over time. An example would be a weather station with a fixed location. Obtaining one of these access codes will require providing the latitude, longitude, elevation and site characteristics for the location where the device will be installed. Information about the device type and model/serial number may also be provided. While these codes can be shared by all instruments on the same device (e.g.: thermometer and barometer on the same weather station), these codes should not be shared across different devices. For stationary devices, the device will not be required to send latitude, longitude or elevation with the measurement data.

    Mobile Device Access Codes

    These access codes are intended for use with devices that collect data on the go. An example of this might be a mobile ozone or water pH sensor. Obtaining one of these access codes will only require providing some information about the device (i.e.: type and model/serial number). Similar to the stationary device access codes, these codes should not be shared across different devices. Measurements using the mobile device access code will be required to send latitude and longitude with the measurement data.

    User-Application Access Codes

    For third-party apps that don't focus on a specific device, user-application access codes are appropriate. These codes are one-time login tokens that allow a user to "login" to a third-party app and submit data to GLOBE. The user can generate the access code on the access code page of the GLOBE website. Once used with a third-party app, it can only be used by that app. This allows developers to "login" to a third-party app without entering their GLOBE username and password.

    Protocols

    GLOBE protocols consist of over 50 different science experiments which can be performed by students, teachers or citizen scientists. Protocols are associated with the following spheres: Atmosphere, Biosphere, Hydrosphere, Pedosphere (Soil) and Earth as a System. A detailed description of the spheres and each GLOBE protocol can be found in the GLOBE teacher's guide. Protocols are added to the GLOBE API as demand and time allow. Not all protocols are currently supported by the API.

    Protocols Supported by the GLOBE API

    Below is a list of the GLOBE protocols that are currently supported by the GLOBE API. If you are a developer interested in submitting data for these or a different protocol, please fill out this form for our review. Once approved, you will receive a developer key.

    Name ID Description
    air temperature 114 The GLOBE Air Temperature protocol. For more information, see the Air Temperature Protocol in the GLOBE Teacher's Guide
    barometric pressure 5 The GLOBE Barometric Pressure protocol. For more information, see the Barometric Pressure Protocol in the GLOBE Teacher's Guide
    relative humidity 6 The GLOBE Relative Humidity protocol. For more information, see the Relative Humidity in the GLOBE Teacher's Guide
    current rainfall 60 The GLOBE Current Rainfall protocol. For more information, see the Precipitation in the GLOBE Teacher's Guide
    wind 61 The GLOBE Wind protocol. For more information, see the Wind in the GLOBE Teacher's Guide

    API Reference

    Request Headers

    Example Request Headers (standard production submission)

    {
        "X-GLOBE-DeveloperKey": "72ad021da4e03e560bbae644ae6180e9",
        "X-GLOBE-AccessCode": "DEV123456",
        "Content-Type": "application/json",
        "Accept": "application/json"
    }
    

    Example Request Headers (force submission to staging system)

    {
        "X-GLOBE-DeveloperKey": "72ad021da4e03e560bbae644ae6180e9",
        "X-GLOBE-AccessCode": "DEV123456",
        "X-GLOBE-Environment": "staging",
        "Content-Type": "application/json",
        "Accept": "application/json"
    }
    

    [Insert general explanation of the request headers here]

    Parameter Description
    X-GLOBE-DeveloperKey Your project's unique developer key
    X-GLOBE-AccessCode The unique GLOBE Access Code generated by the GLOBE website that associates this data with a user, organization, and site/location information. For more information about Access Codes, see the Access Codes section above.
    X-GLOBE-Environment (Optional) Which environment you are submitting data to: production, staging, or dev. Default is production.
    X-GLOBE-API-Version (Optional) Which version of the API you are using. The default is version 1. When future versions are released that break version 1 functionality, those versions numbers will be incremented and the developer wishing to use the new functionality will have to explicitly provide the desired version number.

    Protocol Reference

    Air Temperature

    Example Air Temp Submission via POST (non-mobile, consistent device):

    curl --request POST \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '{
        "measuredAt": "2017-10-19T18:44:32.746Z",
        "protocol": 114,
        "currentTempC": 31.0
      }'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "POST",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
      },
      "processData": false,
      "data": {
        "measuredAt": "2017-10-19T18:44:32.746Z",
        "protocol": 114,
        "currentTempC": 31.0
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = {
        "measuredAt": "2017-10-19T18:44:32.746Z",
        "protocol": 114,
        "currentTempC": 31.0
    }
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("POST", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Submitting Air Temperature Measurements (POST)

    Air temperature measurements can be submitted via a POST to https://apidev.globe.gov/submissions. The data posted shall be an air temperature object of the form:

    Property Required Description
    latitude Optional The latitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    longitude Optional The longitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    elevation Optional The elevation, in meters, where you measurement was taken. Optional with all accessCode types.
    measuredAt Required The UTC time of your measurement in ISO 8601 format.
    protocol Required The protocol name or id of the measurement being submitted. For more information about protocol names and ids, see the Protocols section above.
    currentTempC Required The temperature of your measurement in degrees Celsius.

    Upon successful creation, the API server will return an HTTP status of 201 and will return a copy of the created object. The return object will include an id property. This is known as the submission id and is used for subsequent calls to modify, retrieve, or delete that object.

    Example Update to an Air Temp Submission via PUT (non-mobile, consistent device):

    curl --request PUT \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '{
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 114,
        "currentTempC": 32.0
      }'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "PUT",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false,
      "data": {
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 114,
        "currentTempC": 32.0
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = {
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 114,
        "currentTempC": 32.0
    }
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("PUT", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Updating Air Temperature Measurements (PUT)

    Air temperature measurements can be updated via a PUT to https://apidev.globe.gov/submissions. The data submitted shall be an air temperature object of the form:

    Property Required Description
    id Required The submission id of the air temperature submission you wish to change. This is provided via the id property after a successful submission to the API Server.
    latitude Optional The latitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    longitude Optional The longitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    elevation Optional The elevation, in meters, where you measurement was taken. Optional with all accessCode types.
    measuredAt Required The UTC time of your measurement in ISO 8601 format.
    protocol Required The protocol name or id of the measurement being submitted. For more information about protocol names and ids, see the Protocols section above.
    currentTempC Required The temperature of your measurement in degrees Celsius.

    Upon successful update, the API server will return an HTTP status of 200 and will return a copy of the updated object.

    Example Retrieval of an Air Temp Submission via GET:

    curl --request GET \
      --url https://apidev.globe.gov/submissions/6194949 \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' 
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions/6194949",
      "method": "GET",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("GET", "/submissions/6194949", '', headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Retrieving Air Temperature Measurements (GET)

    Air temperature measurements can be retrieved via a GET to https://apidev.globe.gov/submissions/:id:

    Example Deletion of an Air Temp Submission via DELETE:

    curl --request DELETE \
      --url https://apidev.globe.gov/submissions/6194949 \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' 
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions/6194949",
      "method": "DELETE",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("DELETE", "/submissions/6194949", '', headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Removing Air Temperature Measurements (DELETE)

    Air temperature measurements can be deleted via a DELETE to https://apidev.globe.gov/submissions/:id:

    Barometric Pressure

    Example Barometric Pressure Submission via POST (non-mobile, consistent device):

    curl --request POST \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '{
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 5,
        "pressure": 1100
      }'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "POST",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache"
      },
      "processData": false,
      "data": {
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 5,
        "pressure": 1100
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = {
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 5,
        "pressure": 1100
    }
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache"
    }
    
    conn.request("POST", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Submitting Barometric Pressure Measurements (POST)

    Barometric pressure measurements can be submitted via a POST to https://apidev.globe.gov/submissions. The data posted shall be an barometric pressure object of the form:

    Property Required Description
    latitude Optional The latitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    longitude Optional The longitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    elevation Optional The elevation, in meters, where you measurement was taken. Optional with all accessCode types.
    measuredAt Required The UTC time of your measurement in ISO 8601 format.
    protocol Required The protocol name or id of the measurement being submitted. For more information about protocol names and ids, see the Protocols section above.
    pressure Required The presure as measured.
    barometricPressureMBar Optional TBD
    seaLevelPressureMBar Optional TBD
    pressureMethod Optional TBD
    level Optional The level that your barometric pressure measurment reflects, either 'station' or 'sealevel'. Defaults to 'station'.

    Upon successful creation, the API server will return an HTTP status of 201 and will return a copy of the created object. The return object will include an id property. This is known as the submission id and is used for subsequent calls to modify, retrieve, or delete that object.

    Example Update to a Barometric Pressure via PUT (non-mobile, consistent device):

    curl --request PUT \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '{
        "id": "6194952",
        "measuredAt": "2017-10-31T23:34:48.390Z",
        "protocol": 5,
        "pressure": 1000
      }'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "PUT",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false,
      "data": {
        "id": "6194952",
        "measuredAt": "2017-10-31T23:34:48.390Z",
        "protocol": 5,
        "pressure": 1000
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = {
        "id": "6194952",
        "measuredAt": "2017-10-31T23:34:48.390Z",
        "protocol": 5,
        "pressure": 1000
    }
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("PUT", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Updating Barometric Pressure Measurements (PUT)

    Barometric pressure measurements can be updated via a PUT to https://apidev.globe.gov/submissions. The data submitted shall be an barometric pressure object of the form:

    Property Required Description
    id Required The submission id of the air temperature submission you wish to change. This is provided via the id property after a successful submission to the API Server.
    latitude Optional The latitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    longitude Optional The longitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    elevation Optional The elevation, in meters, where you measurement was taken. Optional with all accessCode types.
    measuredAt Required The UTC time of your measurement in ISO 8601 format.
    protocol Required The protocol name or id of the measurement being submitted. For more information about protocol names and ids, see the Protocols section above.
    pressure Required The presure as measured.
    barometricPressureMBar Optional TBD
    seaLevelPressureMBar Optional TBD
    pressureMethod Optional TBD
    level Optional The level that your barometric pressure measurment reflects, either 'station' or 'sealevel'. Defaults to 'station'.

    Upon successful update, the API server will return an HTTP status of 200 and will return a copy of the updated object.

    Example Retrieval of an Barometric Pressure Submission via GET:

    curl --request GET \
      --url https://apidev.globe.gov/submissions/6194952 \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' 
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions/6194952",
      "method": "GET",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("GET", "/submissions/6194952", '', headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Retrieving Barometric Pressure Measurements (GET)

    Barometric pressure measurements can be retrieved via a GET to https://apidev.globe.gov/submissions/:id:

    Example Deletion of an Barometric Pressure Submission via DELETE:

    curl --request DELETE \
      --url https://apidev.globe.gov/submissions/6194952 \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' 
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions/6194952",
      "method": "DELETE",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("DELETE", "/submissions/6194952", '', headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Removing Barometric Pressure Measurements (DELETE)

    Barometric pressure measurements can be deleted via a DELETE to https://apidev.globe.gov/submissions/:id:

    Relative Humidity

    Example Relative Humidity Submission via POST (non-mobile, consistent device):

    curl --request POST \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '{
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 6,
        "dryBulbTempC": 32,
        "relativeHumidityPercent": 60
      }'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "POST",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache"
      },
      "processData": false,
      "data": {
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 6,
        "dryBulbTempC": 32,
        "relativeHumidityPercent": 60
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = {
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 6,
        "dryBulbTempC": 32,
        "relativeHumidityPercent": 60
    }
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache"
    }
    
    conn.request("POST", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Submitting Relative Humidity Measurements (POST)

    Relative humidity measurements can be submitted via a POST to https://apidev.globe.gov/submissions. The data posted shall be a relative humidity object of the form:

    Property Required Description
    latitude Optional The latitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    longitude Optional The longitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    elevation Optional The elevation, in meters, where you measurement was taken. Optional with all accessCode types.
    measuredAt Required The UTC time of your measurement in ISO 8601 format.
    protocol Required The protocol name or id of the measurement being submitted. For more information about protocol names and ids, see the Protocols section above.
    dryBulbTempC Optional The dry bulb temperature.
    wetBulbTempC Optional The wet bulb temperature if the method is 'sling psychrometer'.
    relativeHumidityPercent Optional The relative humidtiy is method is 'digital hygrometer'.
    humidityMethod Optional The method of determining the humidity, either 'digital hygrometer' or 'sling psychrometer'. If not provided, the API Server will determine this value based on the other values provided.
    ambientAirTempC Optional TBD

    Upon successful creation, the API server will return an HTTP status of 201 and will return a copy of the created object. The return object will include an id property. This is known as the submission id and is used for subsequent calls to modify, retrieve, or delete that object.

    Example Update to an Relative Humidity Submission via PUT (non-mobile, consistent device):

    curl --request PUT \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '{
        "id": 6194953,
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 6,
        "dryBulbTempC": 33,
        "relativeHumidityPercent": 65
      }'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "PUT",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false,
      "data": {
        "id": 6194953,
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 6,
        "dryBulbTempC": 33,
        "relativeHumidityPercent": 65
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = {
        "id": 6194953,
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 6,
        "dryBulbTempC": 33,
        "relativeHumidityPercent": 65
    }
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("PUT", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Updating Relative Humidity Measurements (PUT)

    Relative humidity measurements can be updated via a PUT to https://apidev.globe.gov/submissions. The data submitted shall be a relative humidity object of the form:

    Property Required Description
    id Required The submission id of the air temperature submission you wish to change. This is provided via the id property after a successful submission to the API Server.
    latitude Optional The latitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    longitude Optional The longitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    elevation Optional The elevation, in meters, where you measurement was taken. Optional with all accessCode types.
    measuredAt Required The UTC time of your measurement in ISO 8601 format.
    protocol Required The protocol name or id of the measurement being submitted. For more information about protocol names and ids, see the Protocols section above.
    dryBulbTempC Optional The dry bulb temperature.
    wetBulbTempC Optional The wet bulb temperature if the method is 'sling psychrometer'.
    relativeHumidityPercent Optional The relative humidtiy is method is 'digital hygrometer'.
    humidityMethod Optional The method of determining the humidity, either 'digital hygrometer' or 'sling psychrometer'. If not provided, the API Server will determine this value based on the other values provided.
    ambientAirTempC Optional TBD

    Upon successful update, the API server will return an HTTP status of 200 and will return a copy of the updated object.

    Example Retrieval of a Relative Humidity Submission via GET:

    curl --request GET \
      --url https://apidev.globe.gov/submissions/6194953 \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' 
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions/6194953",
      "method": "GET",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("GET", "/submissions/6194953", '', headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Retrieving Relative Humidity Measurements (GET)

    Relative humidity measurements can be retrieved via a GET to https://apidev.globe.gov/submissions/:id:

    Example Deletion of a Relative Humidity Submission via DELETE:

    curl --request DELETE \
      --url https://apidev.globe.gov/submissions/6194953 \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' 
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions/6194953",
      "method": "DELETE",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("DELETE", "/submissions/6194953", '', headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Removing Relative Humidity Measurements (DELETE)

    Relative humidity measurements can be deleted via a DELETE to https://apidev.globe.gov/submissions/:id:

    Current Rainfall

    Example Current Rainfall Submission via POST (non-mobile, consistent device):

    curl --request POST \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '{
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 60,
        "accumulationMM": 44
      }'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "POST",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache"
      },
      "processData": false,
      "data": {
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 60,
        "accumulationMM": 44
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = {
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 60,
        "accumulationMM": 44
    }
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache"
    }
    
    conn.request("POST", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Submitting Current Rainfall Measurements (POST)

    Current rainfall measurements can be submitted via a POST to https://apidev.globe.gov/submissions. The data posted shall be a current rainfall object of the form:

    Property Required Description
    latitude Optional The latitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    longitude Optional The longitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    elevation Optional The elevation, in meters, where you measurement was taken. Optional with all accessCode types.
    measuredAt Required The UTC time of your measurement in ISO 8601 format.
    protocol Required The protocol name or id of the measurement being submitted. For more information about protocol names and ids, see the Protocols section above.
    accumulationMM Required The accumulated rainfall in milimeters.
    accumulationRateMMH Optional The accumulated rainfall rate in milimeters per hour.

    Upon successful creation, the API server will return an HTTP status of 201 and will return a copy of the created object. The return object will include an id property. This is known as the submission id and is used for subsequent calls to modify, retrieve, or delete that object.

    Example Update to an Current Rainfall Submission via PUT (non-mobile, consistent device):

    curl --request PUT \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '{
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 60,
        "accumulationMM": 45
      }'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "PUT",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false,
      "data": {
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 60,
        "accumulationMM": 45
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = {
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 60,
        "accumulationMM": 45
    }
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("PUT", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Updating Current Rainfall Measurements (PUT)

    Current rainfall measurements can be updated via a PUT to https://apidev.globe.gov/submissions. The data submitted shall be a current rainfall object of the form:

    Property Required Description
    id Required The submission id of the air temperature submission you wish to change. This is provided via the id property after a successful submission to the API Server.
    latitude Optional The latitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    longitude Optional The longitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    elevation Optional The elevation, in meters, where you measurement was taken. Optional with all accessCode types.
    measuredAt Required The UTC time of your measurement in ISO 8601 format.
    protocol Required The protocol name or id of the measurement being submitted. For more information about protocol names and ids, see the Protocols section above.
    accumulationMM Required The accumulated rainfall in milimeters.
    accumulationRateMMH Optional The accumulated rainfall rate in milimeters per hour.

    Upon successful update, the API server will return an HTTP status of 200 and will return a copy of the updated object.

    Example Retrieval of an Current Rainfall Submission via GET:

    curl --request GET \
      --url https://apidev.globe.gov/submissions/6194949 \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' 
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions/6194949",
      "method": "GET",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("GET", "/submissions/6194949", '', headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Retrieving Current Rainfall Measurements (GET)

    Current rainfall measurements can be retrieved via a GET to https://apidev.globe.gov/submissions/:id:

    Example Deletion of an Current Rainfall Submission via DELETE:

    curl --request DELETE \
      --url https://apidev.globe.gov/submissions/6194949 \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' 
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions/6194949",
      "method": "DELETE",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("DELETE", "/submissions/6194949", '', headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Removing Current Rainfall Measurements (DELETE)

    Current rainfall measurements can be deleted via a DELETE to https://apidev.globe.gov/submissions/:id:

    Wind

    Example Wind Submission via POST (non-mobile, consistent device):

    curl --request POST \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '{
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 61,
        "speedMPS": 3.8,
        "gustMPS": 20.5,
        "direction": 351
      }'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "POST",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache"
      },
      "processData": false,
      "data": {
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 61,
        "speedMPS": 3.8,
        "gustMPS": 20.5,
        "direction": 351
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = {
        "measuredAt": "2017-10-31T21:34:48.390Z",
        "protocol": 61,
        "speedMPS": 3.8,
        "gustMPS": 20.5,
        "direction": 351
        "pressure": 1100
    }
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache"
    }
    
    conn.request("POST", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Submitting Wind Measurements (POST)

    Wind measurements can be submitted via a POST to https://apidev.globe.gov/submissions. The data posted shall be an wind object of the form:

    Property Required Description
    latitude Optional The latitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    longitude Optional The longitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    elevation Optional The elevation, in meters, where you measurement was taken. Optional with all accessCode types.
    measuredAt Required The UTC time of your measurement in ISO 8601 format.
    protocol Required The protocol name or id of the measurement being submitted. For more information about protocol names and ids, see the Protocols section above.
    speedMPS Optional The wind speed in meters per second.
    speedFlag Optional If speedMPS is unavailable, speedFlag should be set to 'missing'.
    gustMPS Optional The gust speed in meters per second.
    direction Optional The direction, in degrees, of the wind as measured.
    directionFlag Optional If direction is unavailble, directionFlag should be set to 'missing'.
    directionPrecision Optional TBD
    windDirectionMethod Optional The method of determining the wind direction, either 'automated' or 'GLOBE instrument'. Default is 'automated'.

    Upon successful creation, the API server will return an HTTP status of 201 and will return a copy of the created object. The return object will include an id property. This is known as the submission id and is used for subsequent calls to modify, retrieve, or delete that object.

    Example Update to a Wind Submission via PUT (non-mobile, consistent device):

    curl --request PUT \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '{
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 61,
        "speedMPS": 4.8,
        "gustMPS": 21.5,
        "direction": 251
      }'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "PUT",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false,
      "data": {
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 61,
        "speedMPS": 4.8,
        "gustMPS": 21.5,
        "direction": 251
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = {
        "measuredAt": "2017-10-20T18:44:32.746Z",
        "protocol": 61,
        "speedMPS": 4.8,
        "gustMPS": 21.5,
        "direction": 251
    }
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("PUT", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Updating Wind Measurements (PUT)

    Wind measurements can be updated via a PUT to https://apidev.globe.gov/submissions. The data submitted shall be an wind object of the form:

    Property Required Description
    id Required The submission id of the air temperature submission you wish to change. This is provided via the id property after a successful submission to the API Server.
    latitude Optional The latitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    longitude Optional The longitude where your measurement was taken. Optional as long as the accessCode is a Stationary Device Access Code. (TBD... OR if a siteID is provided.)
    elevation Optional The elevation, in meters, where you measurement was taken. Optional with all accessCode types.
    measuredAt Required The UTC time of your measurement in ISO 8601 format.
    protocol Required The protocol name or id of the measurement being submitted. For more information about protocol names and ids, see the Protocols section above.
    speedMPS Optional The wind speed in meters per second.
    speedFlag Optional If speedMPS is unavailable, speedFlag should be set to 'missing'.
    gustMPS Optional The gust speed in meters per second.
    direction Optional The direction, in degrees, of the wind as measured.
    directionFlag Optional If direction is unavailble, directionFlag should be set to 'missing'.
    directionPrecision Optional TBD
    windDirectionMethod Optional The method of determining the wind direction, either 'automated' or 'GLOBE instrument'. Default is 'automated'.

    Upon successful update, the API server will return an HTTP status of 200 and will return a copy of the updated object.

    Example Retrieval of a Wind Submission via GET:

    curl --request GET \
      --url https://apidev.globe.gov/submissions/6194949 \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' 
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions/6194949",
      "method": "GET",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("GET", "/submissions/6194949", '', headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Retrieving Wind Measurements (GET)

    Wind measurements can be retrieved via a GET to https://apidev.globe.gov/submissions/:id:

    Example Deletion of a Wind Submission via DELETE:

    curl --request DELETE \
      --url https://apidev.globe.gov/submissions/6194949 \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' 
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions/6194949",
      "method": "DELETE",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache",
      },
      "processData": false
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache",
    }
    
    conn.request("DELETE", "/submissions/6194949", '', headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Removing Wind Measurements (DELETE)

    Wind measurements can be deleted via a DELETE to https://apidev.globe.gov/submissions/:id:

    Bulk Submissions

    Example Submission of Air Temperature, Barometric Pressure, and Current Rainfall in one submission via POST (non-mobile, consistent device):

    curl --request POST \
      --url https://apidev.globe.gov/submissions \
      --header 'cache-control: no-cache' \
      --header 'content-type: application/json' \
      --header 'x-globe-accesscode: DEV123456' \
      --header 'x-globe-developerkey: 72ad021da4e03e560bbae644ae6180e9' \
      --data '[{
            "measuredAt": "2017-11-01T21:09:53.147Z",
            "protocol": 114,
            "currentTempC": 31.0
        },
        {
            "measuredAt": "2017-11-01T21:09:53.147Z",
            "protocol": 5,
            "pressure": 1100
        },
        {
            "measuredAt": "2017-11-01T21:09:53.147Z",
            "protocol": 60,
            "accumulationMM": 44
        }]'
    
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://apidev.globe.gov/submissions",
      "method": "POST",
      "headers": {
        "content-type": "application/json",
        "x-globe-developerkey": "72ad021da4e03e560bbae644ae6180e9",
        "x-globe-accesscode": "DEV123456",
        "cache-control": "no-cache"
      },
      "processData": false,
      "data": [{
            "measuredAt": "2017-11-01T21:09:53.147Z",
            "protocol": 114,
            "currentTempC": 31.0
        },
        {
            "measuredAt": "2017-11-01T21:09:53.147Z",
            "protocol": 5,
            "pressure": 1100
        },
        {
            "measuredAt": "2017-11-01T21:09:53.147Z",
            "protocol": 60,
            "accumulationMM": 44
        }]
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    import http.client
    import json
    
    conn = http.client.HTTPSConnection("apidev.globe.gov")
    
    payload = [{
            "measuredAt": "2017-11-01T21:09:53.147Z",
            "protocol": 114,
            "currentTempC": 31.0
        },
        {
            "measuredAt": "2017-11-01T21:09:53.147Z",
            "protocol": 5,
            "pressure": 1100
        },
        {
            "measuredAt": "2017-11-01T21:09:53.147Z",
            "protocol": 60,
            "accumulationMM": 44
        }
    ]
    
    headers = {
        'content-type': "application/json",
        'x-globe-developerkey': "72ad021da4e03e560bbae644ae6180e9",
        'x-globe-accesscode': "DEV123456",
        'cache-control': "no-cache"
    }
    
    conn.request("POST", "/submissions", json.dumps(payload), headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Submitting Multiple Measurements at Once (POST)

    The GLOBE API allows developers to submit multiple measurements at once. These measurements may be of the same protocol, or mixed. Currently, only new measurements via POST is supported. To submit multiple measurements at once, simply provide an array of submission objects formatted as needed for each protocol. The server will respond with an array of resulting submission objects or errors as appropriate.