Abuja Digital Studio · Est. 2018
Start a Project
DocsOMembershipREST API, WP-CLI & Events
Reference

REST API, WP-CLI & Events

OMembershiporravo.com/docs/omembership/rest-api

REST API

Namespace: omem/v1. The full route table is registered in OMembership_REST::register_routes().

Plans

GET    /omem/v1/plans                        (public)
POST   /omem/v1/plans                        (omem_manage_plans)
GET    /omem/v1/plans/{id}                   (public)
PATCH  /omem/v1/plans/{id}                   (omem_manage_plans)
DELETE /omem/v1/plans/{id}                   (omem_manage_plans)

Members and memberships

GET  /omem/v1/members                        (omem_manage_members)
GET  /omem/v1/members/{id}                   (omem_manage_members)
POST /omem/v1/members/{id}/grant             (omem_grant_access)
POST /omem/v1/members/{id}/revoke            (omem_grant_access)
GET  /omem/v1/members/{id}/progress          (omem_manage_members)
GET  /omem/v1/members/{id}/health            (omem_manage_members)
GET  /omem/v1/memberships?user_id={id}       (omem_manage_members)
POST /omem/v1/memberships                    (omem_grant_access)
POST /omem/v1/memberships/{id}/cancel        (omem_grant_access)
POST /omem/v1/memberships/{id}/pause         (omem_grant_access)
POST /omem/v1/memberships/{id}/upgrade       (omem_grant_access)

Access

GET    /omem/v1/access-rules                 (omem_manage_access)
POST   /omem/v1/access-rules                 (omem_manage_access)
PATCH  /omem/v1/access-rules/{id}            (omem_manage_access)
DELETE /omem/v1/access-rules/{id}            (omem_manage_access)
POST   /omem/v1/access/check                 (public)

Courses, lessons, quizzes

GET, POST          /omem/v1/{courses|modules|lessons|quizzes}
PATCH, DELETE      /omem/v1/{resource}/{id}
GET                /omem/v1/me/progress
POST               /omem/v1/progress/{lesson_id}
POST               /omem/v1/quizzes/{id}/attempts
GET                /omem/v1/me/certificates
GET                /omem/v1/certificates/verify/{token}    (public)

Community, moderation, badges

GET, POST     /omem/v1/spaces
GET, POST     /omem/v1/topics
GET, POST     /omem/v1/replies
POST          /omem/v1/reactions
GET, POST     /omem/v1/dms/conversations
GET, POST     /omem/v1/dms/conversations/{id}/messages
GET           /omem/v1/directory
GET           /omem/v1/directory/{user_id}
GET           /omem/v1/moderation/queue            (omem_moderate_community)
POST          /omem/v1/moderation/{id}/resolve     (omem_moderate_community)
GET, POST     /omem/v1/badges                      (POST: omem_manage_badges)
POST          /omem/v1/members/{id}/badges/{badge_id}

Reports

GET  /omem/v1/reports/mrr               (omem_view_reports)
GET  /omem/v1/reports/cohort            (omem_view_reports)
GET  /omem/v1/reports/courses           (omem_view_reports)
GET  /omem/v1/reports/engagement        (omem_view_reports)

WP-CLI

wp omem members list [--plan=]
wp omem members grant <user_id> <plan_id>
wp omem members revoke <user_id> <plan_id>
wp omem courses progress <user_id>
wp omem reports mrr
wp omem reports cohort --since=<months>
wp omem importer run --from=memberpress|pmp|rcp|buddyboss

The importer command runs idempotently and can be re-run after partial failures.

Event bus

OMembership_Events is a typed wrapper over do_action. Every dispatch is mirrored as a WordPress action so plugins can use either OMembership_Events::on() (typed) or add_action() (classic). Listener failures are caught and logged via OMembership_Logger without aborting the dispatch chain.

Canonical events

EventFires when
omem/membership/createdA membership row is inserted
omem/membership/cancelledCancel reason is recorded
omem/membership/upgradedPlan swap completes
omem/membership/expiredPeriod end passes without renewal
omem/access/deniedGate blocks a render or redirect
omem/lesson/completedProgress row flips to completed
omem/course/completedAll lessons in a course done
omem/quiz/passedAttempt score >= threshold
omem/certificate/issuedCertificate row inserted
omem/topic/created, omem/reply/createdCommunity writes
omem/dm/sentDM stored
omem/badge/awardedUser badge insert succeeds
omem/drip/releasedDrip schedule unlocks content
omem/lifecycle/*Lifecycle worker sweeps (see Lifecycle Campaigns)

Capabilities

Twelve custom caps register on administrator and shop_manager at activation:

omem_manage              -- catch-all (implicit grant for the others)
omem_manage_plans
omem_manage_members
omem_manage_access
omem_manage_courses
omem_manage_community
omem_moderate_community
omem_manage_badges
omem_manage_engagement
omem_view_reports
omem_grant_access
omem_export_data

OMembership_Capabilities::user_can( $cap ) returns true if the user has either the specific cap or the omem_manage catch-all.

Scheduled jobs

All five are queued idempotently on activation and re-checked every boot. Group: omembership.

HookInterval
omembership/access/expire-sweepHourly
omembership/drip/releaseHourly
omembership/lifecycle/runHourly
omembership/health/recomputeDaily
omembership/analytics/snapshotDaily

Requires Action Scheduler (ships with WooCommerce). When Action Scheduler is absent the recurring sweeps don't run, but event-driven flows still fire.

REST API, WP-CLI & Events · OMembership Docs | Orravo