Endpoint Reference
Complete reference documentation for all MAFM API v1 endpoints.
Service Requests
Manage facility maintenance and service requests. Track work orders from submission through completion with support for comments, time logging, and activity tracking.
List all service requests with optional filtering and search.
Scope: service_requests:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (pending, in-progress, completed) |
priority |
string | Filter by priority (low, normal, high, urgent) |
assigned_to |
uuid | Filter by assigned user ID |
category |
string | Filter by request category |
created_after |
date | Filter requests created after date (ISO 8601) |
created_before |
date | Filter requests created before date (ISO 8601) |
search |
string | Search in title and description |
limit |
integer | Items per page (max 100, default 50) |
offset |
integer | Number of items to skip |
Response
{
"data": [
{
"id": "uuid",
"title": "Fix AC in Room 302",
"description": "Air conditioning unit not cooling properly",
"status": "pending",
"priority": "high",
"category": "HVAC",
"assigned_to": "uuid",
"created_by": "uuid",
"created_at": "2026-02-12T10:30:00Z",
"updated_at": "2026-02-12T10:30:00Z"
}
],
"meta": {
"total": 150,
"limit": 50,
"offset": 0,
"request_id": "req_abc123"
}
}
Example
curl -X GET "https://mafm.app/api/v1/service-requests?status=pending&priority=high" \
-H "Authorization: Bearer mafm_live_..." \
-H "Content-Type: application/json"
Create a new service request.
Scope: service_requests:writeRequest Body
{
"title": "Fix AC in Room 302", // required
"description": "AC not cooling",
"priority": "high", // low, normal, high, urgent
"category": "HVAC",
"assigned_to": "uuid",
"building_id": "uuid",
"floor": "3",
"room": "302"
}
Response
{
"data": {
"id": "uuid",
"title": "Fix AC in Room 302",
"status": "pending",
"created_at": "2026-02-12T10:30:00Z"
},
"meta": {
"request_id": "req_abc123"
}
}
Example
curl -X POST "https://mafm.app/api/v1/service-requests" \
-H "Authorization: Bearer mafm_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "Fix AC in Room 302",
"description": "AC not cooling properly",
"priority": "high",
"category": "HVAC"
}'
Retrieve a single service request by ID.
Scope: service_requests:readResponse
{
"data": {
"id": "uuid",
"title": "Fix AC in Room 302",
"description": "AC not cooling properly",
"status": "in-progress",
"priority": "high",
"created_at": "2026-02-12T10:30:00Z"
},
"meta": {
"request_id": "req_abc123"
}
}
Update an existing service request.
Scope: service_requests:writeRequest Body
{
"status": "in-progress",
"assigned_to": "uuid"
}
Response
{
"data": {
"id": "uuid",
"status": "in-progress",
"updated_at": "2026-02-12T11:00:00Z"
},
"meta": {
"request_id": "req_abc123"
}
}
Delete a service request.
Scope: service_requests:writeResponse
// No response body
List all comments for a service request.
Scope: service_requests:readAdd a comment to a service request.
Scope: service_requests:writeRequest Body
{
"comment": "Working on this now" // required
}
List users watching this service request.
Scope: service_requests:readAdd a watcher to the service request.
Scope: service_requests:writeRequest Body
{
"user_id": "uuid" // required
}
Remove a watcher from the service request.
Scope: service_requests:writeRequest Body
{
"user_id": "uuid" // required
}
List time logs for the service request.
Scope: service_requests:readLog time spent on the service request.
Scope: service_requests:writeRequest Body
{
"hours": 2.5,
"description": "Replaced AC filter and recharged coolant"
}
Get activity history for the service request (read-only).
Scope: service_requests:readResponse
{
"data": [
{
"id": "uuid",
"action": "status_changed",
"from_value": "pending",
"to_value": "in-progress",
"user_id": "uuid",
"created_at": "2026-02-12T11:00:00Z"
}
]
}
Move Requests
Manage office moves and relocations. Track move requests with the same sub-resources as service requests: comments, watchers, time logs, and activity.
List all move requests with filtering.
Scope: move_requests:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status |
priority |
string | Filter by priority |
assigned_to |
uuid | Filter by assigned user |
created_after |
date | Filter by creation date |
created_before |
date | Filter by creation date |
search |
string | Search in title and description |
Create a new move request.
Scope: move_requests:writeRequest Body
{
"title": "Move Sales Team to 5th Floor", // required
"description": "Relocate 10 workstations",
"priority": "normal",
"scheduled_date": "2026-02-20",
"from_location": "Building A, Floor 3",
"to_location": "Building A, Floor 5"
}
Get a single move request.
Scope: move_requests:readUpdate a move request.
Scope: move_requests:writeDelete a move request.
Scope: move_requests:write
Sub-resources: Move requests support the same nested endpoints as service requests:
/comments, /watchers, /time-logs, and /activity.
Inventory
Manage inventory items across multiple storage locations. Track stock levels, adjustments, and receive low-stock alerts.
List all inventory items.
Scope: inventory:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (active, inactive) |
category |
string | Filter by category |
location_id |
uuid | Filter by storage location |
low_stock |
boolean | Filter items below reorder point |
created_after |
date | Filter by creation date |
created_before |
date | Filter by creation date |
search |
string | Search in name, description, SKU |
Example
curl -X GET "https://mafm.app/api/v1/inventory?low_stock=true&category=supplies" \
-H "Authorization: Bearer mafm_live_..."
Create a new inventory item.
Scope: inventory:writeRequest Body
{
"name": "Office Paper A4",
"description": "White 80gsm printer paper",
"sku": "PPR-A4-80",
"category": "supplies",
"quantity": 500,
"unit": "sheets",
"reorder_point": 100,
"location_id": "uuid",
"unit_cost": 0.02
}
Get a single inventory item.
Scope: inventory:readUpdate an inventory item.
Scope: inventory:writeDelete an inventory item.
Scope: inventory:writeList stock adjustment history for an item.
Scope: inventory:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
type |
string | Filter by adjustment type (addition, removal, correction) |
created_after |
date | Filter by date |
created_before |
date | Filter by date |
Record a stock adjustment.
Scope: inventory:writeRequest Body
{
"type": "addition",
"quantity": 100,
"reason": "New shipment received",
"reference": "PO-2026-001"
}
Create multiple inventory items in one request.
Scope: inventory:writeRequest Body
{
"items": [
{
"name": "Item 1",
"sku": "ITM-001",
"quantity": 100
},
{
"name": "Item 2",
"sku": "ITM-002",
"quantity": 50
}
]
}
Procurement - Requisitions
Create and manage purchase requisitions. Requisitions are requests for purchasing items that need approval before becoming purchase orders.
List all purchase requisitions.
Scope: procurement:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (draft, pending, approved, rejected) |
requested_by |
uuid | Filter by requester |
created_after |
date | Filter by creation date |
created_before |
date | Filter by creation date |
search |
string | Search in title and description |
Response
{
"data": [
{
"id": "uuid",
"title": "Office Supplies Q1",
"status": "pending",
"requested_by": "uuid",
"line_items": [...],
"vendor": {...},
"total_amount": 1500.00,
"created_at": "2026-02-12T10:00:00Z"
}
]
}
Create a new requisition.
Scope: procurement:writeGet a single requisition.
Scope: procurement:readUpdate a requisition.
Scope: procurement:writeDelete a requisition.
Scope: procurement:writeProcurement - Purchase Orders
Manage purchase orders sent to vendors. Track order status from creation through fulfillment.
List all purchase orders.
Scope: procurement:readCreate a new purchase order.
Scope: procurement:writeGet a single purchase order.
Scope: procurement:readUpdate a purchase order.
Scope: procurement:writeDelete a purchase order.
Scope: procurement:writeProcurement - Receiving
Record receipt of goods and materials against purchase orders.
List all receiving records.
Scope: procurement:readCreate a new receiving record.
Scope: procurement:writeGet a single receiving record.
Scope: procurement:readUpdate a receiving record.
Scope: procurement:writeDelete a receiving record.
Scope: procurement:writeProcurement - Invoices
Manage vendor invoices and track payment status.
List all invoices.
Scope: procurement:readCreate a new invoice.
Scope: procurement:writeGet a single invoice.
Scope: procurement:readUpdate an invoice.
Scope: procurement:writeDelete an invoice.
Scope: procurement:writeProcurement - Inventory Transfers
Track inventory transfers between locations.
List all inventory transfers.
Scope: procurement:readCreate a new transfer.
Scope: procurement:writeGet a single transfer.
Scope: procurement:readUpdate a transfer.
Scope: procurement:writeDelete a transfer.
Scope: procurement:writeLeases
Manage property and equipment leases. Track lease terms, important dates, payment schedules, and associated documents.
List all leases with filtering.
Scope: leases:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (active, expired, terminated) |
lease_type |
string | Filter by type (property, equipment, vehicle) |
created_after |
date | Filter by creation date |
created_before |
date | Filter by creation date |
search |
string | Search in name, description, lessor, lessee |
Example
curl -X GET "https://mafm.app/api/v1/leases?status=active&lease_type=property" \
-H "Authorization: Bearer mafm_live_..."
Create a new lease.
Scope: leases:writeRequest Body
{
"name": "Main Office Lease",
"lease_type": "property",
"lessor": "ABC Properties LLC",
"lessee": "MAFM Corporation",
"start_date": "2026-01-01",
"end_date": "2031-01-01",
"monthly_payment": 12500.00,
"description": "5-year lease for main office space"
}
Example
curl -X POST "https://mafm.app/api/v1/leases" \
-H "Authorization: Bearer mafm_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Main Office Lease",
"lease_type": "property",
"lessor": "ABC Properties LLC",
"start_date": "2026-01-01",
"end_date": "2031-01-01",
"monthly_payment": 12500.00
}'
Get a single lease.
Scope: leases:readUpdate a lease.
Scope: leases:writeDelete a lease.
Scope: leases:writeList all document versions for a lease.
Scope: leases:readUpload a new lease document version.
Scope: leases:writeRequest Body
{
"version": "1.1",
"file_url": "https://storage.mafm.app/lease-docs/...",
"notes": "Updated payment terms"
}
List important dates for a lease.
Scope: leases:readAdd an important date to a lease.
Scope: leases:writeRequest Body
{
"date": "2026-11-01",
"type": "renewal_option",
"description": "Last day to exercise renewal option"
}
List payment schedules for a lease.
Scope: leases:readAdd a payment schedule entry.
Scope: leases:writeRequest Body
{
"due_date": "2026-03-01",
"amount": 12500.00,
"description": "March 2026 rent",
"status": "pending"
}
Get accounting summary for a lease (read-only).
Scope: leases:readResponse
{
"data": {
"total_paid": 150000.00,
"total_due": 750000.00,
"remaining_balance": 600000.00,
"next_payment_due": "2026-03-01",
"next_payment_amount": 12500.00
}
}
Fixed Assets
Track fixed assets including equipment, furniture, and vehicles. Manage maintenance schedules, warranties, documents, and asset transfers.
List all fixed assets.
Scope: assets:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (active, retired, disposed) |
category_id |
uuid | Filter by asset category |
location |
uuid | Filter by building ID |
assigned_to |
uuid | Filter by assigned user |
condition |
string | Filter by condition (excellent, good, fair, poor) |
created_after |
date | Filter by creation date |
search |
string | Search in asset_name, description, serial_number, model |
Create a new fixed asset.
Scope: assets:writeRequest Body
{
"asset_name": "Dell Latitude 5520 Laptop",
"description": "15-inch business laptop",
"serial_number": "DL5520-2026-001",
"model": "Latitude 5520",
"category_id": "uuid",
"purchase_date": "2026-02-01",
"purchase_price": 1200.00,
"condition": "excellent",
"building_id": "uuid",
"assigned_to": "uuid"
}
Get a single asset.
Scope: assets:readUpdate an asset.
Scope: assets:writeDelete an asset.
Scope: assets:writeList maintenance schedules and history.
Scope: assets:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (scheduled, completed, overdue) |
maintenance_type |
string | Filter by type (preventive, corrective, inspection) |
Schedule maintenance for an asset.
Scope: assets:writeRequest Body
{
"maintenance_type": "preventive",
"scheduled_date": "2026-08-01",
"description": "Annual hardware checkup",
"estimated_cost": 150.00
}
List warranties for an asset.
Scope: assets:readAdd a warranty record.
Scope: assets:writeRequest Body
{
"warranty_type": "manufacturer",
"start_date": "2026-02-01",
"end_date": "2029-02-01",
"provider": "Dell Inc.",
"coverage": "Parts and labor"
}
List documents for an asset.
Scope: assets:readUpload a document for an asset.
Scope: assets:writeList transfer history for an asset.
Scope: assets:readRecord an asset transfer.
Scope: assets:writeRequest Body
{
"from_location": "uuid",
"to_location": "uuid",
"from_user": "uuid",
"to_user": "uuid",
"transfer_date": "2026-02-15",
"reason": "Department reorganization"
}
Vendors
Manage vendor relationships, track invoices, and view purchase order history.
List all vendors.
Scope: vendors:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (active, inactive) |
vendor_type |
string | Filter by vendor type |
created_after |
date | Filter by creation date |
search |
string | Search in company_name, contact_name, email |
Create a new vendor.
Scope: vendors:writeRequest Body
{
"company_name": "ABC Office Supplies",
"contact_name": "John Smith",
"email": "john@abcoffice.com",
"phone": "+1-555-0100",
"vendor_type": "supplies",
"payment_terms": "Net 30",
"address": "123 Supply St, City, ST 12345"
}
Get a single vendor.
Scope: vendors:readUpdate a vendor.
Scope: vendors:writeDelete a vendor.
Scope: vendors:writeList invoices from a vendor.
Scope: vendors:readRecord a new invoice from a vendor.
Scope: vendors:writeList purchase orders sent to a vendor (read-only).
Scope: vendors:readDaily Checklists
Create and manage recurring daily checklists for routine tasks. Organize tasks into groups and track completion history.
List all checklists.
Scope: checklists:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (active, inactive) |
assigned_to |
uuid | Filter by assigned user |
created_after |
date | Filter by creation date |
created_before |
date | Filter by creation date |
search |
string | Search in name and description |
Create a new checklist template.
Scope: checklists:writeRequest Body
{
"name": "Morning Opening Procedures",
"description": "Daily checklist for facility opening",
"assigned_to": "uuid",
"recurrence": "daily"
}
Get a single checklist.
Scope: checklists:readUpdate a checklist.
Scope: checklists:writeDelete a checklist.
Scope: checklists:writeList all tasks in a checklist.
Scope: checklists:readAdd a task to a checklist.
Scope: checklists:writeRequest Body
{
"title": "Check all entry doors are unlocked",
"description": "Verify all main entrance doors",
"order": 1,
"group_id": "uuid"
}
Get a single task.
Scope: checklists:readUpdate a task.
Scope: checklists:writeDelete a task.
Scope: checklists:writeList task groups in a checklist.
Scope: checklists:readCreate a task group.
Scope: checklists:writeRequest Body
{
"name": "Security Checks",
"order": 1
}
List completion history for a checklist.
Scope: checklists:readMark a checklist as completed for a date.
Scope: checklists:writeRequest Body
{
"completion_date": "2026-02-12",
"completed_by": "uuid",
"notes": "All tasks completed successfully"
}
Time Clock
Track employee time entries with clock in/out records. Manage work locations and company-wide time tracking settings.
List all time clock records.
Scope: time_clock:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
user_id |
uuid | Filter by user |
type |
string | Filter by type (regular, overtime, break) |
date |
date | Filter by specific date |
created_after |
date | Filter by creation date |
created_before |
date | Filter by creation date |
search |
string | Search in notes |
Create a new time clock record.
Scope: time_clock:writeRequest Body
{
"user_id": "uuid",
"clock_in_time": "2026-02-12T08:00:00Z",
"clock_out_time": "2026-02-12T17:00:00Z",
"type": "regular",
"location_id": "uuid",
"notes": "Regular shift"
}
Get a single time clock record.
Scope: time_clock:readUpdate a time clock record (no deletion allowed).
Scope: time_clock:writeGet company time clock settings.
Scope: time_clock:readUpdate time clock settings.
Scope: time_clock:writeRequest Body
{
"require_location": true,
"allow_overtime": true,
"rounding_minutes": 15,
"grace_period_minutes": 5
}
List approved clock-in locations.
Scope: time_clock:readAdd a clock-in location.
Scope: time_clock:writeRequest Body
{
"name": "Main Office",
"address": "123 Main St, City, ST 12345",
"latitude": 40.7128,
"longitude": -74.0060,
"radius_meters": 100
}
Shipping
Track inbound and outbound shipments with carrier information and tracking numbers.
List all shipments.
Scope: shipping:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (pending, shipped, delivered) |
type |
string | Filter by type (inbound, outbound) |
tracking_number |
string | Search by tracking number |
created_after |
date | Filter by creation date |
search |
string | Search in description, tracking number, sender, recipient |
Create a new shipment record.
Scope: shipping:writeRequest Body
{
"type": "outbound",
"description": "Office supplies shipment",
"tracking_number": "1Z999AA10123456784",
"carrier": "UPS",
"sender": "MAFM Main Office",
"recipient": "Branch Office",
"weight_kg": 5.5,
"estimated_delivery": "2026-02-15"
}
Get a single shipment.
Scope: shipping:readUpdate a shipment.
Scope: shipping:writeDelete a shipment.
Scope: shipping:writeMailroom
Manage mailroom label templates and package scan events for shipping and receiving operations.
List all label templates.
Scope: shipping:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
label_size |
string | Filter by label size |
is_default |
boolean | Filter by default template flag |
search |
string | Search in template name |
Create a label template.
Scope: shipping:writeGet a single label template.
Scope: shipping:readUpdate a label template.
Scope: shipping:writeDelete a label template.
Scope: shipping:writeList package scan events.
Scope: shipping:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
scan_type |
string | Filter by scan type |
processing_status |
string | Filter by processing status |
tracking_number |
string | Filter by tracking number |
scanned_after |
date | Filter by scan date |
scanned_before |
date | Filter by scan date |
search |
string | Search in barcode, tracking number, and detected carrier |
Record a package scan event.
Scope: shipping:writeLocations
Manage buildings and areas within your facility network.
List all buildings.
Scope: locations:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
search |
string | Search in name, address, code |
limit |
integer | Items per page |
offset |
integer | Number of items to skip |
Create a new building.
Scope: locations:writeRequest Body
{
"name": "Main Office Building",
"code": "MAIN-01",
"address": "123 Business Ave, City, ST 12345",
"floors": 5,
"square_feet": 50000
}
Get a single building.
Scope: locations:readUpdate a building.
Scope: locations:writeDelete a building.
Scope: locations:writeList all areas within buildings (read-only).
Scope: locations:readPaint Manager
Track paint inventory and map paint colors to specific building locations.
List all paints.
Scope: paint:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
search |
string | Search in name, color_code, brand |
Create a new paint record.
Scope: paint:writeRequest Body
{
"name": "Eggshell White",
"color_code": "SW-7005",
"brand": "Sherwin Williams",
"finish": "eggshell",
"gallons_available": 15
}
Get a single paint record.
Scope: paint:readUpdate a paint record.
Scope: paint:writeDelete a paint record.
Scope: paint:writeList locations where this paint is used.
Scope: paint:readMap paint to a building location.
Scope: paint:writeRequest Body
{
"building_id": "uuid",
"floor": "3",
"room": "Conference Room A",
"surface_type": "walls",
"notes": "North and east walls only"
}
Get a single paint location mapping.
Scope: paint:readUpdate a paint location mapping.
Scope: paint:writeDelete a paint location mapping.
Scope: paint:writeButts in Seats
Manage desks and employee workspace assignments for space planning and occupancy analysis.
List all desks.
Scope: butts_in_seats:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
floor |
string | Filter by floor |
building_id |
uuid | Filter by building |
is_assigned |
boolean | Filter by assignment status |
Create a new desk.
Scope: butts_in_seats:writeGet a single desk.
Scope: butts_in_seats:readUpdate a desk.
Scope: butts_in_seats:writeDelete a desk.
Scope: butts_in_seats:writeList employee workspace records.
Scope: butts_in_seats:readCreate an employee workspace record.
Scope: butts_in_seats:writeDocuments
Centralized document repository for general file storage and management.
List all documents.
Scope: documents:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by processing_status |
category |
string | Filter by category |
file_type |
string | Filter by file type (pdf, docx, xlsx, etc.) |
created_after |
date | Filter by creation date |
created_before |
date | Filter by creation date |
search |
string | Search in title, description, file_name |
Upload a new document.
Scope: documents:writeRequest Body
{
"title": "Company Policy Handbook",
"description": "2026 edition",
"category": "policies",
"file_name": "handbook-2026.pdf",
"file_type": "pdf",
"file_url": "https://storage.mafm.app/docs/..."
}
Get a single document.
Scope: documents:readUpdate document metadata.
Scope: documents:writeDelete a document.
Scope: documents:writeHR Documents
Manage human resources documents including policies, handbooks, and employee acknowledgments.
List all HR documents.
Scope: hr:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status |
category |
string | Filter by category (policy, handbook, form) |
document_type |
string | Filter by document type |
created_after |
date | Filter by creation date |
search |
string | Search in title and description |
Create a new HR document.
Scope: hr:writeRequest Body
{
"title": "Employee Handbook 2026",
"category": "handbook",
"document_type": "policy",
"description": "Updated employee handbook",
"requires_acknowledgment": true,
"file_url": "https://storage.mafm.app/hr/..."
}
Get a single HR document.
Scope: hr:readUpdate an HR document.
Scope: hr:writeDelete an HR document.
Scope: hr:writeList document acknowledgments.
Scope: hr:readRecord a document acknowledgment.
Scope: hr:writeRequest Body
{
"document_id": "uuid",
"user_id": "uuid",
"acknowledged_at": "2026-02-12T10:00:00Z",
"ip_address": "192.168.1.100"
}
Training
Manage training programs, track employee completions, and create training assessments with questions.
List all training programs.
Scope: training:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (active, archived) |
category |
string | Filter by training_type |
created_after |
date | Filter by creation date |
search |
string | Search in title and description |
Create a new training program.
Scope: training:writeRequest Body
{
"title": "Safety Training 2026",
"description": "Annual workplace safety training",
"training_type": "safety",
"duration_minutes": 60,
"passing_score": 80,
"is_mandatory": true
}
Get a single training program.
Scope: training:readUpdate a training program.
Scope: training:writeDelete a training program.
Scope: training:writeList training completions.
Scope: training:readRecord a training completion.
Scope: training:writeRequest Body
{
"user_id": "uuid",
"completed_at": "2026-02-12T14:00:00Z",
"score": 85,
"passed": true
}
List training assessment questions.
Scope: training:readAdd a question to training assessment.
Scope: training:writeRequest Body
{
"question_text": "What is the first step in fire safety?",
"question_type": "multiple_choice",
"options": ["Call 911", "Pull alarm", "Evacuate", "Use extinguisher"],
"correct_answer": "Pull alarm",
"points": 5
}
Notes
Personal and shared notes system with categorization and pinning capabilities.
List all notes.
Scope: notes:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
category_id |
uuid | Filter by category |
is_pinned |
boolean | Filter by pinned status |
created_after |
date | Filter by creation date |
search |
string | Search in title and content |
Create a new note.
Scope: notes:writeRequest Body
{
"title": "Meeting Notes - Q1 Planning",
"content": "Discussed goals and budget for Q1...",
"category_id": "uuid",
"is_pinned": false,
"is_shared": true
}
Get a single note.
Scope: notes:readUpdate a note.
Scope: notes:writeDelete a note.
Scope: notes:writeList note categories.
Scope: notes:readCreate a note category.
Scope: notes:writeRequest Body
{
"name": "Meeting Notes",
"color": "#4A90E2"
}
Reminders
Set up reminders for tasks and events with optional recurrence and entity linking.
List all reminders.
Scope: reminders:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status (pending, completed, dismissed) |
recurrence |
string | Filter by recurrence (none, daily, weekly, monthly) |
linked_entity_type |
string | Filter by linked entity type |
due_before |
date | Filter reminders due before date |
due_after |
date | Filter reminders due after date |
search |
string | Search in title and description |
Create a new reminder.
Scope: reminders:writeRequest Body
{
"title": "Review monthly reports",
"description": "Review and approve monthly financial reports",
"due_date": "2026-03-01T09:00:00Z",
"recurrence": "monthly",
"linked_entity_type": "document",
"linked_entity_id": "uuid"
}
Get a single reminder.
Scope: reminders:readUpdate a reminder.
Scope: reminders:writeDelete a reminder.
Scope: reminders:writeUsers
View user profiles and information (read-only). User management is handled through the authentication system.
List all users in your company (read-only).
Scope: users:readQuery Parameters
| Parameter | Type | Description |
|---|---|---|
search |
string | Search in full_name and email |
limit |
integer | Items per page |
offset |
integer | Number of items to skip |
Response
{
"data": [
{
"id": "uuid",
"full_name": "John Doe",
"email": "john@mafm.app",
"avatar_url": "https://...",
"role": "manager",
"created_at": "2025-01-15T10:00:00Z"
}
]
}
Get a single user profile (read-only).
Scope: users:readCompanies
View company information (read-only). Company settings are managed through the admin dashboard.
List companies (read-only, limited to companies you have access to).
Scope: companies:readResponse
{
"data": [
{
"id": "uuid",
"name": "MAFM Corporation",
"slug": "mafm",
"created_at": "2024-01-01T00:00:00Z"
}
]
}
Get a single company (read-only).
Scope: companies:readDashboard Analytics
Server-side aggregated analytics for the role-based dashboard. Requires a logged-in user session; API tokens are not supported on this endpoint.
Get aggregated dashboard analytics for the active company.
Auth: User sessionQuery Parameters
| Parameter | Type | Description |
|---|---|---|
startDate |
date | Start of date range (optional) |
endDate |
date | End of date range (optional) |
mode |
string | Query mode: rpc or batch (default: rpc) |
AI Usage
Billing-ready AI usage and cost reporting per company. Requires a logged-in admin or executive session; API tokens are not supported on these endpoints.
Get per-feature AI usage and cost breakdown for a date range.
Auth: User session (admin/executive)Query Parameters
| Parameter | Type | Description |
|---|---|---|
start |
date | Start of billing period (defaults to first day of current month) |
end |
date | End of billing period (defaults to first day of next month) |
Trigger monthly AI usage aggregation.
Auth: User session (admin/executive)Request Body
{
"action": "aggregate",
"month": "2026-06-01"
}
Expected Packages (Public)
Public guest endpoints for expected package tracking. No authentication or API token is required; requests are rate limited per IP address.
Submit an expected package as a guest.
Auth: None (public)Request Body
{
"company_slug": "mafm",
"guest_name": "Jane Doe",
"guest_email": "jane@example.com",
"description": "New office chair",
"vendor_name": "Amazon",
"tracking_number": "1Z999AA10123456784",
"expected_date": "2026-07-10",
"quantity": 1,
"notes": "Deliver to reception"
}
Look up an expected package by its guest tracking token.
Auth: None (public)List a guest's expected packages by company and email.
Auth: None (public)Query Parameters
| Parameter | Type | Description |
|---|---|---|
company_slug |
string | Company identifier (required) |
email |
string | Guest email used when submitting packages (required) |