- Add support for the OData API endpoints for Entities (#152)
- Bump minimum versions of dependencies
entity_changes
now returns a tibble instead of nested list.submission_export
gains a new parameterdeleted_fields
to export all known fields of a form, including fields that were deleted in the latest form version. (#129, #161)
- Support Entities and Entity Lists (Datasets) (#152)
- Add pre-commit hooks and precommit.ci integration
- Add devcontainer
This release migrates the ruODK
test suite to a new test server
ruodk.getodk.cloud
which was generously sponsored by GetODK.
This release makes ruODK
aware of the new ODK Central semantic version format:
Update your ODK Central version in .Renviron
or in the credential
helper of your choice to the new format ODKC_VERSION="2023.5.1"
(with your
current version). See the updated vignette "setup".
- Handle the new ODK Central semantic versioning (#150)
- Migrate to new test server (#149)
This release fixes a few compatibility issues and bumps dependencies to R (4.1) and imported/suggested packages. Upgrade carefully and revert to 1.3.12 if things go awry.
- Update to new
tidyselect
syntax: Using vectors of names to select makestidyselect
complain (WARN, soon ERROR). We wrap all programmatic selections of variable names indplyr::all_of()
where we expect a single variable to be selected, anddplyr::any_of()
where we select using fuzzy matching (e.g.dplyr::starts_with()
). (#146) - Make
ruODK::form_list()
robust againstreviewState
missing from outdated Central versions. (#145, HT @dpagendam and #143, HT @collinschwantes) There will be more such tripwires - please do submit a bug report if you find a discrepancy between Central API and ruODK's parsing.
- Update
project_list
,submission_list
and `` columns to reflect Central 1.5 API output. - Update
submission_list
columns to reflect Central 1.5 API output.
- Improve issue template for bug reports
- Upgrade test server to ODK Central 1.4.2
- Refresh packaged data (new Central brings new fields), update tests
- Improve GitHub Action for Docker build
odata_submission_get
supports parameterexpand
to expand all repeat repetitions.
split_geopoint
is now robust against all NULL columns.split_geotrace
andsplit_geoshape
are possibly affected.
- Packaged data has been re-created to represent the latest server outputs.
- New Suggest depencency
terra
(throughmapview
)
This release supports ODK Central 1.3.0 and represents an over-due version bump to reflect the supported ODK Central version. The test server is now updated to ODK Central 1.3.0, and all tests pass.
There are still some newer and as yet unsupported API endpoints in ODK Central, which serve administrative purposes of the front-end. Contributions are welcome, get started on these issues and the contributing guide. As ruODK focuses on data retrieval, these administrative endpoints are non-critical to ruODK's purpose.
- Packaged data has been re-created to represent the latest server outputs.
- All tests pass, GitHub Actions is as per usual brittle at the installation step.
We are shaping up to a release targetting the ODK Central 1.2 release. ODK Central is undergoing some bug fixes and patches, while ruODK's test server will be migrated to another instance. The latter is required to enable tests which create/update/delete entities in ODK Central.
- All DEPENDS and SUGGESTS bumped to latest available under R release.
- The minimum supported version is
rversions::r_oldrel()
: 4.0.5 (2021-03-31). - ruODK is developed under
rversions::r_release()
: 4.1.1 (2021-08-10).
- ODK Central returns Geoshapes as Multipolygon.
split_geoshape
adjusted forodkce_version
>= 1.2. (#131) readr::parse_datetime
stopped supporting timezone "Z". (#130)
- All data refreshed from test server running ODK Central 1.2.
- Update installation instructions with source install from rOpenSci R-Universe and troubleshooting (#128, thanks @yanokwa)
- Fix ODK Central v1.2 time out on NULL query parameters
skip
andtop
. ruODK now only supplies non-NULL query parameters and has an additional seat-belt to drop any query parameter that is an empty string. (#126, thanks @yanokwa, @mtyszler, @thaliehln)
submission_export
now terminates immediately if an incorrect passphrase is given. ODK Central can exceed memory limits ifsubmission_export
is run repeatedly with an incorrect passphrase. (#30, thanks @Thaliehln)
- Add
encryption_key_list
- Make
ru_msg_*
conditional toget_ru_verbose()
.
- Reference re-ordered into topics.
- Re-worded the example preamble on setup.
- Added metadata to pkgdown config.
- Enable Markdown docs. Embedded lifecycle badges should work. R CMD Check does not complain which is nice.
- Prepare to cover remaining API endpoints.
- Add
published_at
toform_list
andform_detail
, update examples, tests, test fixtures to show that draft forms can be detected by a NApublished_at
in ODK Central versions having form drafts, and by NAhash
andversion
in ODK Central versions before form drafts.
This is a "everything so far works" release. There are a few ODK Central API endpoints waiting to be implemented still.
- Default ODK Central version bumped to current release (1.1)
- PDF manual updated
- Welcoming new contributors Marcelo (@mtyszler) and Hélène (@Thaliehln)
- Updated Zenodo archive at https://zenodo.org/record/4609910
- Updated Docker image at https://hub.docker.com/u/dbcawa/ruodk (RStudio server with ruODK)
submission_export
now supports ODK Central v1.1 features to omit media attachments (media = FALSE
), and to omit repeat data (include_repeats=FALSE
). Callingsubmission_export
on an older version of ODK Central (as determined throughget_default_odkc_version()
) with these new parameters will emit a (verbose only) "noop" message and not act further on them.
- Bugfix to
submission_export
on encrypted forms with multiple encryption keys. (Thanks @Thaliehln #117 #30)
- Add support for passphrase to the
ru_setup
family (#116)
odata_submission_get()
bugfix:handle_ru_attachments()
now finds and downloads media attachments from both main submissions and nested form groups. (#114)odata_submission_get()
bugfix: missing media attachments (due to upload error from ODK Collect to ODK Central) are tolerated without interrupting the batch download. A diagnostic warning message will be emitted for each failed download. (#114)
- Support encryption (#30 #110, @Thaliehln).
- Note that
ruODK
only supports one passphrase. When switching between multiple encrypted forms, it would make sense to store the different passphrases in separate environment variables, and refer to these environment variables explicitly in function calls. - The updated ruODK::submission_export should now export data from both encrypted projects and non-encrypted projects. The HTTP method is changed from GET to POST and encryption key ID / passphrase are provided via POST body using a JSON format. Encrypted forms can be extracted and inspected like non-encrypted forms:
- Note that
se <- submission_export()
t <- tempdir()
f <- unzip(se, exdir = t)
fs::dir_ls(t)
fid <- get_test_fid()
sub <- fs::path(t, glue::glue("Locations.csv")) %>% readr::read_csv()
sub %>% knitr::kable(.)
form_schema_ext
retrieves choice lists when choice filters are present (#105, @mtyszler).
form_schema_ext
performance enhancement (#106, thanks @mtyszler).
- Tests use vcr to cache server response (#104).
Delete the local cache
tests/fixtures
to re-generate the vcr cache, or enjoy much faster running tests using cached server response.
This is a point release to create a new RStudio Server image.
- Form schema now also works on draft forms (#103, HT @dmenne).
- Automated code reviews by <codefactor.io>.
- GitHub Actions welcomes Ubuntu 20.04 LTS and MacOS X back to the passing environments.
form_schema_ext()
Shows the extended schema of one form, including (multi-language) labels and choice lists. (#77, thanks @mtyszler for the PR)- Development continues in the default branch
main
.
form_list
now handles draft forms withNA
hash and version (#86, thanks @dmenne for the PR).- Migrate package tests to a new ODK Central instance and update contributing guidelines with new settings. (#14)
- Drop Import of
tidyselect
in favour of usingdplyr::all_of()
. - All calls to
httr::RETRY(times=)
are configurable via settingretries
. (#94)
- Mapview popups in vignette "Spatial" are back after an upstream bugfix is in progress (r-spatial/mapview#312).
ODK Central versions 0.7 to 0.9 export geotraces and geoshapes via OData with
a trailing empty coordinate. ruODK
removes any trailing empty coordinates from
both GeoJSON and WKT formats. (#88, HT @TimonWeitkamp for the bug report)
A new vignette "Spatial" demonstrates how to parse spatial data into native
formats, such as sf
, and gives pointers on what to do next with them.
This is the release on passing rOpenSci peer review.
Thanks to the rOpenSci editors and reviewers @maelle, @karissawhiting and @jmt2080ad, as well as to @OdiljonQurbon, @dickoa, @arestrom and @dmenne.
A DOI was minted at https://doi.org/10.5281/zenodo.3953159.
This version addresses ROpenSci reviewer comments from @karissawhiting and @jmt2080ad, contributions from @dickoa, as well as ideas and suggestions from @OdiljonQurbon, @arestrom and @dmenne.
This version supports ODK Central 0.9 while providing backwards compatibility for ODK Central <= 0.7.
- New environment variables
ODKC_(TEST_)VERSION
allowruODK
to toggle between deprecated/removed and new/added API endpoints, e.g.form_schema
. (#61) - Split and rename WKT POINT (ODK geopoint) fields with
odata_submission_get(wkt=T)
. (#31 #7 HT @OdiljonQurbon) submission_get
now accepts a vector of (all or selected) submission instance IDs (iid
), similar toodata_submission_get()
. (#38)- All
httr::GET()
are now replaced withhttr::RETRY("GET", ...)
(#48) - Refactor
odata_submission_parse()
intoodata_submission_rectangle()
,handle_ru_{geopoints, geotraces, geoshapes, datetimes, attachments}
. (#54 #69) - Maintain backwards compatibility to ODK Central v7 for changed spatial output for geotrace and geoshape (#70)
- Drop
. <- NULL
in favour ofutils::globalVariables(".")
. (#35) - Print settings now hides passwords but instructs how to show them. (#37)
ru_setup()
now prints settings. (#37)parse_datetime()
renamed toru_datetime()
to avoid naming conflict withreadr::parse_datetime()
. (#43)- Add a global default for verbosity. (#51 HT @arestrom)
- Add a global default for time zone. (#53 HT @arestrom)
- Use
httr::modify_url
to build URLs rather thanglue::glue
(#66) - Silenced spurious messages from
tibble::as_tibble()
which is called fromodata_submission_rectangle()
. Useru_verbose
to toggle useful diagnostic messages. (#79 HT @dmenne) - Renamed
master
branch tomain
, updated docs (HT @arestrom #81)
- Moved
rlist
to Imports, as it is now used inodata_submission_get()
. (#6) - Dropped
rlist
dependency in favour oftidyr
/dplyr
. (#85) - Use development versions of
rlang
,purrr
andlifecycle
to get their latest bug fixes.
- Use canned data in all vignettes, so they can build without authentication. (#33)
- Update canned data (and
make-data.R
) to work with CI-built pkgdown site. (#52) - Remove nested list
form_schema_raw
which is only generated from legacy ODK Central (< 0.8) (#61) - Added ODK Central < v0.7 form schema for tests.
- Updated workshop companion package urODK.
- Rename vignettes to
odata-api
andrestful-api
. (#34) - Warn against using plain text credentials in vignette
setup
. (#34) - More documentation improvements at #34.
- Add screencast to the README. HT to asciicast! (#45)
- Improve logo - more turtles, but questionable photoshopping.
- Add examples where missing. (#32)
- Build pkgdown site via GH actions. (#52)
- Minor typographic changes: end every function title with a full stop.
- Broken links and other inconsistencies fixed after contributions from the ODK Forum, @dickoa, @arestrom, @dmenne. Thanks for the first community feedback! (#76 #74 #79 #80 #81)
- Added Dockerfile to build an RStudio Server image based on
rocker/geospatial
withruODK
and dependencies installed. - Build a separate Dockerfile for
urODK
to launch a hosted RStudio instance in Binderhub. (#83)
- The big one has landed:
odata_submission_get()
now defaults to parse submissions from nested lists into a tibble, parse dates and datetimes, download and link attachments. (#6)
- Use lifecycle badges on functions. Add lifecycle to dependencies, version bump
usethis
. (#29)
- Refactor list wrangling code to use
map_*(.default=NA)
, removing some internal helpers (thanks to @jennybc) - Use dummy imports to silence R CMD check NOTES as per googledrive's example (thanks to @jennybc)
- Drop unused internal helper functions
- Use three new test forms to make package smaller and tests faster. Use the main test form for example data, including data from two nested tables. Use the main test form in all vignettes and README. Use a small form without attachments for tests repeatedly exporting to ZIP. Use another small form with only one submission and two attachments for tests downloading attachments. The test credentials are unchanged (#23)
- tidyr 1.0.0 is out!
Move
{tidyr}
dependency from GitHub master to CRAN version (#27) - Add
{usethis}
to Suggests, it is used in the setup step
- Add David Henry's Pentaho Kettle tutorial to the software review in the README (#28)
- Add inaugural RMarkdown template "odata" (#26)
- Add binder launch button (one click start for #26)
- Simplifiy
ru_setup()
to use OData Service URL. - Change all functions to default to
get_default{pid,fid,url,un,pw}()
, partly moving project ID (pid) and form ID (fid) to kwargs. This changes all examples, tests, vignettes, READMEs. - Reduce installed package size by sharing attachment files. Add new parameter
separate=FALSE
toattachment_get
to prevent separating attachment files into subfolders named after their submissionuuid
(#22)
- Add a high level overview diagram to README and
inst/joss/paper.md
to illustrateruODK
's intended purpose in the ODK ecosystem (#19) - Added link to explain environment variables and R startup to vignette "setup". @maelle
- Add comparison of similar software to README (#25)
- ROpenSci submission review milestone, discussion.
- Updates to documentation (#13 #15 #17)
- Group function docs (#18)
- Update contribution guidelines and add account request issue template:
How to run
ruODK
tests and build the vignettes (#15 #20) - Add dedicated
ru_setup()
andru_settings()
. Pat down functions for missing credentials and yell loudly but clearly about httr errors. (#16) - Drop
@importFrom
to reduce duplication. All external functions are prefixed with their package name already. - Add convenience helpers
attachment_link()
andparse_datetime()
. - Use
janitor::clean_names()
on column names over home-grown helpers. - Since
submission_detail
is now metadata only, addsubmission_get
to download submission data.
- Version bump and lifecycle bump to indicate that
ruODK
is ready to be used against ODK Central 0.6.
- Version bump to match ODK Central's version.
- Updated to match ODK Central's API at 0.6 (RESTful and OData) (c.f.).
- Add commented out crosslinks to source code and related tests for convenience.
- Encryption endpoints (new in 0.6) are not yet supported.
- Audit logs supported, as they are a read-only export.
- Check name with
available::available("ruODK")
: - Name valid: ✔
- Available on CRAN: ✔
- Available on Bioconductor: ✔
- Available on GitHub: ✔
- Rude misinterpretations: none
- In summary: Package name seems to be OK. Well, ODK. OK, ruODK.
- Added metadata via
codemetar::write_codemeta("ruODK")
. - Cross-platform: Runs on GNU/Linux (TravisCI) and on Windows (AppVeyor)
- Function naming
follows
object_verb
. ruODK
uses verb singulars (e.g.submission_list
to list multiple submissions), while ODK Central's API URLs use verb plurals.ruODK
usessnake_case
.- Exception to
object_verb
: Functions operating on the OData endpoints are namedodata_object_verb
. Helper functions not related to API endpoints are namedverb_object
. - Code style done
by
styler::style_package()
, see section "Release" inREADME.md
. ruODK
has aREADME.Rmd
and has a website generated bypkgdown
.ruODK
has documentation generated byroxygen2
.- Test coverage 100%, but could use more edge cases.
- Tests use a live ODK Central instance, which is kept up to date by ODK.
This means that ruODK's test always run against the latest master of ODK Central.
ruODK
does not (but maybe should?) usewebmockr
andvcr
. - Spellchecks with
spelling::spell_check_package()
: added technical terms and function names toinst/WORDLIST
. - Added citation and section in
README
. - Added
inst/joss/paper.md
for submission to JOSS. - Added examples to function docs.
- Implement remaining missing functions (ticket).
- Use tidyverse issue template
- Follow
goodpractice
- Created vignette "Setup"
- Add AppVeyor
- Refactor storage path of attachments to not contain "uuid:" (for Windows compat)
- Started on REST API:
project_list
,project_detail
,form_list
,form_detail
. Naming scheme isobject_verb
. - For now, functions related to the OData endpoint
are named
verb_object
, maybe we should rename them toodata_object_verb
. - Refactor URLs - build from project and form IDs
- Cleaned up logo, thanks to @issa-tseng for suggestions
- Added a new form, Flora Quadrat 0.3 to inst/extdata.
- Added more test coverage.
- Added various
usethis
goodies, test stubs, badges.
- Recursively unnests raw data into wide format. Manual post-processing is still required to rename (anonymous in ODK and auto-named through R) coordinates, and to handle attachments.
- Parses metadata, submissions, and handles attachments (retaining already downloaded attachments).
- Includes example forms as both
.xml
and.odbbuild
ininst/extdata
. - Includes example data as retrieved from ODK Central.
- Includes vignette demonstrating tidying of retrieved data.
- Handles repeating groups.
Roadmap:
- Handle paginated submissions.
- Retain already downloaded submissions.