Skip to content

API reference ​

Spec: api/openapi.yaml — Ovahol API (Core Auth + Health), version 0.1.0

Operations: 543 across 375 paths, grouped into 12 tags

This page is generated from the OpenAPI document; the document, not this page, is the contract. Generate clients from api/openapi.yaml. A — in the summary column means the route exists but has only its placeholder description so far.

Authentication ​

Send Authorization: Bearer <token> on authenticated routes. The token is a JWT issued by POST /api/v1/core/auth/login; refresh it with POST /api/v1/core/auth/refresh. Facility-scoped routes accept X-Facility-ID from organization admins and super admins.

SchemeTypeDetails
bearerAuthhttpscheme bearer, format JWT

health ​

MethodPathSummary
GET/healthHealth check

auth ​

MethodPathSummary
POST/api/v1/core/auth/avatar—
POST/api/v1/core/auth/change-passwordChange current password
POST/api/v1/core/auth/check-password-strengthValidate password quality rules
GET/api/v1/core/auth/current-userGet current authenticated user with feature entitlements
PATCH/api/v1/core/auth/facility-members/{id}/deactivateDeactivate a facility membership
PATCH/api/v1/core/auth/facility-members/{id}/reactivateReactivate a facility membership
POST/api/v1/core/auth/forgot-passwordRequest password reset
POST/api/v1/core/auth/loginAuthenticate user
POST/api/v1/core/auth/logoutLogout current session
GET/api/v1/core/auth/profileGet authenticated user profile
PATCH/api/v1/core/auth/profileUpdate authenticated user profile
POST/api/v1/core/auth/refreshRefresh access token and rotate session
POST/api/v1/core/auth/registerRegister with invitation token
POST/api/v1/core/auth/reset-passwordReset password with token
POST/api/v1/core/auth/select-facilitySelect active facility context
POST/api/v1/core/auth/select-organizationSelect active organization context
GET/api/v1/core/auth/sessionsList active sessions
DELETE/api/v1/core/auth/sessions/othersRevoke all other sessions except current one
DELETE/api/v1/core/auth/sessions/{id}Revoke a specific session
POST/api/v1/core/auth/signupCreate account and bootstrap organization/facility
POST/api/v1/core/auth/signup-lookupCheck whether email already exists during signup

core ​

MethodPathSummary
POST/api/v1/core/admin/facility-import/{facility_id}—
POST/api/v1/core/admin/facility-import/{facility_id}/normalize—
POST/api/v1/core/admin/facility-import/{facility_id}/normalize-file—
POST/api/v1/core/admin/facility-import/{facility_id}/resolve-references—
GET/api/v1/core/admin/interchange/facilities/{facility_id}/catalog/names—
POST/api/v1/core/admin/interchange/facilities/{facility_id}/convert—
GET/api/v1/core/admin/interchange/facilities/{facility_id}/export—
POST/api/v1/core/admin/interchange/facilities/{facility_id}/import—
POST/api/v1/core/admin/interchange/facilities/{facility_id}/validate—
GET/api/v1/core/admin/platform/metricsPlatform observability snapshot
POST/api/v1/core/billing/admin/cleanup-plans—
GET/api/v1/core/billing/admin/invoices—
PATCH/api/v1/core/billing/admin/invoices/{id}/paid—
POST/api/v1/core/billing/admin/orgs/{org_id}/provision—
POST/api/v1/core/billing/admin/payments/replay—
GET/api/v1/core/billing/admin/plans—
POST/api/v1/core/billing/admin/plans—
PATCH/api/v1/core/billing/admin/plans/{code}—
DELETE/api/v1/core/billing/admin/plans/{code}Archive a billing plan and disable its provider plan when applicable
POST/api/v1/core/billing/admin/plans/{code}/status—
GET/api/v1/core/billing/admin/reconciliationReconcile billing subscriptions
GET/api/v1/core/billing/admin/subscriptions—
GET/api/v1/core/billing/admin/webhook-eventsRetrieve billing webhook events for admin diagnostics
POST/api/v1/core/billing/initialize—
GET/api/v1/core/billing/invoices—
GET/api/v1/core/billing/overview—
GET/api/v1/core/billing/plans—
GET/api/v1/core/billing/quota—
DELETE/api/v1/core/billing/subscription—
POST/api/v1/core/billing/subscription/change—
GET/api/v1/core/billing/subscription/details—
GET/api/v1/core/billing/subscription/manage—
POST/api/v1/core/billing/subscription/reactivate—
GET/api/v1/core/billing/verify/{reference}—
GET/api/v1/core/brands—
POST/api/v1/core/brands—
POST/api/v1/core/brands/import—
GET/api/v1/core/brands/{id}—
PATCH/api/v1/core/brands/{id}—
DELETE/api/v1/core/brands/{id}—
GET/api/v1/core/devices—
POST/api/v1/core/devices—
POST/api/v1/core/devices/import—
GET/api/v1/core/devices/{id}—
PATCH/api/v1/core/devices/{id}—
DELETE/api/v1/core/devices/{id}—
GET/api/v1/core/dictionary-recommendations—
POST/api/v1/core/dictionary-recommendations—
GET/api/v1/core/dictionary-recommendations/mine—
PATCH/api/v1/core/dictionary-recommendations/{id}/payload—
POST/api/v1/core/dictionary-recommendations/{id}/review—
GET/api/v1/core/exchange-rates—
GET/api/v1/core/facilities—
POST/api/v1/core/facilities—
GET/api/v1/core/facilities/organization/{organization_id}—
GET/api/v1/core/facilities/{id}—
PATCH/api/v1/core/facilities/{id}—
DELETE/api/v1/core/facilities/{id}—
POST/api/v1/core/facilities/{id}/logo—
GET/api/v1/core/facilities/{id}/members—
PATCH/api/v1/core/facilities/{id}/members/{membershipId}/role—
PATCH/api/v1/core/facilities/{id}/primary—
GET/api/v1/core/invitations—
POST/api/v1/core/invitations—
POST/api/v1/core/invitations/accept—
POST/api/v1/core/invitations/revoke/{id}—
GET/api/v1/core/invitations/{token}—
GET/api/v1/core/manufacturers—
POST/api/v1/core/manufacturers—
POST/api/v1/core/manufacturers/import—
GET/api/v1/core/manufacturers/{id}—
PATCH/api/v1/core/manufacturers/{id}—
DELETE/api/v1/core/manufacturers/{id}—
GET/api/v1/core/models—
POST/api/v1/core/models—
POST/api/v1/core/models/ensure-unknown—
POST/api/v1/core/models/import—
GET/api/v1/core/models/{id}—
PATCH/api/v1/core/models/{id}—
DELETE/api/v1/core/models/{id}—
POST/api/v1/core/models/{id}/image—
GET/api/v1/core/notifications—
POST/api/v1/core/notifications/read-all—
GET/api/v1/core/notifications/unread-count—
POST/api/v1/core/notifications/{id}/read—
GET/api/v1/core/org/device-transfers—
POST/api/v1/core/org/device-transfers—
GET/api/v1/core/org/device-transfers/{id}—
POST/api/v1/core/org/device-transfers/{id}/cancel—
POST/api/v1/core/org/device-transfers/{id}/complete—
POST/api/v1/core/org/device-transfers/{id}/decide—
POST/api/v1/core/org/device-transfers/{id}/release—
GET/api/v1/core/org/retirement-disposalGet organization retirement and disposal report
GET/api/v1/core/org/retirement-disposal/exportExport organization retirement and disposal CSV
GET/api/v1/core/org/utilizationGet organization utilization report
GET/api/v1/core/org/utilization/exportExport organization utilization report CSV
GET/api/v1/core/organizations—
POST/api/v1/core/organizations—
GET/api/v1/core/organizations/dashboard—
GET/api/v1/core/organizations/stats—
GET/api/v1/core/organizations/{id}—
PATCH/api/v1/core/organizations/{id}—
DELETE/api/v1/core/organizations/{id}—
POST/api/v1/core/organizations/{id}/logo—
GET/api/v1/core/plans—
POST/api/v1/core/units/calculate—
POST/api/v1/core/units/convert—
GET/api/v1/core/units/formulas—
GET/api/v1/core/units/quantities—
POST/api/v1/core/webhooks/paystack—
POST/api/v1/core/webhooks/{provider}—

counterparties ​

MethodPathSummary
GET/api/v1/core/counterparties/organizations/{organization_id}/donor-organizationsList donor organizations for an organization
POST/api/v1/core/counterparties/organizations/{organization_id}/donor-organizationsCreate donor organization for an organization
GET/api/v1/core/counterparties/organizations/{organization_id}/donor-organizations/{id}Get donor organization for an organization
PATCH/api/v1/core/counterparties/organizations/{organization_id}/donor-organizations/{id}Update donor organization for an organization
DELETE/api/v1/core/counterparties/organizations/{organization_id}/donor-organizations/{id}Delete donor organization
GET/api/v1/core/counterparties/organizations/{organization_id}/donor-projectsList donor projects for an organization
POST/api/v1/core/counterparties/organizations/{organization_id}/donor-projectsCreate donor project for an organization
GET/api/v1/core/counterparties/organizations/{organization_id}/donor-projects/{id}Get donor project for an organization
PATCH/api/v1/core/counterparties/organizations/{organization_id}/donor-projects/{id}Update donor project for an organization
DELETE/api/v1/core/counterparties/organizations/{organization_id}/donor-projects/{id}Delete donor project
GET/api/v1/core/counterparties/organizations/{organization_id}/vendorsList vendors for an organization
POST/api/v1/core/counterparties/organizations/{organization_id}/vendorsCreate vendor for an organization
GET/api/v1/core/counterparties/organizations/{organization_id}/vendors/{id}Get vendor for an organization
PATCH/api/v1/core/counterparties/organizations/{organization_id}/vendors/{id}Update vendor for an organization
DELETE/api/v1/core/counterparties/organizations/{organization_id}/vendors/{id}Delete vendor

device-records ​

MethodPathSummary
GET/api/v1/core/org/device-recordsList device records across the organization
GET/api/v1/core/org/device-records/exportExport organization device records as CSV
GET/api/v1/core/org/device-records/{facility_id}/{id}Get an organization device record
GET/api/v1/tenant/device-recordsList facility device records
POST/api/v1/tenant/device-recordsCreate a device record
GET/api/v1/tenant/device-records/countDevice record count
GET/api/v1/tenant/device-records/exportExport the device lifecycle
POST/api/v1/tenant/device-records/importImport device records from CSV
POST/api/v1/tenant/device-records/import/provision-modelProvision a catalog model for an unmatched import name
POST/api/v1/tenant/device-records/import/validateValidate a device-record CSV import
POST/api/v1/tenant/device-records/resolve-modelsResolve placeholder models in bulk
GET/api/v1/tenant/device-records/stats/categoriesDevice record count by category
GET/api/v1/tenant/device-records/stats/functionsDevice record count by function
GET/api/v1/tenant/device-records/stats/inventory-summaryInventory summary
GET/api/v1/tenant/device-records/stats/non-operational-countNon-operational device count
GET/api/v1/tenant/device-records/stats/operational-availabilityOperational availability
GET/api/v1/tenant/device-records/stats/statusDevice record count by status
GET/api/v1/tenant/device-records/stats/variety-indexDevice variety index
GET/api/v1/tenant/device-records/stats/variety-offendersDevices with excess model variety
GET/api/v1/tenant/device-records/{id}Get a device record
PATCH/api/v1/tenant/device-records/{id}Update a device record
DELETE/api/v1/tenant/device-records/{id}Delete a device record
GET/api/v1/tenant/device-records/{id}/imagesList device images
POST/api/v1/tenant/device-records/{id}/imagesUpload a device image
GET/api/v1/tenant/device-records/{id}/images/primaryGet the primary device image
DELETE/api/v1/tenant/device-records/{id}/images/{imageID}Delete a device image
PATCH/api/v1/tenant/device-records/{id}/images/{imageID}/primarySet the primary device image
GET/api/v1/tenant/device-records/{id}/parts-donorsList parts donors
POST/api/v1/tenant/device-records/{id}/reactivateReactivate a Standby/Spare device record
POST/api/v1/tenant/device-records/{id}/resolve-modelResolve a placeholder model
POST/api/v1/tenant/device-records/{id}/standbyMove a device record to Standby/Spare
POST/api/v1/tenant/device-records/{id}/usage-logs/batchRecord device usage in bulk
DELETE/api/v1/tenant/device-records/{id}/usage-logs/{log_id}Delete a device usage log

fault-reports ​

MethodPathSummary
GET/api/v1/tenant/fault-reportsList fault reports
POST/api/v1/tenant/fault-reportsReport a device fault
GET/api/v1/tenant/fault-reports/exportExport fault reports as CSV
GET/api/v1/tenant/fault-reports/failure-trendsRecurring failure trends
GET/api/v1/tenant/fault-reports/severity-rulesFault severity to SLA/priority rules
GET/api/v1/tenant/fault-reports/statsFault report statistics
GET/api/v1/tenant/fault-reports/{id}Get a fault report
GET/api/v1/tenant/fault-reports/{id}/activitiesList fault report activity
POST/api/v1/tenant/fault-reports/{id}/confirm-resolutionConfirm a fault resolution
POST/api/v1/tenant/fault-reports/{id}/convert-to-work-orderConvert a fault report to a work order
POST/api/v1/tenant/fault-reports/{id}/rejectReject a fault report
POST/api/v1/tenant/fault-reports/{id}/reopenReopen a fault report
POST/api/v1/tenant/fault-reports/{id}/resolve-no-woResolve a fault report without a work order
POST/api/v1/tenant/fault-reports/{id}/triageTriage a fault report

governance ​

MethodPathSummary
GET/api/v1/core/governance/facilities/{id}/approval-policiesList facility approval policies
PATCH/api/v1/core/governance/facilities/{id}/approval-policies/{event_type}Update facility approval policy
GET/api/v1/core/governance/facilities/{id}/capabilitiesList facility governance capabilities
PATCH/api/v1/core/governance/facilities/{id}/capabilities/{action_code}/{role_code}Update facility governance capability
GET/api/v1/core/governance/facilities/{id}/policiesList facility policies
POST/api/v1/core/governance/facilities/{id}/policiesCreate facility policy
GET/api/v1/core/governance/facilities/{id}/policies/{policy_id}Get facility policy
PATCH/api/v1/core/governance/facilities/{id}/policies/{policy_id}Update facility policy
GET/api/v1/core/governance/facilities/{id}/policies/{policy_id}/versionsList facility policy versions
POST/api/v1/core/governance/facilities/{id}/policies/{policy_id}/versionsCreate facility policy version
GET/api/v1/core/governance/facilities/{id}/profileGet facility governance profile
PATCH/api/v1/core/governance/facilities/{id}/profileUpdate facility governance profile
GET/api/v1/core/governance/organizations/{id}/approval-policiesList organization approval policies
PATCH/api/v1/core/governance/organizations/{id}/approval-policies/{event_type}Update organization approval policy
GET/api/v1/core/governance/organizations/{id}/capabilitiesList organization governance capabilities
PATCH/api/v1/core/governance/organizations/{id}/capabilities/{action_code}/{role_code}Update organization governance capability
GET/api/v1/core/governance/organizations/{id}/policiesList organization policies
POST/api/v1/core/governance/organizations/{id}/policiesCreate organization policy
GET/api/v1/core/governance/organizations/{id}/policies/{policy_id}Get organization policy
PATCH/api/v1/core/governance/organizations/{id}/policies/{policy_id}Update organization policy
GET/api/v1/core/governance/organizations/{id}/policies/{policy_id}/versionsList organization policy versions
POST/api/v1/core/governance/organizations/{id}/policies/{policy_id}/versionsCreate organization policy version
GET/api/v1/core/governance/organizations/{id}/profileGet organization governance profile
PATCH/api/v1/core/governance/organizations/{id}/profileUpdate organization governance profile

interchange ​

MethodPathSummary
GET/api/v1/tenant/interchange/catalog/namesList catalog names for match correction
POST/api/v1/tenant/interchange/convertStage foreign rows as a candidate interchange bundle
GET/api/v1/tenant/interchange/exportExport the current facility as one interchange bundle
POST/api/v1/tenant/interchange/importImport an interchange bundle into the facility
POST/api/v1/tenant/interchange/validateValidate a bundle without importing it

lookup ​

MethodPathSummary
GET/api/v1/lookup/applied-part-types—
POST/api/v1/lookup/applied-part-types—
GET/api/v1/lookup/applied-part-types/{id}—
PUT/api/v1/lookup/applied-part-types/{id}—
DELETE/api/v1/lookup/applied-part-types/{id}—
GET/api/v1/lookup/backup-power-sources—
POST/api/v1/lookup/backup-power-sources—
GET/api/v1/lookup/backup-power-sources/{id}—
PUT/api/v1/lookup/backup-power-sources/{id}—
DELETE/api/v1/lookup/backup-power-sources/{id}—
GET/api/v1/lookup/countries—
GET/api/v1/lookup/device-application-risks—
POST/api/v1/lookup/device-application-risks—
GET/api/v1/lookup/device-application-risks/{id}—
PUT/api/v1/lookup/device-application-risks/{id}—
DELETE/api/v1/lookup/device-application-risks/{id}—
GET/api/v1/lookup/device-categories—
POST/api/v1/lookup/device-categories—
GET/api/v1/lookup/device-categories/{id}—
PUT/api/v1/lookup/device-categories/{id}—
DELETE/api/v1/lookup/device-categories/{id}—
GET/api/v1/lookup/device-functions—
POST/api/v1/lookup/device-functions—
GET/api/v1/lookup/device-functions/{id}—
PUT/api/v1/lookup/device-functions/{id}—
DELETE/api/v1/lookup/device-functions/{id}—
GET/api/v1/lookup/device-types—
POST/api/v1/lookup/device-types—
GET/api/v1/lookup/device-types/{id}—
PUT/api/v1/lookup/device-types/{id}—
DELETE/api/v1/lookup/device-types/{id}—
GET/api/v1/lookup/electrical-safety-classes—
POST/api/v1/lookup/electrical-safety-classes—
GET/api/v1/lookup/electrical-safety-classes/{id}—
PUT/api/v1/lookup/electrical-safety-classes/{id}—
DELETE/api/v1/lookup/electrical-safety-classes/{id}—
GET/api/v1/lookup/failure-codes—
POST/api/v1/lookup/failure-codes—
GET/api/v1/lookup/failure-codes/{id}—
GET/api/v1/lookup/location-categories—
POST/api/v1/lookup/location-categories—
GET/api/v1/lookup/location-categories/{id}—
PUT/api/v1/lookup/location-categories/{id}—
DELETE/api/v1/lookup/location-categories/{id}—
GET/api/v1/lookup/organization-types—
POST/api/v1/lookup/organization-types—
GET/api/v1/lookup/organization-types/{id}—
PUT/api/v1/lookup/organization-types/{id}—
DELETE/api/v1/lookup/organization-types/{id}—
GET/api/v1/lookup/power-sources—
POST/api/v1/lookup/power-sources—
GET/api/v1/lookup/power-sources/{id}—
PUT/api/v1/lookup/power-sources/{id}—
DELETE/api/v1/lookup/power-sources/{id}—
GET/api/v1/lookup/regulatory-class-eu—
POST/api/v1/lookup/regulatory-class-eu—
GET/api/v1/lookup/regulatory-class-eu/{id}—
PUT/api/v1/lookup/regulatory-class-eu/{id}—
DELETE/api/v1/lookup/regulatory-class-eu/{id}—
GET/api/v1/lookup/regulatory-class-fda—
POST/api/v1/lookup/regulatory-class-fda—
GET/api/v1/lookup/regulatory-class-fda/{id}—
PUT/api/v1/lookup/regulatory-class-fda/{id}—
DELETE/api/v1/lookup/regulatory-class-fda/{id}—
GET/api/v1/lookup/statuses—
POST/api/v1/lookup/statuses—
GET/api/v1/lookup/statuses/{id}—
PUT/api/v1/lookup/statuses/{id}—
DELETE/api/v1/lookup/statuses/{id}—
GET/api/v1/lookup/user-roles—
POST/api/v1/lookup/user-roles—
GET/api/v1/lookup/user-roles/{id}—
PUT/api/v1/lookup/user-roles/{id}—
DELETE/api/v1/lookup/user-roles/{id}—
GET/api/v1/lookup/work-order-priorities—
POST/api/v1/lookup/work-order-priorities—
GET/api/v1/lookup/work-order-priorities/{id}—
GET/api/v1/lookup/work-order-statuses—
POST/api/v1/lookup/work-order-statuses—
GET/api/v1/lookup/work-order-statuses/{id}—
GET/api/v1/lookup/work-order-types—
POST/api/v1/lookup/work-order-types—
GET/api/v1/lookup/work-order-types/{id}—

system ​

MethodPathSummary
GET/metrics—

tenant ​

MethodPathSummary
GET/api/v1/tenant/acquisitionsList acquisition records
POST/api/v1/tenant/acquisitionsCreate acquisition record
GET/api/v1/tenant/acquisitions/stats/pipelineGet acquisition pipeline stats
GET/api/v1/tenant/acquisitions/{id}Get acquisition record
PATCH/api/v1/tenant/acquisitions/{id}Update acquisition record
DELETE/api/v1/tenant/acquisitions/{id}Delete acquisition record
POST/api/v1/tenant/acquisitions/{id}/acceptanceRecord acquisition acceptance
GET/api/v1/tenant/acquisitions/{id}/awardGet acquisition award
PUT/api/v1/tenant/acquisitions/{id}/awardSave acquisition award
GET/api/v1/tenant/acquisitions/{id}/bidsList vendor bids for acquisition
POST/api/v1/tenant/acquisitions/{id}/bidsCreate vendor bid for acquisition
PATCH/api/v1/tenant/acquisitions/{id}/bids/{bid_id}Update vendor bid
DELETE/api/v1/tenant/acquisitions/{id}/bids/{bid_id}Delete vendor bid
POST/api/v1/tenant/acquisitions/{id}/create-deviceCreate device record from accepted acquisition
POST/api/v1/tenant/acquisitions/{id}/create-devicesCreate multiple device records from accepted acquisition
GET/api/v1/tenant/acquisitions/{id}/created-devicesList device records created from an acquisition
GET/api/v1/tenant/acquisitions/{id}/donation-offerGet donation offer
PUT/api/v1/tenant/acquisitions/{id}/donation-offerSave donation offer
POST/api/v1/tenant/acquisitions/{id}/donation-offer/reviewReview donation offer
GET/api/v1/tenant/acquisitions/{id}/purchase-ordersList purchase orders for acquisition
POST/api/v1/tenant/acquisitions/{id}/purchase-ordersCreate purchase order for acquisition
PATCH/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}Update purchase order
DELETE/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}Delete purchase order
GET/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/invoicesList supplier invoices for purchase order
POST/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/invoicesCreate supplier invoice for purchase order
PATCH/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/invoices/{invoice_id}Update supplier invoice
DELETE/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/invoices/{invoice_id}Delete supplier invoice
GET/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/invoices/{invoice_id}/paymentsList supplier invoice payments
POST/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/invoices/{invoice_id}/paymentsCreate supplier invoice payment
PATCH/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/invoices/{invoice_id}/payments/{payment_id}Update supplier invoice payment
DELETE/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/invoices/{invoice_id}/payments/{payment_id}Delete supplier invoice payment
GET/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/receiptsList purchase order receipts
POST/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/receiptsCreate purchase order receipt
PATCH/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/receipts/{receipt_id}Update purchase order receipt
DELETE/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/receipts/{receipt_id}Delete purchase order receipt
POST/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/reconcileReconcile purchase order against supplier invoices
GET/api/v1/tenant/acquisitions/{id}/purchase-orders/{order_id}/reconciliation-historyList purchase order reconciliation history
POST/api/v1/tenant/acquisitions/{id}/receiveReceive acquisition record
POST/api/v1/tenant/acquisitions/{id}/reviewReview acquisition record
GET/api/v1/tenant/audit-logs—
GET/api/v1/tenant/decommissioning-reviewsList decommissioning reviews
POST/api/v1/tenant/decommissioning-reviewsInitiate decommissioning review
GET/api/v1/tenant/decommissioning-reviews/{id}Get decommissioning review
PATCH/api/v1/tenant/decommissioning-reviews/{id}Update decommissioning review
GET/api/v1/tenant/decommissioning-reviews/{id}/activitiesGet decommissioning review activity timeline
POST/api/v1/tenant/decommissioning-reviews/{id}/decisionDecide decommissioning review
POST/api/v1/tenant/decommissioning-reviews/{id}/start-assessmentStart decommissioning review assessment
POST/api/v1/tenant/decommissioning-reviews/{id}/submit-recommendationSubmit decommissioning review recommendation
POST/api/v1/tenant/decommissioning-reviews/{id}/withdrawWithdraw decommissioning review
GET/api/v1/tenant/decommissions—
GET/api/v1/tenant/decommissions/{id}—
GET/api/v1/tenant/departmentsList facility departments
POST/api/v1/tenant/departments—
GET/api/v1/tenant/departments/exportExport facility departments as CSV
POST/api/v1/tenant/departments/importImport facility departments from CSV or XLSX
GET/api/v1/tenant/departments/import-templateDownload the department XLSX import template
GET/api/v1/tenant/departments/{id}—
PATCH/api/v1/tenant/departments/{id}—
DELETE/api/v1/tenant/departments/{id}—
GET/api/v1/tenant/device-records/offline-inventoryGet the minimal device inventory snapshot
GET/api/v1/tenant/device-records/offline-pm-dueGet the minimal preventive-maintenance due snapshot
GET/api/v1/tenant/device-records/offline-work-ordersGet the minimal work-order snapshot
GET/api/v1/tenant/device-records/stats/inventory-countsCount active device records by device name
GET/api/v1/tenant/device-records/stats/offline-dashboard-summaryGet the minimal facility dashboard snapshot
GET/api/v1/tenant/device-records/stats/readinessGet device operational readiness summary
GET/api/v1/tenant/device-records/stats/utilizationGet facility device utilization summary
GET/api/v1/tenant/device-records/utilizationList device utilization summaries
POST/api/v1/tenant/device-records/{id}/commissionCommission device record
GET/api/v1/tenant/device-records/{id}/commissioning-eventsList device commissioning events
POST/api/v1/tenant/device-records/{id}/decommissionDecommission device record
GET/api/v1/tenant/device-records/{id}/decommission-eventsList device decommission events
GET/api/v1/tenant/device-records/{id}/handover-recordsList device handover records
POST/api/v1/tenant/device-records/{id}/handover-recordsCreate device handover record
GET/api/v1/tenant/device-records/{id}/lifecycle-eventsList device asset lifecycle events
GET/api/v1/tenant/device-records/{id}/offline-summaryGet a minimal device identity and status snapshot
GET/api/v1/tenant/device-records/{id}/spare-partsList spare parts compatible with a device model
GET/api/v1/tenant/device-records/{id}/training-recordsList device training records
GET/api/v1/tenant/device-records/{id}/usage-logsList device usage logs
POST/api/v1/tenant/device-records/{id}/usage-logsCreate device usage log
GET/api/v1/tenant/device-records/{id}/utilization-summaryGet device utilization summary
GET/api/v1/tenant/disposalsList disposal records
POST/api/v1/tenant/disposalsCreate disposal record
GET/api/v1/tenant/disposals/stats/summaryGet retirement and disposal summary
GET/api/v1/tenant/disposals/{id}Get disposal record
PATCH/api/v1/tenant/disposals/{id}Update disposal record
DELETE/api/v1/tenant/disposals/{id}Delete disposal record
POST/api/v1/tenant/disposals/{id}/cancelCancel disposal record
POST/api/v1/tenant/disposals/{id}/completeComplete disposal record
GET/api/v1/tenant/disposals/{id}/evidenceList disposal evidence
POST/api/v1/tenant/disposals/{id}/evidenceCreate disposal evidence
POST/api/v1/tenant/disposals/{id}/startStart disposal record
GET/api/v1/tenant/disposition-decisionsList disposition decisions
POST/api/v1/tenant/disposition-decisionsCreate disposition decision
GET/api/v1/tenant/disposition-decisions/{id}Get disposition decision
POST/api/v1/tenant/disposition-decisions/{id}/cancelCancel disposition decision
POST/api/v1/tenant/disposition-decisions/{id}/mark-actioned-by-transferMark disposition decision actioned by transfer
GET/api/v1/tenant/donationsList donations
POST/api/v1/tenant/donationsCreate donation
GET/api/v1/tenant/donations/{id}Get donation
PATCH/api/v1/tenant/donations/{id}Update donation
DELETE/api/v1/tenant/donations/{id}Delete donation
POST/api/v1/tenant/donations/{id}/acceptAccept donation
GET/api/v1/tenant/funding-linesList funding lines
POST/api/v1/tenant/funding-linesCreate funding line
PATCH/api/v1/tenant/funding-lines/{id}Update funding line
DELETE/api/v1/tenant/funding-lines/{id}Delete funding line
GET/api/v1/tenant/funding-sourcesList funding sources
POST/api/v1/tenant/funding-sourcesCreate funding source
PATCH/api/v1/tenant/funding-sources/{id}Update funding source
DELETE/api/v1/tenant/funding-sources/{id}Delete funding source
GET/api/v1/tenant/incidentsList incident reports
POST/api/v1/tenant/incidentsCreate incident report
GET/api/v1/tenant/incidents/{id}Get incident report
PATCH/api/v1/tenant/incidents/{id}Update incident report
DELETE/api/v1/tenant/incidents/{id}Delete incident report
POST/api/v1/tenant/incidents/{id}/notify-manufacturer—
POST/api/v1/tenant/incidents/{id}/reviewReview incident report
POST/api/v1/tenant/incidents/{id}/submit-to-regulator—
GET/api/v1/tenant/locationsList facility locations
POST/api/v1/tenant/locations—
GET/api/v1/tenant/locations/exportExport facility locations as CSV
POST/api/v1/tenant/locations/importImport facility locations from CSV or XLSX
GET/api/v1/tenant/locations/import-templateDownload the location XLSX import template
GET/api/v1/tenant/locations/{id}—
PATCH/api/v1/tenant/locations/{id}—
DELETE/api/v1/tenant/locations/{id}—
GET/api/v1/tenant/maintenance/summaryGet spare parts and service maintenance summary
GET/api/v1/tenant/needs-requestsList need requests
POST/api/v1/tenant/needs-requestsCreate need request
GET/api/v1/tenant/needs-requests/{id}Get need request
PATCH/api/v1/tenant/needs-requests/{id}Update need request
DELETE/api/v1/tenant/needs-requests/{id}Delete need request
POST/api/v1/tenant/needs-requests/{id}/reviewReview need request
GET/api/v1/tenant/option-appraisalsList option appraisals
POST/api/v1/tenant/option-appraisalsCreate option appraisal
GET/api/v1/tenant/option-appraisals/{id}Get option appraisal
PATCH/api/v1/tenant/option-appraisals/{id}Update option appraisal
DELETE/api/v1/tenant/option-appraisals/{id}Delete option appraisal
POST/api/v1/tenant/option-appraisals/{id}/reviewReview option appraisal
GET/api/v1/tenant/performance-checks—
POST/api/v1/tenant/performance-checks—
GET/api/v1/tenant/performance-checks/export—
GET/api/v1/tenant/performance-checks/overdue—
GET/api/v1/tenant/performance-checks/{id}—
PATCH/api/v1/tenant/performance-checks/{id}—
DELETE/api/v1/tenant/performance-checks/{id}—
POST/api/v1/tenant/performance-checks/{id}/generate—
GET/api/v1/tenant/pm-schedules—
POST/api/v1/tenant/pm-schedules—
GET/api/v1/tenant/pm-schedules/export—
GET/api/v1/tenant/pm-schedules/overdue—
GET/api/v1/tenant/pm-schedules/stats/frequencyPM schedule counts by frequency
GET/api/v1/tenant/pm-schedules/stats/summaryPM schedule counters
GET/api/v1/tenant/pm-schedules/{id}—
PATCH/api/v1/tenant/pm-schedules/{id}—
DELETE/api/v1/tenant/pm-schedules/{id}—
POST/api/v1/tenant/pm-schedules/{id}/generate—
GET/api/v1/tenant/recallsList recall notices
POST/api/v1/tenant/recallsCreate recall notice
GET/api/v1/tenant/recalls/{id}Get recall notice
PATCH/api/v1/tenant/recalls/{id}Update recall notice
DELETE/api/v1/tenant/recalls/{id}Delete recall notice
POST/api/v1/tenant/recalls/{id}/acknowledgeAcknowledge recall notice
GET/api/v1/tenant/recalls/{id}/affected-devices—
POST/api/v1/tenant/recalls/{id}/closeClose recall notice
GET/api/v1/tenant/refurbishmentsList refurbishment records
POST/api/v1/tenant/refurbishmentsCreate refurbishment record
GET/api/v1/tenant/refurbishments/{id}Get refurbishment record
PATCH/api/v1/tenant/refurbishments/{id}Update refurbishment record
DELETE/api/v1/tenant/refurbishments/{id}Delete refurbishment record
POST/api/v1/tenant/refurbishments/{id}/cancelCancel refurbishment record
POST/api/v1/tenant/refurbishments/{id}/completeComplete refurbishment record
POST/api/v1/tenant/refurbishments/{id}/startStart refurbishment record
GET/api/v1/tenant/retirement-eligible-devicesList devices eligible for retirement
GET/api/v1/tenant/spare-partsList spare parts inventory
POST/api/v1/tenant/spare-partsCreate spare part inventory item
GET/api/v1/tenant/spare-parts/linkable-modelsList installed device models available for spare-part linking
GET/api/v1/tenant/spare-parts/{id}Get spare part
PATCH/api/v1/tenant/spare-parts/{id}Update spare part
DELETE/api/v1/tenant/spare-parts/{id}Delete spare part
GET/api/v1/tenant/spare-parts/{id}/model-linksList model links for a spare part
POST/api/v1/tenant/spare-parts/{id}/model-linksLink spare part to installed model
DELETE/api/v1/tenant/spare-parts/{id}/model-links/{link_id}Remove spare part model link
GET/api/v1/tenant/spare-parts/{id}/movementsList spare part stock movements
POST/api/v1/tenant/spare-parts/{id}/movementsRecord spare part stock movement
GET/api/v1/tenant/training-sessions—
POST/api/v1/tenant/training-sessions—
GET/api/v1/tenant/training-sessions/devices/{deviceRecordID}/roster—
GET/api/v1/tenant/training-sessions/metrics—
GET/api/v1/tenant/training-sessions/{id}—
PATCH/api/v1/tenant/training-sessions/{id}—
DELETE/api/v1/tenant/training-sessions/{id}—
POST/api/v1/tenant/training-sessions/{id}/devices—
DELETE/api/v1/tenant/training-sessions/{id}/devices/{linkID}—
POST/api/v1/tenant/training-sessions/{id}/objectives—
DELETE/api/v1/tenant/training-sessions/{id}/objectives/{objectiveID}—
POST/api/v1/tenant/training-sessions/{id}/trainees—
DELETE/api/v1/tenant/training-sessions/{id}/trainees/{traineeID}—
POST/api/v1/tenant/training-sessions/{id}/trainers—
DELETE/api/v1/tenant/training-sessions/{id}/trainers/{trainerID}—
GET/api/v1/tenant/transfersList transfer records
POST/api/v1/tenant/transfersCreate transfer record
GET/api/v1/tenant/transfers/{id}Get transfer record
PATCH/api/v1/tenant/transfers/{id}Update transfer record
DELETE/api/v1/tenant/transfers/{id}Delete transfer record
POST/api/v1/tenant/transfers/{id}/approveApprove transfer record
POST/api/v1/tenant/transfers/{id}/cancelCancel transfer record
POST/api/v1/tenant/transfers/{id}/completeComplete transfer record
GET/api/v1/tenant/vendor-contractsList vendor contracts
POST/api/v1/tenant/vendor-contractsCreate vendor contract
GET/api/v1/tenant/vendor-contracts/health-summaryGet vendor contract health summary
GET/api/v1/tenant/vendor-contracts/{id}Get vendor contract
PATCH/api/v1/tenant/vendor-contracts/{id}Update vendor contract
DELETE/api/v1/tenant/vendor-contracts/{id}Delete vendor contract
POST/api/v1/tenant/vendor-contracts/{id}/activateActivate vendor contract
GET/api/v1/tenant/work-orders/{id}/spare-partsList spare parts issued to a work order
POST/api/v1/tenant/work-orders/{id}/spare-partsIssue spare part to work order
DELETE/api/v1/tenant/work-orders/{id}/spare-parts/{usage_id}Remove spare part usage from work order

work-orders ​

MethodPathSummary
GET/api/v1/tenant/work-ordersList work orders
POST/api/v1/tenant/work-ordersCreate a work order
GET/api/v1/tenant/work-orders/exportExport work orders as CSV
GET/api/v1/tenant/work-orders/statsWork order statistics
GET/api/v1/tenant/work-orders/stats/mttr-trendMean time to repair trend
GET/api/v1/tenant/work-orders/{id}Get a work order
PATCH/api/v1/tenant/work-orders/{id}Update a work order
DELETE/api/v1/tenant/work-orders/{id}Delete a work order
GET/api/v1/tenant/work-orders/{id}/activitiesList work order activity
POST/api/v1/tenant/work-orders/{id}/assignAssign a work order
POST/api/v1/tenant/work-orders/{id}/completeComplete a work order
POST/api/v1/tenant/work-orders/{id}/confirm-resolutionConfirm a work order resolution
POST/api/v1/tenant/work-orders/{id}/holdPut a work order on hold
POST/api/v1/tenant/work-orders/{id}/notesAdd a note to a work order
POST/api/v1/tenant/work-orders/{id}/reopenReopen a work order
POST/api/v1/tenant/work-orders/{id}/statusUpdate work order status
POST/api/v1/tenant/work-orders/{id}/verifyVerify completed work

Schemas ​

423 component schemas are defined in api/openapi.yaml. Most request and response bodies are still placeholders; the schemas that are documented describe the interchange bundles and the auth surface.

Ovahol developer documentation