Rovas exposes a REST API so partners, plugins, and apps can create accounts, file work reports, read Merits, and plug into NeoFund products such as Civic.

Environment Base URL
Production https://rovas.app
Development https://dev.rovas.app

Service paths use the prefix /rovas. OAuth protocol paths use /oauth2.

Send Accept: application/json and, for POST/PUT bodies, Content-Type: application/json.

If you are planning an integration, contact us — we can provision partner access and review your use case.

Which API should I use?

Model How you authenticate Best for
Classic HTTP headers API-KEY and TOKEN Partner backends, website plugins, server-to-server jobs
OAuth 2 (Bearer) Authorization: Bearer <access_token> Mobile / SPA clients with browser login (e.g. Civic)

Do not mix both on one request. Classic endpoints expect API keys; Civic-oriented endpoints have API-key auth disabled and expect Bearer (or are public).


Classic API — how to use it

Credentials

  1. Sign in to Rovas and open My account → Rovas API.
  2. Generate credentials for the rovas_endpoint endpoint.
  3. On each authenticated call, send:
API-KEY: <your api key>
TOKEN: <your token>

Each key pair belongs to one Rovas user. Calls run as that user.

Charities and other partners that create Rovas accounts for donors or members need a technical account with the api client role (assigned by NeoFund/Rovas admins). That account’s API key is used only for account provisioning.

Preferred endpoint

POST /rovas/rovas_partner_user

Legacy equivalent: POST /rovas/rules/rules_create_user (same body and response).

Request body (required fields)

Field Description
user_name Display name
user_id Your external numeric user id
user_email Email (used to find an existing Rovas account)
user_country ISO 3166-1 alpha-2, uppercase (e.g. SK)
user_language Language code (e.g. sk, en)
server_url Your site base URL (e.g. https://partner.example/)

Optional: hybridauth_provider (defaults to Nabezky if empty), partner_client_id.

List allowed providers: GET /rovas/rovas_hybridauth_providers.json (usually public).

Success response

{
  "rovas_uid": 123,
  "api_key": "…",
  "token": "…"
}

Store the returned api_key / token and use them as API-KEY / TOKEN for later calls on behalf of that end user.

Example

curl -sS -X POST "https://rovas.app/rovas/rovas_partner_user" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "API-KEY: $PARTNER_API_KEY" \
  -H "TOKEN: $PARTNER_TOKEN" \
  -d '{
    "user_name": "Jane Partner User",
    "user_id": 12345,
    "user_email": "jane@example.com",
    "user_country": "SK",
    "user_language": "en",
    "server_url": "https://partner.example/",
    "hybridauth_provider": "Nabezky"
  }'

Typical errors: 400 validation, 401 bad credentials, 403 missing api client permission.

Classic endpoint reference

Request/response schemas for these calls are maintained in an OpenAPI file (available on request). Summary:

Accounts & balances

Method Path Auth Purpose
POST /rovas/rovas_partner_user API-KEY Create or link user (preferred)
POST /rovas/rules/rules_create_user API-KEY Create or link user (legacy)
GET /rovas/rovas_hybridauth_providers.json Public* HybridAuth providers
POST /rovas/rules/rules_fetch_user_data API-KEY Profile for key owner
POST /rovas/rules/rules_users_chrons API-KEY Chron balances
POST /rovas/rules/rules_user_s_merits API-KEY Merit balances
POST /rovas/rules/rules_check_enabled_language API-KEY Language enabled?

*When “Disable API keys authentication” is enabled for that resource.

Projects & work reports

Method Path Auth Purpose
POST /rovas/rules/rules_proxy_create_new_project API-KEY Create project
POST /rovas/rules/rules_proxy_delete_project API-KEY Delete project
POST /rovas/rules/rules_proxy_create_work_report API-KEY Create work report
POST /rovas/rules/rules_proxy_delete_work_report API-KEY Delete work report
POST /rovas/rules/rules_proxy_report_editability API-KEY Editable?
POST /rovas/rules/rules_proxy_work_report_verifiability API-KEY Verifiable by caller?
POST /rovas/rules/rules_proxy_report_verification_status API-KEY Verification status
POST /rovas/rules/rules_create_verification API-KEY Submit verification
POST /rovas/rules/rules_create_verification_with_acccess_token Public Verification via access token
POST /rovas/rules/rules_proxy_reward_work_report API-KEY Reward work report
GET /rovas/rovas_verifications.json API-KEY List verifications
PUT /rovas/node/{id} API-KEY Update owned node
DELETE /rovas/node/{id} API-KEY Delete owned node

Shares, purchases, quotes

Method Path Auth Purpose
POST /rovas/rules/rules_proxy_check_or_add_shareholder API-KEY Ensure user share
POST /rovas/rules/rules_proxy_check_or_add_project_shareholder API-KEY Ensure project share
POST /rovas/rules/rules_proxy_purchase_product API-KEY Process purchase
POST /rovas/rules/rules_proxy_create_aur API-KEY Asset usage fee record
POST /rovas/rules/rules_get_merits_for_projects API-KEY Merits for project IDs
POST /rovas/rules/rules_convert_euros_to_chrons API-KEY EUR → Chron quote
POST /rovas/rules/rules_convert_euros_to_chrons_reverse API-KEY Chron → EUR quote

Views

Method Path Purpose
GET /rovas/views/top_10_workers_in_a_category Top workers in a category
GET /rovas/views/project_merits_feed Top rewarders of a project
GET /rovas/views/projects_merits Top users for same-site projects

OAuth 2 / Bearer — how to use it

OAuth is used by NeoFund’s Civic app and by other clients we register. New products need their own OAuth client — do not reuse Civic’s client_id from a third-party app.

Protocol endpoints

Step URL
Authorize {base}/oauth2/authorize
Token {base}/oauth2/token
Revoke {base}/oauth2/revoke
Introspect {base}/oauth2/tokens/{access_token}

Civic client (reference)

Setting Value
client_id civic
Client type Public (no secret)
Grants Authorization code + refresh token
PKCE Required (S256)
Scope user_profile
Redirect civic://oauth/callback

Authorize query extras: lang=sk|en, intent=login|register.

Call an API with Bearer

curl -sS "https://rovas.app/rovas/me" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Example GET /rovas/me response:

{
  "uid": 42,
  "username": "sano",
  "display_name": "Alexander Žaťko",
  "total_me": 1248.35,
  "total_chr": 320.0,
  "created": "2019-03-12T14:22:01+00:00",
  "language": "sk",
  "receipt_history_retention": null
}

OAuth / Civic endpoint reference

Auth labels: Bearer = required access token; Public = no token; Optional Bearer = public, with extra fields when signed in.

Home & profile

Method Path Auth Purpose
GET /rovas/me Bearer Signed-in profile + Merit/Chron totals
GET /rovas/contributions/aggregate Public Community Merit total
GET /rovas/merit_distribution Optional Bearer Merit histogram
POST /rovas/civic_receipt_history_preference Bearer Receipt history retention
GET /rovas/civic_merit_history Bearer Personal Merit ledger

Users

Method Path Auth Purpose
GET /rovas/users_search?query= Bearer User typeahead (use query, not q)
GET /rovas/users_lookup?username= Bearer Community profile

Tax (VAT) claims

Method Path Auth Purpose
POST /rovas/rules/rules_proxy_claim_vat_receipt Bearer Claim eKasa VAT as Merits
GET /rovas/civic_claims Bearer Lists (view=submitted|received) or status (receipt_uid=)
GET /rovas/civic_claims/summary Bearer Claim totals
GET /rovas/civic_national_hourly_rate?country= Public National hourly rate

Projects & public-benefit orgs

Method Path Auth Purpose
GET /rovas/civic_project/{nid} Public* Project detail
GET /rovas/civic_project_work_reports Public* Work reports for a project
GET /rovas/civic_project_shareholders Public* Shareholders
GET /rovas/civic_charity_projects Public Approved charity / public-benefit catalog
POST /rovas/civic_create_charity_org Bearer Submit a public-benefit organization

*Anonymous access for approved public-benefit projects; otherwise access rules apply.

Volunteer work reports

Method Path Auth Purpose
GET /rovas/civic_my_projects Bearer Projects the user recently reported on
GET /rovas/civic_projects_search?query= Bearer Search projects
GET /rovas/civic_nace_tree Public NACE activity tree
POST /rovas/civic_create_project Bearer Create project
POST /rovas/civic_create_work_report Bearer Create work report
GET /rovas/civic_work_report_map_config Bearer Map proof configuration
POST /rovas/civic_ai_nace Bearer AI NACE + title suggestion

Verification & notices

Method Path Auth Purpose
GET /rovas/civic_pending_verifications Bearer Reports waiting for your verification
GET /rovas/civic_work_report/{nid} Bearer Work-report detail for verifiers
POST /rovas/civic_submit_verification Bearer Approve, reject, or decline
GET /rovas/civic_pending_comment_notices Bearer Watched-comment notices

Merit index

Method Path Auth Purpose
GET /rovas/civic_merit_index Public Leaderboard snapshot
GET /rovas/civic_merit_index_countries Public Country filters
GET /rovas/civic_merit_spotlight Public Period spotlight
GET /rovas/civic_merit_period_index Public Period leaderboard

Support

Questions, OpenAPI schemas, or a new OAuth client: contact NeoFund.