Loading…
Loading…
PLATFORM API · 287 ENDPOINTS
The backend behind Udhyami, Evolve Energy and the ManTech console: sign-in, businesses and branches, ManTech ID, parties, catalog, inventory, reference data, the developer platform and partner APIs. Generated from the backend routes on 2026-09-25. The public IFSC, GST, HSN and SAC APIs for API-key customers are documented in the Developer API docs.
https://mantechstudio.in. Paths below are complete.Authorization: Bearer <token>. Get it from the Authentication endpoints or the Firebase SDK.:businessId in the path. Every call is checked against your membership, roles and the business's product entitlements; the permission column shows what your role needs.Idempotency-Key header. Reuse the same key when retrying./external/v1 use an application credential, need an active API entitlement and are metered.Minor (for example sellingPriceMinor) are integer paise.{
"data": { "businessId": "biz_…", "defaultBranchId": "br_…" },
"meta": { "timestamp": "2026-09-25T10:00:00.000Z" },
"requestId": "req_…"
}{
"error": {
"code": "PERMISSION_DENIED",
"message": "You do not have permission to perform this action.",
"requestId": "req_…"
}
}curl -X POST https://mantechstudio.in/api/v1/businesses \
-H "Authorization: Bearer <FIREBASE_ID_TOKEN>" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: setup-7f3c…" \
-d '{ "displayName": "Balaji Brick Works", "businessType": "GENERAL",
"country": "IN", "currency": "INR", "timezone": "Asia/Kolkata",
"onboardingProductCode": "udhyami" }'Sign-up, login, token refresh, password reset and logout for ManTech users.
Access: Public (no token); rate limited
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /api/v1/auth/signup | Create a ManTech account (email and password) | — |
| POST | /api/v1/auth/login | Sign in and receive ID and refresh tokens | — |
| POST | /api/v1/auth/refresh | Exchange a refresh token for a new ID token | — |
| POST | /api/v1/auth/password-reset | Send a password-reset email | — |
| POST | /api/v1/auth/logout | Sign out of all sessions | — |
Create and manage businesses (tenants), their branches, physical locations, members and branch assignments.
Access: Firebase ID token + business permission
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /api/v1/businesses | Create a business with owner membership, default branch and trial entitlement in one step (Idempotency-Key supported) | — |
| GET | /api/v1/businesses | List businesses the signed-in user belongs to | — |
| GET | /api/v1/businesses/:businessId | Get business | business.read |
| PATCH | /api/v1/businesses/:businessId | Update business | business.update |
| GET | /api/v1/businesses/:businessId/effective-permissions | Effective roles and permissions of the signed-in user in this business | — |
| GET | /api/v1/businesses/:businessId/branches | List branches | branch.read |
| POST | /api/v1/businesses/:businessId/branches | Create branch | branch.manage |
| GET | /api/v1/businesses/:businessId/branches/:branchId | Get branch | branch.read |
| PATCH | /api/v1/businesses/:businessId/branches/:branchId | Update branch | branch.manage |
| GET | /api/v1/businesses/:businessId/locations | List locations | location.read |
| POST | /api/v1/businesses/:businessId/locations | Create location | location.manage |
| GET | /api/v1/businesses/:businessId/locations/:locationId | Get location | location.read |
| PATCH | /api/v1/businesses/:businessId/locations/:locationId | Update location | location.manage |
| GET | /api/v1/businesses/:businessId/members | List members | member.read |
| POST | /api/v1/businesses/:businessId/members/:memberId/branch-assignments | Assign member branches | member.update |
Older paths kept for existing clients. Tax registrations, fiscal years, settings, invitations and member role changes are only available here today.
Access: Firebase ID token + business permission
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /api/v1/identity/login | Record a login and create the ManTech user profile on first sign-in | — |
| POST | /api/v1/identity/businesses | Create business | — |
| GET | /api/v1/identity/businesses | List my businesses | — |
| GET | /api/v1/identity/businesses/:businessId | Get business | business.read |
| PATCH | /api/v1/identity/businesses/:businessId | Update business | business.update |
| GET | /api/v1/identity/businesses/:businessId/branches | List branches | branch.read |
| POST | /api/v1/identity/businesses/:businessId/branches | Create branch | branch.manage |
| GET | /api/v1/identity/businesses/:businessId/branches/:branchId | Get branch | branch.read |
| PATCH | /api/v1/identity/businesses/:businessId/branches/:branchId | Update branch | branch.manage |
| POST | /api/v1/identity/businesses/:businessId/branches/:branchId/close | Close branch | branch.manage |
| GET | /api/v1/identity/businesses/:businessId/locations | List locations | location.read |
| POST | /api/v1/identity/businesses/:businessId/locations | Create location | location.manage |
| GET | /api/v1/identity/businesses/:businessId/locations/:locationId | Get location | location.read |
| PATCH | /api/v1/identity/businesses/:businessId/locations/:locationId | Update location | location.manage |
| GET | /api/v1/identity/businesses/:businessId/members | List members | member.read |
| POST | /api/v1/identity/businesses/:businessId/members/:memberId/branch-assignments | Assign member branches | member.update |
| GET | /api/v1/identity/businesses/:businessId/tax-registrations | List tax registrations | taxRegistration.read |
| POST | /api/v1/identity/businesses/:businessId/tax-registrations | Create tax registration | taxRegistration.manage |
| GET | /api/v1/identity/businesses/:businessId/tax-registrations/:registrationId | Get tax registration | taxRegistration.read |
| PATCH | /api/v1/identity/businesses/:businessId/tax-registrations/:registrationId | Update tax registration | taxRegistration.manage |
| GET | /api/v1/identity/businesses/:businessId/fiscal-years | List fiscal years | fiscalYear.read |
| POST | /api/v1/identity/businesses/:businessId/fiscal-years | Create fiscal year | fiscalYear.manage |
| GET | /api/v1/identity/businesses/:businessId/fiscal-years/current | Get current fiscal year | fiscalYear.read |
| PATCH | /api/v1/identity/businesses/:businessId/fiscal-years/:fiscalYearId | Update fiscal year | fiscalYear.manage |
| GET | /api/v1/identity/businesses/:businessId/settings | Get settings | settings.read |
| PATCH | /api/v1/identity/businesses/:businessId/settings | Update settings | settings.manage |
| GET | /api/v1/identity/businesses/:businessId/settings/resolved | Get resolved settings | settings.read |
| POST | /api/v1/identity/invitations | Invite member | member.invite |
| POST | /api/v1/identity/invitations/accept | Accept invitation | — |
| POST | /api/v1/identity/members/role | Change member role | member.update |
| POST | /api/v1/identity/members/authorization | Update membership authorization | member.update |
| POST | /api/v1/identity/members/suspend | Suspend member | member.update |
| POST | /api/v1/identity/members/remove | Remove member | member.remove |
| POST | /api/v1/identity/ownership/transfer | Transfer ownership | member.transfer_ownership |
| GET | /api/v1/identity/access/:businessId | Resolve the signed-in user's access in a business | — |
| POST | /api/v1/identity/entitlements | Grant entitlement | entitlement.manage |
Identity layer modelled on Zitadel: users, linked sign-in identities, sessions, organizations, projects, applications, project grants, service accounts and policies.
Access: Firebase ID token
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /api/v1/id/users | Create user | — |
| GET | /api/v1/id/users/me | Current ManTech user | — |
| GET | /api/v1/id/users/:userId | Get user | — |
| PATCH | /api/v1/id/users/:userId/profile | Update profile | — |
| POST | /api/v1/id/users/:userId/suspend | Suspend user | — |
| POST | /api/v1/id/users/:userId/activate | Activate user | — |
| POST | /api/v1/id/users/:userId/disable | Disable user | — |
| DELETE | /api/v1/id/users/:userId | Delete user | — |
| GET | /api/v1/id/users/:userId/identities | List identities | — |
| POST | /api/v1/id/users/:userId/identities/link | Link provider identity | — |
| POST | /api/v1/id/users/:userId/identities/:authIdentityId/unlink | Unlink provider identity | — |
| GET | /api/v1/id/sessions | List user sessions | — |
| DELETE | /api/v1/id/sessions/:sessionId | Revoke session | — |
| POST | /api/v1/id/sessions/revoke-all | Revoke all user sessions | — |
| GET | /api/v1/id/organizations | List organizations for user | — |
| GET | /api/v1/id/organizations/:orgId | Get an organization the user belongs to | — |
| GET | /api/v1/id/organizations/:orgId/members | List organization members | — |
| POST | /api/v1/id/organizations/:orgId/switch | Switch organization | — |
| POST | /api/v1/id/organizations/:orgId/status | Update organization status | — |
| POST | /api/v1/id/projects | Create project | — |
| GET | /api/v1/id/projects/:projectId | Get project | — |
| GET | /api/v1/id/organizations/:orgId/projects | List an organization's projects | — |
| POST | /api/v1/id/projects/:projectId/applications | Register an application under a project | — |
| GET | /api/v1/id/projects/:projectId/applications | List a project's applications | — |
| PATCH | /api/v1/id/applications/:appId/status | Activate or deactivate an application | — |
| POST | /api/v1/id/grants | Grant a project to another organization (project grant) | — |
| GET | /api/v1/id/grants/:grantId | Get grant | — |
| POST | /api/v1/id/grants/:grantId/revoke | Revoke a project grant | — |
| POST | /api/v1/id/grants/:grantId/assign | Assign a member to a project grant with roles | — |
| DELETE | /api/v1/id/grants/assignments/:assignmentId | Remove a member's grant assignment | — |
| POST | /api/v1/id/service-accounts | Create service account | — |
| GET | /api/v1/id/service-accounts/:saId | Get service account | — |
| GET | /api/v1/id/organizations/:orgId/service-accounts | List an organization's service accounts | — |
| POST | /api/v1/id/service-accounts/:saId/keys | Create a key for a service account | — |
| GET | /api/v1/id/service-accounts/:saId/keys | List a service account's keys | — |
| DELETE | /api/v1/id/service-accounts/:saId/keys/:keyId | Delete a service-account key | — |
| GET | /api/v1/id/policies | Get identity policies | — |
| PATCH | /api/v1/id/policies | Update identity policies | — |
One party master per business with relationship types, tax registrations, duplicate check and links to user accounts.
Access: Firebase ID token + party permission
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /api/v1/parties/dedupe/check | Check duplicates | party.read |
| POST | /api/v1/parties | Create party | party.create |
| GET | /api/v1/parties | List parties | party.read |
| GET | /api/v1/parties/:partyId | Get party | party.read |
| PATCH | /api/v1/parties/:partyId | Update party | party.update |
| POST | /api/v1/parties/:partyId/archive | Archive party | party.archive |
| GET | /api/v1/parties/:partyId/tax-registrations | List party tax registrations | party.read |
| POST | /api/v1/parties/:partyId/tax-registrations | Create party tax registration | party.update |
| PATCH | /api/v1/parties/:partyId/tax-registrations/:registrationId | Update party tax registration | party.update |
| POST | /api/v1/parties/:partyId/tax-registrations/:registrationId/archive | Archive party tax registration | party.update |
| GET | /api/v1/parties/:partyId/principal-links | List party principal links | party.read |
| POST | /api/v1/parties/:partyId/principal-links | Create party principal link | party.update |
| POST | /api/v1/parties/:partyId/principal-links/:linkId/revoke | Revoke party principal link | party.update |
Items, variants, categories, units, attributes, unit conversions, price books, external references, and Excel/CSV templates, import and export. Also served at /api/v1/catalog/* with the business in the x-business-id header.
Access: Firebase ID token + catalog permission
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /api/v1/businesses/:businessId/catalog/items | Create item | catalog.manage |
| GET | /api/v1/businesses/:businessId/catalog/items | List items | catalog.read |
| GET | /api/v1/businesses/:businessId/catalog/items/:itemId | Get item | catalog.read |
| PATCH | /api/v1/businesses/:businessId/catalog/items/:itemId | Update item | catalog.manage |
| POST | /api/v1/businesses/:businessId/catalog/items/:itemId/archive | Archive item | catalog.manage |
| POST | /api/v1/businesses/:businessId/catalog/categories | Create category | category.manage |
| GET | /api/v1/businesses/:businessId/catalog/categories | List categories | category.read |
| GET | /api/v1/businesses/:businessId/catalog/categories/:categoryId | Get category | category.read |
| PATCH | /api/v1/businesses/:businessId/catalog/categories/:categoryId | Update category | category.manage |
| POST | /api/v1/businesses/:businessId/catalog/categories/:categoryId/archive | Archive category | category.manage |
| POST | /api/v1/businesses/:businessId/catalog/uoms | Create unit | uom.manage |
| GET | /api/v1/businesses/:businessId/catalog/uoms | List units | uom.read |
| GET | /api/v1/businesses/:businessId/catalog/uoms/:uomId | Get unit | uom.read |
| POST | /api/v1/businesses/:businessId/catalog/items/:itemId/variants | Create variant | catalog.manage |
| GET | /api/v1/businesses/:businessId/catalog/items/:itemId/variants | List variants for item | catalog.read |
| GET | /api/v1/businesses/:businessId/catalog/variants/:variantId | Get variant | catalog.read |
| PATCH | /api/v1/businesses/:businessId/catalog/variants/:variantId | Update variant | catalog.manage |
| POST | /api/v1/businesses/:businessId/catalog/attributes | Create attribute | catalog.manage |
| GET | /api/v1/businesses/:businessId/catalog/attributes | List attributes | catalog.read |
| POST | /api/v1/businesses/:businessId/catalog/unit-conversions | Create unit conversion | uom.manage |
| GET | /api/v1/businesses/:businessId/catalog/unit-conversions | List unit conversions | uom.read |
| POST | /api/v1/businesses/:businessId/catalog/price-books | Create price book | catalog.manage |
| GET | /api/v1/businesses/:businessId/catalog/price-books | List price books | catalog.read |
| POST | /api/v1/businesses/:businessId/catalog/price-books/:priceBookId/entries | Add price book entry | catalog.manage |
| GET | /api/v1/businesses/:businessId/catalog/price-books/:priceBookId/entries | List price book entries | catalog.read |
| POST | /api/v1/businesses/:businessId/catalog/external-references | Save external reference | catalog.manage |
| GET | /api/v1/businesses/:businessId/catalog/external-references | List external references | catalog.read |
| GET | /api/v1/businesses/:businessId/catalog/templates/:type | Download an import template for an item type (?format=csv|xlsx) | — |
| POST | /api/v1/businesses/:businessId/catalog/imports/preview | Validate an import file and preview creates, updates and errors without saving. JSON body: fileBase64, fileName, importType, mode, mapping | catalog.manage |
| POST | /api/v1/businesses/:businessId/catalog/imports | Run an import job, optionally posting opening stock to stockLocationId (Idempotency-Key supported) | catalog.manage |
| GET | /api/v1/businesses/:businessId/catalog/exports | Export catalog items as CSV | catalog.read |
Stock balances, movements, transfers, adjustments and branch-level prices for a business.
Access: Firebase ID token + inventory permission
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| GET | /api/v1/businesses/:businessId/inventory/balances | Get stock balances | inventory.read |
| POST | /api/v1/businesses/:businessId/inventory/transfers | Transfer stock between locations (paired movements) | udhyami.inventory.adjust |
| POST | /api/v1/businesses/:businessId/inventory/adjustments | Adjust stock up or down with a reason (Idempotency-Key supported) | udhyami.inventory.adjust |
| POST | /api/v1/businesses/:businessId/inventory/branch-prices | Set an item's price for a branch | catalog.manage |
| GET | /api/v1/businesses/:businessId/inventory/branch-prices/:branchId/:itemId | Get an item's price for a branch | catalog.read |
| GET | /api/v1/businesses/:businessId/inventory/movements | List movements | inventory.read |
Stateless accounting checks: journal validation, trial balance and ageing buckets.
Access: Firebase ID token
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /api/v1/accounting/journal/validate | Validate journal entry | — |
| POST | /api/v1/accounting/trial-balance | Generate trial balance | — |
| POST | /api/v1/accounting/aging | Calculate aging buckets | — |
GST, HSN/SAC, IFSC, India finance, finance and business calculators for signed-in users.
Access: Firebase ID token
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /api/v1/gst/validate-gstin | Validate GSTIN | — |
| POST | /api/v1/gst/calculate | Calculate gst | — |
| GET | /api/v1/gst/states | GST state codes | — |
| GET | /api/v1/india-finance/operations | List India finance operations | — |
| POST | /api/v1/business/pricing | Calculate pricing | — |
| POST | /api/v1/business/discount | Calculate discount | — |
| POST | /api/v1/finance/emi | Calculate EMI | — |
| POST | /api/v1/finance/cagr | Calculate CAGR | — |
| POST | /api/v1/finance/ccc | Calculate working capital cycle | — |
| POST | /api/v1/finance/liquidity | Calculate liquidity ratios | — |
| POST | /api/v1/finance/dscr | Calculate DSCR | — |
| POST | /api/v1/finance/breakeven | Calculate break even | — |
| GET | /api/v1/ifsc/banks | List banks | — |
| GET | /api/v1/ifsc/search | Search | — |
| GET | /api/v1/ifsc/:code | Lookup | — |
Platform-level organizations and the applications registered under them.
Access: Firebase ID token
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /api/v1/platform-organizations | Create platform organization | — |
| GET | /api/v1/platform-organizations/:id | Get platform organization | — |
| POST | /api/v1/applications | Create application | — |
| GET | /api/v1/applications/:id | Get application | — |
| GET | /api/v1/applications | List applications | — |
| POST | /api/v1/applications/:applicationId/organizations | Create organization | — |
| GET | /api/v1/applications/:applicationId/organizations | List organizations for application | — |
| GET | /api/v1/applications/:applicationId/organizations/:organizationId | Get organization | — |
| GET | /api/v1/organizations/:organizationId/members | List organization members | — |
Developer organizations, applications, credentials, usage, API-product entitlements, business grants, platform admins and provider routing.
Access: Firebase ID token; admin routes need platform admin
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| GET | /api/v1/developer/providers | List external data providers (platform admin) | — |
| GET | /api/v1/developer/provider-routes | List provider routing rules (platform admin) | — |
| PATCH | /api/v1/developer/provider-routes/:id | Change a provider route (platform admin) | — |
| GET | /api/v1/developer/me | Developer profile with developer organizations | — |
| POST | /api/v1/developer/organizations | Create developer organization | — |
| GET | /api/v1/developer/organizations | List my developer organizations | — |
| GET | /api/v1/developer/organizations/:id | Get owned developer organization | — |
| POST | /api/v1/developer/organizations/:id/applications | Create developer application | — |
| GET | /api/v1/developer/organizations/:id/applications | List my developer applications | — |
| GET | /api/v1/developer/applications/:id | Get owned developer application | — |
| POST | /api/v1/developer/applications/:id/credentials | Issue credential | — |
| GET | /api/v1/developer/applications/:id/credentials | List credentials | — |
| POST | /api/v1/developer/credentials/:id/revoke | Revoke credential | — |
| GET | /api/v1/developer/applications/:id/usage | List usage | — |
| GET | /api/v1/developer/api-products | List API products available to developers | — |
| POST | /api/v1/developer/entitlements | Create entitlement | — |
| POST | /api/v1/developer/entitlements/status | Set entitlement status | — |
| GET | /api/v1/developer/applications/:id/entitlements | List entitlements for application | — |
| POST | /api/v1/developer/business-grants | Create business grant | — |
| POST | /api/v1/developer/platform-admins | Grant platform admin | — |
| POST | /api/v1/developer/platform-admins/:userId/revoke | Revoke platform admin | — |
Metered APIs for third-party applications: parties, GST, HSN/SAC, IFSC, India finance and a provider demo.
Access: Application credential + API entitlement; usage recorded
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| GET | /external/v1/india-finance/operations | List India finance operations | — |
| GET | /external/v1/ifsc/search | Search | — |
| GET | /external/v1/ifsc/:code | Lookup | — |
| POST | /external/v1/gst/validate-gstin | Validate GSTIN | — |
| POST | /external/v1/gst/calculate | Calculate gst | — |
| GET | /external/v1/gst/states | GST state codes | — |
| GET | /external/v1/parties | List parties of the business that granted this application access | — |
| GET | /external/v1/parties/:id | Get one party of the granting business | — |
| POST | /external/v1/verification/echo | Provider-routing demo: echoes through the configured provider with failover | — |
The same auth operations, reachable only from the website gateway with a Google-issued service identity (OIDC).
Access: Gateway service identity (OIDC)
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /external/v1/auth/signup | Create a ManTech account (email and password) | — |
| POST | /external/v1/auth/login | Sign in and receive ID and refresh tokens | — |
| POST | /external/v1/auth/refresh | Exchange a refresh token for a new ID token | — |
| POST | /external/v1/auth/password-reset | Send a password-reset email | — |
| POST | /external/v1/auth/logout | Sign out of all sessions | — |
Batteries, devices, telemetry, installations, service jobs, alerts, warranties, vehicles and asset access for a business, plus a signed-in owner's own assets under /api/v1/me/evolve.
Access: Firebase ID token + Evolve permission
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| GET | /api/v1/me/evolve/assets | List my Evolve assets | — |
| GET | /api/v1/me/evolve/vehicles | List my Evolve vehicles | — |
| GET | /api/v1/me/evolve/batteries | List my Evolve batteries | — |
| GET | /api/v1/me/evolve/batteries/:batteryId/telemetry | Telemetry for one of my batteries | — |
| GET | /api/v1/me/evolve/alerts | List my Evolve alerts | — |
| POST | /api/v1/businesses/:businessId/evolve/batteries | Create battery | — |
| GET | /api/v1/businesses/:businessId/evolve/batteries | List batteries | — |
| GET | /api/v1/businesses/:businessId/evolve/batteries/:batteryId | Get battery | — |
| GET | /api/v1/businesses/:businessId/evolve/batteries/:batteryId/telemetry | Get battery telemetry | — |
| GET | /api/v1/businesses/:businessId/evolve/batteries/:batteryId/telemetry/latest | Latest telemetry reading for a battery | — |
| GET | /api/v1/businesses/:businessId/evolve/batteries/:batteryId/telemetry/history | Telemetry history for a battery | — |
| POST | /api/v1/businesses/:businessId/evolve/batteries/:batteryId/access-grants | Create asset access grant | — |
| GET | /api/v1/businesses/:businessId/evolve/batteries/:batteryId/access-grants | List asset access grants | — |
| DELETE | /api/v1/businesses/:businessId/evolve/batteries/:batteryId/access-grants/:grantId | Revoke asset access grant | — |
| POST | /api/v1/businesses/:businessId/evolve/batteries/:batteryId/technician-assignments | Create battery technician assignment | — |
| GET | /api/v1/businesses/:businessId/evolve/batteries/:batteryId/technician-assignments | List battery technician assignments | — |
| DELETE | /api/v1/businesses/:businessId/evolve/batteries/:batteryId/technician-assignments/:assignmentId | Revoke battery technician assignment | — |
| PATCH | /api/v1/businesses/:businessId/evolve/batteries/:batteryId | Update battery | — |
| POST | /api/v1/businesses/:businessId/evolve/devices | Create device | — |
| GET | /api/v1/businesses/:businessId/evolve/devices | List devices | — |
| GET | /api/v1/businesses/:businessId/evolve/devices/:deviceId | Get device | — |
| PATCH | /api/v1/businesses/:businessId/evolve/devices/:deviceId | Update device | — |
| POST | /api/v1/businesses/:businessId/evolve/devices/:deviceId/credentials/provision | Provision a device credential | — |
| POST | /api/v1/businesses/:businessId/evolve/devices/:deviceId/claim-tokens | Issue a one-time claim token for a device | — |
| POST | /api/v1/businesses/:businessId/evolve/devices/:deviceId/claim | Claim a device with a claim token | — |
| POST | /api/v1/businesses/:businessId/evolve/devices/:deviceId/credentials/revoke | Revoke a device credential | — |
| POST | /api/v1/businesses/:businessId/evolve/devices/:deviceId/credentials/suspend | Suspend a device credential | — |
| POST | /api/v1/businesses/:businessId/evolve/devices/:deviceId/credentials/reprovision | Re-provision a device credential | — |
| GET | /api/v1/businesses/:businessId/evolve/devices/:deviceId/security | Device security and credential status | — |
| POST | /api/v1/businesses/:businessId/evolve/installations | Create installation | — |
| GET | /api/v1/businesses/:businessId/evolve/installations | List installations | — |
| GET | /api/v1/businesses/:businessId/evolve/installations/:installationId | Get installation | — |
| PATCH | /api/v1/businesses/:businessId/evolve/installations/:installationId | Update installation | — |
| POST | /api/v1/businesses/:businessId/evolve/service-jobs | Create service job | — |
| GET | /api/v1/businesses/:businessId/evolve/service-jobs | List service jobs | — |
| GET | /api/v1/businesses/:businessId/evolve/service-jobs/:serviceJobId | Get service job | — |
| PATCH | /api/v1/businesses/:businessId/evolve/service-jobs/:serviceJobId | Update service job | — |
| POST | /api/v1/businesses/:businessId/evolve/alerts | Create alert | — |
| GET | /api/v1/businesses/:businessId/evolve/alerts | List alerts | — |
| GET | /api/v1/businesses/:businessId/evolve/alerts/:alertId | Get alert | — |
| POST | /api/v1/businesses/:businessId/evolve/alerts/:alertId/acknowledge | Acknowledge alert | — |
| POST | /api/v1/businesses/:businessId/evolve/alerts/:alertId/resolve | Resolve alert | — |
| POST | /api/v1/businesses/:businessId/evolve/warranties | Create warranty | — |
| GET | /api/v1/businesses/:businessId/evolve/warranties | List warranties | — |
| GET | /api/v1/businesses/:businessId/evolve/warranties/:warrantyId | Get warranty | — |
| PATCH | /api/v1/businesses/:businessId/evolve/warranties/:warrantyId | Update warranty | — |
| POST | /api/v1/businesses/:businessId/evolve/vehicles | Create vehicle | — |
| GET | /api/v1/businesses/:businessId/evolve/vehicles | List vehicles | — |
| GET | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId | Get vehicle | — |
| POST | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/access-grants | Create asset access grant | — |
| GET | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/access-grants | List asset access grants | — |
| DELETE | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/access-grants/:grantId | Revoke asset access grant | — |
| PATCH | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId | Update vehicle | — |
| POST | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/devices | Assign device | — |
| GET | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/devices | List device assignments | — |
| POST | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/devices/:assignmentId/end | End device assignment | — |
| POST | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/batteries | Assign battery | — |
| GET | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/batteries | List battery assignments | — |
| POST | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/batteries/:assignmentId/end | End battery assignment | — |
| POST | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/owners | Assign an owner to a vehicle | — |
| GET | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/owners | List vehicle owners | — |
| POST | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/owners/:ownershipId/end | End a vehicle ownership | — |
| POST | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/organizations | Assign a vehicle to an organization | — |
| GET | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/organizations | List organizations linked to a vehicle | — |
| POST | /api/v1/businesses/:businessId/evolve/vehicles/:vehicleId/organizations/:assignmentId/end | End a vehicle–organization assignment | — |
Platform view of Evolve organizations, businesses, entitlements and audit.
Access: Firebase ID token (platform admin)
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| GET | /api/v1/evolve/me | Evolve context for the signed-in user | — |
| GET | /api/v1/evolve/platform/organizations | List Evolve organizations | — |
| GET | /api/v1/evolve/platform/businesses | List Evolve businesses | — |
| GET | /api/v1/evolve/platform/organizations/:businessId | Get an Evolve organization | — |
| GET | /api/v1/evolve/platform/businesses/:businessId | Get an Evolve business | — |
| GET | /api/v1/evolve/platform/entitlements | List Evolve entitlements | — |
| PATCH | /api/v1/evolve/platform/organizations/:businessId/entitlements | Change an organization's Evolve entitlements | — |
| PATCH | /api/v1/evolve/platform/businesses/:businessId/entitlement | Change a business's Evolve entitlement (singular alias) | — |
| PATCH | /api/v1/evolve/platform/businesses/:businessId/entitlements | Change a business's Evolve entitlements | — |
| GET | /api/v1/evolve/platform/audit | Evolve platform audit log | — |
Challenge-response login for battery devices, credential rotation, heartbeat and telemetry upload.
Access: Device credential / device token
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| POST | /api/v1/evolve/device-auth/challenge | Device asks for a signing challenge | — |
| POST | /api/v1/evolve/device-auth/token | Device exchanges a signed challenge for a short-lived token | — |
| POST | /api/v1/evolve/device-auth/rotate | Device rotates its credential with proof of the current one | — |
| GET | /api/v1/evolve/device-auth/heartbeat | Device heartbeat | — |
| POST | /api/v1/evolve/device-auth/telemetry | Device uploads BMS telemetry | — |
Liveness check.
Access: Public
| Method | Endpoint | What it does | Permission |
|---|---|---|---|
| GET | /health | Service liveness: status, service name and version | — |