Skip to content

Change Log

Hongsuda edited this page Jul 30, 2015 · 17 revisions
* 2.17 * 2.16 * 2.15 * 2.14 * 2.13 * 2.12 * 2.11 * 2.10 * 2.9
  • Request
    • Set default maximum file size to 1GB.
  • Prompts
    • A new "file" prompt type is added. It can be used to include file with the following mime-type: image, audio, video, application, and text.
    • Support maxFileSize property for image, audio, video and file prompt types. If specified, the server will disallow any attachment that is larger than the specified value.
  • media/read
    • added media/read api that can be used to retrieve any file attachments to the survey response. Both GET and POST are supported.
  • document/read
    • Improved the api performance. The new implementation reduces the number of database calls.
    • Added start_date and end_date support to the document/read api
  • user/search
    • Improved the api performance. The new implementation reduces the number of database calls.
  • campaign/read
    • Added a list of class to the short version.
  • DB changes
    • Added creation_timestamp to user
    • Add last_updated_timestamps to user_class, user_campaign_role, etc.
  • Configuration file
    • The server now allows for a configuration file to exist at /etc/ohmage.conf.
    • The format is based off of the internal, default configuration file at web/WEB-INF/config/default.properties
  • Removed the restriction that observer-stream data must have a timestamp in the past.
  • Added an audio prompt type.
  • Created a solution for allowing third-party applications to add a shim layer to make them OmH-compliant through ohmage and added a default implementation for RunKeeper.
  • Number prompts now allow decimal numbers for limits and their responses.
  • Updated the build to use Java 7.
  • Updated the connection pooler to Tomcat's database connection pooler. The libraries are included to help mitigate other servlet container issues.
  • Added a campaign masking feature to hide specific surveys and/or prompts from a user.
  • Added a class creation privilege.
  • Added a user setup API.
  • Documents can now be created with an application/x-www-form-urlencoded POST instead of only multipart/form-data POST.
  • Allow the campaign URN to be a parameter instead of part of the XML in campaign creation.
  • Fixed character encoding issues.
  • Created a system to allow invalid observer-stream data to be stored and returned, pseudo-anonymously, to the observer's creator to facilitate debugging of observers, streams, and their data generating applications.
  • Connected the OmH write API to survey_response/read.
  • Allowed basic conditions for all prompt types.
  • Photo prompt's 'res' property is now called 'maxDimension'.
  • Added the default observers (Mobility, LogProbe, and Analytics) to the DB init and update scripts.
  • Added campaign masks.
  • Added configurable logging via the Java args on application startup.
  • Exporting responses via CSV will now return the file named the same as the campaign's name.
  • Added XML exporting of observer definitions.
  • Added the request ID to the audits.
  • Added a limit to mobility/aggregate/read that will limit the results to only 10 days worth of data.
  • Modified the way images are stored.
    • The original image is saved as-is, not as a PNG.
    • The other sizes are saved as JPEGs.
    • Add a new size of image, icon.
      • Constantly sized (128 x 128 pixel).
      • Resized to have its smallest dimension be this size and the remaining part of its largest dimension is cropped off.
  • WhoAmI API implemented. Returns the username of the user given an auth_token.
  • The fully-qualified domain name (FQDN) should now reference exactly that, the domain name, without any protocol or path information, e.g. play.ohmage.org not https://play.ohmage.org/.
  • The authentication token and its use are being reworked.
    • For this release, the only change is that it is now accessible to server-side scripts. In a future release, the auth_token will be required as a parameter for all requests that require authentication and the token will be somewhat ignored.
    • The reasoning behind this is to prevent CSRF attacks. Because the authentication token must still exist as a cookie in order for client-side scripts to read it, it will still be sent with each request along with the corresponding parameter. The server will then check to ensure that these values match.
  • In conjunction with the change to the authentication token, the /user/auth_token API will now take another, optional parameter, 'redirect'. This value must be a URI; if given and authentication is successful, a redirect will be sent to the user to the given URI. This is used as opposed to some sort of redirect URL because it works with our legacy system; in a future release, this may, instead, return a redirect URL to allow the login page to perform some other actions before redirecting the user.
  • Implemented the alpha Open mHealth specification.
    • Works for campaigns and observers.
  • Added the 'chronological' parameter to stream/read.
  • Updated the password requirements to make them more lenient.
  • aw.log renamed to ohmage.log
  • /opt/aw renamed to /opt/ohmage
  • Began the alpha version of observers.
    • Uses Concordia.
    • Mobility converted to an observer and Mobility APIs are now backed by the observers.
    • Allows a user to query data about another user.
  • Added the ability to search about specific prompts instead of just surveys.
  • Updated survey_response/upload to allow a privacy state to be included.
  • A new API, mobility/read/csv, now returns the Mobility information as a CSV file.
  • mobility/read has deprecated "with_sensor_data" in favor of a new columns parameter.
  • user/read has been optimized.
  • survey_response/read has a new parameter.
  • survey_response/upload now accepts a new parameter called "images" to allow users to upload their images BASE64-encoded so that they don't have to create a multipart/form-post request.
  • Admins may now see all information for all objects.
  • Self-registration has been added along with a corresponding flag indicating whether or not it is enabled.
  • Added CORS support for non-login calls.
  • Added annotation/update and annotation/delete API calls.
  • EasyPost is now part of the build at EasyPost.html.
  • mobility/dates/read will now return all of the dates on which a user has Mobility data.
  • Paging has been implemented as two parameters, one for the number of records to skip and another for the number of records in this page. There are no limits on the upper bound to preserve backwards compatibility.
  • The authentication token timeout is now part of config/read.
  • A flag regarding whether or not Mobility is part of the system has been added to config/read.
  • The maximum allowed document size is now returned by config/read.
  • mobility/read will now return the sensor data via a new parameter "with_sensor_data".
  • Many performance improvements were made mainly within survey_respons/read.
  • Mobility points must now contain an "id" key in their root JSONObject whose value is a valid UUID.
  • The ERROR mode has been added. When the point has this mode, data may be missing or invalid. The server will still attempt to decipher as much as possible and store it.
  • When uploading invalid points, that is points that couldn't be deciphered despite their mode, they will be logged on the system. Unless the entire JSONArray cannot be decoded into a JSONArray, meaning the whole data upload is invalid JSON, you will get a success message. With the success message, you will receive a new key, "accepted_ids", which will be a JSONArray of the UUIDs that were accepted. This is different than what we discussed where the server would only return the rejected values, but I felt was necessary for one important reason. What if the "id" field is the problem?
  • The timestamp in the survey and mobility upload APIs (not the epoch milliseconds) will now be ignored in favor of the epoch milliseconds and timezone.
  • survey/upload no longer accepts keys for the response value for custom choices nor does it expect a dictionary. Instead, the raw values should be uploaded as a single string value for single_choice_custom prompts and as a JSONArray of raw values for multi_choice_custom prompts.
  • Every survey response should have a UUID in its JSONObject under the key "survey_key". This is the value that will be used in all other APIs to reference a survey response.
  • Surveys' launch context should now contain a "launch_timezone" in conjunction with the "launch_time" which is the timezone's ID when the survey was launched.
  • survey_response/read will now return the UUID value instead of the DB ID when the "return_id" parameter is true.
  • survey_response/update now expects the survey response's UUID instead of the DB ID. This can be retrieved from the survey_response/read call as it was done before.
  • survey_response/delete now expects the survey response's UUID instead of the DB ID. This can be retrieved from the survey_response/read call as it was done before.