Title: Interface to 'OpenBioMaps' Data and Services
Version: 2.0
Description: Provides access to selected functions and data available through any 'OpenBioMaps' https://openbiomaps.org server instance. 'OpenBioMaps' is an open-source biodiversity data management platform designed for conservation professionals and researchers. User authentication and access control are handled through 'OpenBioMaps' login credentials.
Depends: R (≥ 3.1.0)
License: GPL-3
Imports: httr, rjson, jsonlite, RPostgreSQL, DBI, utils
Encoding: UTF-8
RoxygenNote: 7.3.3
NeedsCompilation: no
Packaged: 2026-02-23 20:10:44 UTC; banm
Author: Miklós Bán [aut, cre]
Maintainer: Miklós Bán <banm@vocs.unideb.hu>
Repository: CRAN
Date/Publication: 2026-02-28 20:50:08 UTC

Internal function to create obm_class from data.frame

Description

This internal function creates an obm_class

Usage

as.obm_class(x)

Value

structured data


Retrieve a variable from the OBM session environment

Description

Retrieve a variable from the OBM session environment

Usage

get_obm(name, default = NULL)

Password reader helper function

Description

used in obm_auth() Not intended for direct user use.

Usage

get_password()

Log in to an OpenBioMaps server

Description

This function allows you to connect to and OBM server.

Usage

obm_auth(username = "", password = "", verbose = FALSE, paranoid = TRUE)

Arguments

username

Your OBM username (email)

password

Your password

verbose

print verbose feedback messages - default is FALSE

paranoid

hide password while typing (on Linux) - default is TRUE

Value

true if successful and false if not

Examples


# default interactive authentication
obm_auth()

# authentication with username and password
obm_auth('foo@google.com','abc123')


Background Computation Function

Description

This experimental function allows to manage background computation on an OpenBioMaps server.

Usage

obm_computation(
  action = "",
  data_files = NULL,
  params = NULL,
  config_file = NULL
)

Arguments

action

post, get-results, get-status

data_files

list of files to sending

params

computation control params

config_file

is The computation_conf.yml file

Value

data frame or boolean

Examples


# Manage computational packs
results <- obm_computation(action='post',
                           data_files='examples/scripts/bombina.R',
                           params=list(package = 'my_project'),
                           config_file='examples/computation_conf.yml')


Connect to a server with a shared link

Description

This function allows to connect to an OBM server with a shared link It using client_credentials authentication, so it is returning an access_token Return an oauth token

Usage

obm_connect(link = "", verbose = FALSE)

Arguments

link

an url link

verbose

print verbose feedback messages - default is FALSE

Value

boolean

Examples


# Interactive connect
obm_connect()
# Non interactive connect
token <- obm_connect('abcdefghikl123456789')


Get or set OpenBioMaps session environment

Description

Get or set OpenBioMaps session environment

Usage

obm_env()

Get Information/Data from an OpenBioMaps project

Description

This function get data or information from a project. Supported functions (APIv3): get_data: Get records from an SQL table or view, get_public_data: Get publicly available records from an SQL table or view, get_tables: Get list of SQL tables (or column list) and VIEWS in a project, get_form_list, get_form_data: Get upload form information For API v3 (api_version >= 3.0), 'get_data' uses GraphQL for powerful filtering and data selection. See the [GraphQL User Guide](https://gitlab.com/openbiomaps/api/obm-project-api/-/blob/main/GraphQLUserGuide.md) for more details on query possibilities.

Usage

obm_get(
  scope = "",
  control_condition = NULL,
  condition = NULL,
  table = get_obm("project")
)

Arguments

scope

A supported obm scope, e.g. get_data, get_form_list, get_tables

control_condition

Control condition. - In API v3: 'limit=LIMIT:OFFSET' format - In API v2: SQL-like, e.g., 'limit=10:1'

condition

list - A condition based on column in your table. - In API v3 (GraphQL): Can include operators like 'iequals', 'AND', 'OR', and special keys: - 'fields': vector of columns to return - ‘schema': database schema (defaults to ’public') - 'table': database table (defaults to project name) - In API v2: Mostly key-value pairs, e.g., list(species = 'Parus palustris')

table

optional table from project (fallback if not in condition list)

Details

The following code *illustrates* how you could use this function in practice, but it is **not meant to be run directly** (e.g., depends on external data).

# — API v3 GraphQL Examples —

# get rows where column 'species' is 'Parus palustris' (case-insensitive)
data <- obm_get('get_data', condition=list(species = list(iequals = 'Parus palustris')))

# get specific fields from a specific table and schema
data <- obm_get('get_data',
                condition=list(
                  schema = "public",
                  table = "dead_animals",
                  fields = c("obm_id", "faj", "hely"),
                  faj = list(iequals = "asio otus")
                ))

# get all fields from the default table
data <- obm_get('get_data', 
                condition=list(
                  fields = '*',
                  faj = list(iequals = "asio otus")
                ))

# get 100 rows with offset 0
data <- obm_get('get_data', 'limit=100:0')

# get list of available forms
data <- obm_get('get_form_list')

# get list of available tables in the project
obm_get('get_tables')

# get table details (columns) in v3
obm_get('get_tables', condition=list(schema="public", table="dead_animals"))

# — API v2 Examples —

results <- obm_get('get_form_list')

form <- obm_get('get_form_data',results[,]$published_form_id)

# get data rows from the main table from 39980 to 39988
data <- obm_get('get_data',condition=list(obm_id = '39980:39988'))

#get rows from the main table where column 'species' is 'Parus palustris'
data <- obm_get('get_data',condition=list(species = 'Parus palustris'))

#get 100 rows only from filtered query
data <- obm_get('get_data','limit=100:0',condition=list(species = 'Parus palustris'))

#get all data from the default/main table
data <- obm_get('get_data','*')

#get data from a non-default table
data <- obm_get('get_data','*',table='additional_data')

Value

a data.frame, list or error message

Examples


data <- obm_get('get_data', condition=list(species = list(iequals = 'Parus palustris')))



obm_get_graphql helper function

Description

Helper to execute GraphQL query Not intended for direct user use.

Usage

obm_get_graphql(
  scope,
  control_condition,
  condition,
  token,
  url,
  table,
  retry = TRUE
)

obm_get_rest_v3 helper function

Description

Helper to execute REST API v3 queries (non-GraphQL) Not intended for direct user use.

Usage

obm_get_rest_v3(scope, control_condition, condition, token, url, table)

Initialise connection to an OpenBioMaps server

Description

This function is initiating an OBM connection.

Usage

obm_init(
  project = "",
  url = "openbiomaps.org",
  scope = c(),
  verbose = FALSE,
  api_version = 3
)

Arguments

project

Which project you would like to connect? It has a short name.

url

project server's web url DEFAULT is https://openbiomaps.org

scope

vector of required scopes. DEFAULT is ok usually

verbose

print verbose feedback messages - default is FALSE

api_version

API version. 3.0 or higher enables the new REST and GraphQL API.

Value

boolean

Examples


# connect with API v3 to the dead_animals project on the default openbiomaps.org server
obm_init(project='dead_animals')
# connect to a database on the default server (openbiomaps.org) with API v2.5
obm_init(project='dead_animals', api_version=2.5)
# connect on the local server instance to the butterfly database project
obm_init(url='http://localhost/biomaps',project='butterflies')


obm_parse_control helper function

Description

Helper function to parse control string (e.g. "limit=100:0") Not intended for direct user use.

Usage

obm_parse_control(control_string)

obm_parse_filters helper function

Description

Helper to construct GraphQL filter from condition list Not intended for direct user use.

Usage

obm_parse_filters(condition)

Put data unsing obm forms

Description

This function allows put data into an OpenBioMaps server. For API v3 (api_version >= 3.0), 'put_data' is supported. Note: In API v3, 'put_data' currently supports single observation upload only.

Usage

obm_put(
  scope = NULL,
  form_header = NULL,
  data_file = NULL,
  media_file = NULL,
  form_id = "",
  form_data = "",
  soft_error = "",
  data_table = NULL
)

Arguments

scope

currently put_data supported.

form_header

database column names vector, if missing default is the full list from the form

data_file

a csv file with header row (API v2)

media_file

a media file to attach

form_id

the form's id

form_data

JSON array or data.frame of data. In v3, only the first row of a data.frame is uploaded.

soft_error

JSON array of 'Yes' strings (or translations of it) to skip soft error messages (API v2)

data_table

a database table name

Details

The following code *illustrates* how you could use this function in practice, but it is **not meant to be run directly** (e.g., depends on external data).

# Using own list of columns
results <- obm_get('get_form_list')
form_id <- results$form_id[1] # e.g. 57

response <- obm_put('put_data',columns[1:3],form_id=form_id,data_file='examples/test_upload.csv')

# Using default columns list:
response <- obm_put(scope='put_data',form_id=57,csv_file='examples/test_upload.csv')

# JSON upload
data <- matrix(c(
                 c("Tringa totanus",'egyed',"AWBO",'10','POINT(47.1 21.3)'),
                 c("Tringa flavipes",'egyed',"BYWO",'2','POINT(47.3 21.4)')
               ),ncol=5,nrow=2,byrow=TRUE)
colnames(data)<-c("species","numerosity","location","quantity","geometry")

response <- obm_put(
               scope='put_data',
               form_id=57,
               form_data=as.data.frame(data),
               form_header=c('faj','szamossag','hely','egyedszam'))

# With attached files
data <- matrix(c(c("Tringa totanus",'egyed',"AWBO",'10','numbers.odt'),
                 c("Tringa flavipes",'egyed',"BYWO",'2','observation.jpg')
               ),ncol=5,nrow=2,byrow=TRUE)
colnames(data)<-c("species","numerosity","location","quantity",'Attach')

response <- obm_put(
               scope='put_data',
               form_id=57,
               form_data=as.data.frame(data),
               form_header=c('species','numerosity','location','quantity','obm_files_id'),
               media_file=c('examples/numbers.odt','examples/observation.jpg'))

Value

json or boolean

Examples


csv_path <- system.file("examples/test_upload.csv", package = "obm")
csv_data <- read.csv(csv_path)
columns <- names(csv_data)
response <- obm_put('put_data',columns[1:3],form_id=57,data_file='examples/test_upload.csv')



Put data helper function for API v3

Description

Internal function to handle API v3 puts Not intended for direct user use.

Usage

obm_put_v3(scope, form_id, form_data, media_file, token, url, verbose = FALSE)

Value

json results object or boolean


Refresh an expired OBM access token

Description

This function requests a new access token using the stored refresh token. It should normally be called internally by other OBM functions when the current token has expired.

Usage

obm_refresh_token(
  token = NULL,
  url = get_obm("token_url"),
  client_id = get_obm("client_id", "R"),
  verbose = FALSE
)

Arguments

token

Optional explicit refresh token (defaults to stored one)

url

OAuth2 token endpoint URL (from obm_init())

client_id

OAuth2 client identifier ("R" by default)

verbose

Print HTTP and token details

Value

Logical TRUE if token refreshed successfully, FALSE otherwise

Examples


obm_refresh_token(token='ABCD1234')


Repozitorium manager function

Description

This experimental function allows manage Dataverse repozitorium and datasets.

Usage

obm_repo(scope = NULL, data_table = NULL, params = NULL)

Arguments

scope

get or put

data_table

OBM project table

params

list which contains parameters for repozitorium

Details

The following code *illustrates* how you could use this function in practice, but it is **not meant to be run directly** (e.g., depends on external data).

# Set the default server/project-repo for each of the following operations
#   - default is 0
#   - get possible names from server_conf query above
obm_repo('set', params=list(REPO='ABC-REPO'))
obm_repo('set', params=list(REPO='ABC-REPO', PARENT='dataverse/parent'))

# Listing dataverse
results <- obm_repo('get', params=list(type='dataverse', contents=1))
results <- obm_repo('get', params=list(type='dataverse'))

# Getting content of the named dataverse
results <- obm_repo('get', params=list(id='MY-DATAVERSE'))

# Get JSON Representation of a Dataset
results <- obm_repo('get', params=list(type='datasets', 
                                       persistentUrl='https://doi.org/xxx/xxx/xxx'))
results <- obm_repo('get', params=list(type='datasets', id='XABC-1'))

# Get versions of dataset
results <- obm_repo('get',params=list(type='datasets', id=42, version=''))
results <- obm_repo('get',params=list(type='datasets', id=42, version=':draft'))

# Get files of dataset
results <- obm_repo('get',params=list(type='datasets', id=42, files='', version=''))

# Get a file
results<-obm_repo('get',params=list(type='datafile', id=83))
results<-obm_repo('get',params=list(type='datafile', id=83, version=':draft'))

# Create a dataverse
results <- obm_repo('put',params=list(type='dataverse'))

# Create a dateset
results <- obm_repo('put',params=list(type='datasets', dataverse='my_dataset'))

# Add file to dataset (referenced by id or persistentUrl)
results <- obm_repo('put',params=list(type='datafile', 
                                      file='examples/test_upload.csv',
                                      id='XABC-1' ))
results <- obm_repo('put',params=list(type='datafile', 
                                      file='examples/test_upload.csv', 
                                      persistentUrl='https://doi.org/xxx/xxx/xxx'))

# Add object as file to dataset (referenced by id or persistentUrl)
# - automatically convert data object to JSON
# - returning with the last file's state
init.df <- data.frame()
results <- obm_repo('put',params=list(type='datafile', 
                                      id='XABC-1', 
                    data=list(results=res.list,
                              init_params=init.df)))

# Delete file
results <- obm_repo('delete',params=list(type='datafile',
                                         id='XABC-1',
                                         PARENT_DATAVERSE='dataverse/parent'))

# Set settings
# obm_repo('set',params=list(type='dataset',id='XABC-1'))

Value

data frame or boolean

Examples


# Getting server conf
results <- obm_repo('get', params=list(server_conf=1))



Set Function

Description

Experimental function in APIv2! This function allows you to set rules for obm_get.

Usage

obm_set(scope = "", condition = "")

Arguments

scope

Which scope? e.g. set_join

condition

A text condition based on column in your table

Value

list, json or boolean

Examples


# automatically join tables
data <- obm_set('set_join',c('dead_animals','dead_animals_history'))


SQL Interface

Description

It is a simple SQL Query interface function

Usage

obm_sql_query(
  sqlcmd,
  username = "",
  password = "",
  paranoid = TRUE,
  port = 5432,
  database = "gisdata"
)

Arguments

sqlcmd

a valid SQL command

username

most probably automatically set by create_pg_user module

password

most probably automatically set by create_pg_user module

paranoid

password prompt type

port

postgres server port, default is 5432

database

remote database name, default is gisdata

Value

sql data object or boolean

Examples


obm_sql_query("SELECT DATE_PART('day', enddate::timestamp - startdate::timestamp) AS days 
               FROM nestboxes WHERE enddate IS NOT NULL AND startdate IS NOT NULL 
               ORDER BY days")


Random text generator helper function

Description

Not intended for direct user use.

Usage

randtext(n = 5000)

Value

text string


Assign a variable into the OBM session environment

Description

Assign a variable into the OBM session environment

Usage

set_obm(name, value)