REST Reference

OmniCore CRM API

API-first CRM backend for OmniCore CRM web, mobile, and third-party integrations.

Live OpenAPI JSON Deployment Guide Admin

Connection Primer

Base URL: https://omnicore.skymoonlabs.com/api/v1

Auth
Sanctum

Use /auth/login to obtain a bearer token for mobile apps and external clients.

Coverage
46 Paths

Installer, auth, dashboard, search, settings, notifications, payments, and all CRM modules are documented.

Package
v1.3.0

Buyer-facing docs and deployment notes stay aligned with the distributed build.

Filter Endpoints

Search the documented paths instantly.

Endpoints

GET Installer
/installer/status

Inspect runtime requirements, database driver, and install status

Public endpoint.
Response Example
{
    "data": {
        "database_connection": "mysql",
        "installed": true,
        "php_version": "8.2.13",
        "laravel_version": "12.x"
    }
}
POST Installer
/installer/run

Write installer settings, migrate the database, and optionally seed demo data

Public endpoint.
Request Example
{
    "app_name": "OmniCore CRM",
    "app_url": "http://localhost",
    "seed_demo": true,
    "database": {
        "driver": "mysql",
        "host": "127.0.0.1",
        "port": "3306",
        "database": "omnicore_crm",
        "username": "root",
        "password": ""
    },
    "admin": {
        "name": "OmniCore Admin",
        "email": "admin@omnicore.test",
        "password": "password",
        "phone": "+15550000001"
    }
}
Response Example
{
    "message": "Installation completed.",
    "data": {
        "installed": true
    }
}
POST Authentication
/auth/register

Register a new user and issue a Sanctum token

Public endpoint.
Request Example
{
    "name": "Jordan Miles",
    "email": "jordan@example.com",
    "password": "password",
    "password_confirmation": "password"
}
Response Example
{
    "message": "Registered.",
    "data": {
        "token": "1|sanctum-token-example",
        "user": {
            "id": 2,
            "name": "Jordan Miles",
            "email": "jordan@example.com"
        }
    }
}
POST Authentication
/auth/login

Authenticate and issue Sanctum token

Public endpoint.
Request Example
{
    "email": "admin@omnicore.test",
    "password": "password"
}
Response Example
{
    "message": "Authenticated.",
    "data": {
        "token": "1|sanctum-token-example",
        "user": {
            "id": 1,
            "name": "OmniCore Admin",
            "email": "admin@omnicore.test"
        }
    }
}
GET Authentication
/auth/me

Get the current authenticated user

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "name": "OmniCore Admin",
        "email": "admin@omnicore.test"
    }
}
POST Authentication
/auth/logout

Revoke the current user token

Requires Sanctum bearer token.
Response Example
{
    "message": "Logged out."
}
GET Dashboard
/dashboard

Return dashboard KPIs, revenue, pipeline, and workload insights

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "stats": [
            {
                "label": "Revenue",
                "value": "$42,800.00"
            },
            {
                "label": "Open Leads",
                "value": 18
            }
        ],
        "pipeline": [
            {
                "stage": "qualified",
                "total": 7
            }
        ]
    }
}
GET Utilities
/search

Search across CRM modules

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "results": [
            {
                "type": "lead",
                "title": "Skyline Labs",
                "url": "/admin/modules/leads"
            }
        ]
    }
}
GET Utilities
/calendar

Return task, milestone, and event calendar data

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "tasks": [
            {
                "title": "QA onboarding flow",
                "due_at": "2026-04-21T09:00:00Z"
            }
        ]
    }
}
GET Settings
/settings

Read system settings

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "app": {
            "name": "OmniCore CRM",
            "locale": "en"
        },
        "seo": {
            "pages": {
                "landing": {
                    "title": "OmniCore CRM"
                }
            }
        }
    }
}
PUT Settings
/settings

Update system settings

Requires Sanctum bearer token.
Request Example
{
    "app": {
        "name": "OmniCore CRM",
        "currency": "USD",
        "tax_percent": 18,
        "locale": "es",
        "supported_locales": [
            "en",
            "es"
        ]
    },
    "seo": {
        "pages": {
            "landing": {
                "alias": "crm",
                "title": "OmniCore CRM"
            },
            "docs_api": {
                "alias": "developer/api"
            }
        }
    },
    "notifications": {
        "email_driver": "sendgrid"
    },
    "payments": {
        "driver": "stripe"
    }
}
Response Example
{
    "message": "Settings updated successfully."
}
POST Settings
/settings/test-notification

Send email, SMS, or WhatsApp test message

Requires Sanctum bearer token.
Request Example
{
    "channel": "email",
    "to": "buyer@example.com",
    "subject": "OmniCore test",
    "message": "Hello from OmniCore CRM"
}
Response Example
{
    "message": "Notification test completed.",
    "data": {
        "channel": "email",
        "driver": "sendgrid",
        "status": "sent"
    }
}
GET Notifications
/notifications/templates

List reusable notification templates

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "key": "invoice_reminder_email",
            "channel": "email"
        }
    ]
}
GET Notifications
/notifications/deliveries

List notification delivery logs with retry state

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "channel": "email",
            "status": "queued"
        }
    ]
}
POST Notifications
/notifications/send

Send or queue a notification using inline content or a saved template

Requires Sanctum bearer token.
Request Example
{
    "channel": "email",
    "to": "buyer@example.com",
    "template_key": "invoice_reminder_email",
    "context": {
        "customer_name": "Aurora Studio",
        "invoice_number": "INV-00001"
    },
    "queue": true
}
Response Example
{
    "message": "Notification request accepted.",
    "data": {
        "status": "queued",
        "channel": "email",
        "driver": "sendgrid",
        "delivery_id": 1
    }
}
POST Notifications
/notifications/deliveries/{delivery}/retry

Queue a retry for a failed notification delivery

Requires Sanctum bearer token.
Response Example
{
    "message": "Notification retry queued.",
    "data": {
        "delivery_id": 1
    }
}
POST Payments
/payments/invoices/{invoice}/intent

Create invoice payment intent or mocked checkout

Requires Sanctum bearer token.
Request Example
{
    "success_url": "https://buyer.example.com/payments/success",
    "cancel_url": "https://buyer.example.com/payments/cancel"
}
Response Example
{
    "message": "Payment intent processed.",
    "data": {
        "driver": "stripe",
        "status": "pending",
        "checkout_url": "https://checkout.stripe.com/c/pay/cs_test_123"
    }
}
POST Payments
/payments/expenses/{expense}/pay

Record expense payment

Requires Sanctum bearer token.
Request Example
{
    "amount": 320,
    "reference": "EXP-PAID-0091"
}
Response Example
{
    "message": "Expense payment recorded."
}
POST Payments
/payments/transactions/{transaction}/refund

Refund a captured transaction and reopen invoice balance when applicable

Requires Sanctum bearer token.
Request Example
{
    "amount": 199.990000000000009094947017729282379150390625
}
Response Example
{
    "message": "Refund processed.",
    "data": {
        "driver": "stripe",
        "status": "refunded",
        "refund_reference": "re_123"
    }
}
POST Payments
/payments/webhooks/{driver}

Receive payment gateway webhooks and reconcile local transactions

Public endpoint.
Request Example
{
    "id": "pi_live_123",
    "status": "succeeded"
}
Response Example
{
    "message": "Webhook received.",
    "matched": true
}
POST Invoices
/invoices/{invoice}/pdf

Generate invoice PDF

Requires Sanctum bearer token.
Response Example
{
    "message": "Invoice PDF generated.",
    "data": {
        "url": "https://example.com/storage/invoices/inv-0001.pdf"
    }
}
GET Users
/users

List users

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 2,
            "name": "Alex Carter",
            "email": "alex@example.com",
            "job_title": "Sales Rep"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Users
/users

Create user

Requires Sanctum bearer token.
Request Example
{
    "name": "Alex Carter",
    "email": "alex@example.com",
    "job_title": "Sales Rep",
    "password": "password"
}
Response Example
{
    "message": "User created successfully.",
    "data": {
        "id": 2,
        "name": "Alex Carter",
        "email": "alex@example.com",
        "job_title": "Sales Rep"
    }
}
GET Users
/users/{id}

Show user

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 2,
        "name": "Alex Carter",
        "email": "alex@example.com",
        "job_title": "Sales Rep"
    }
}
PUT Users
/users/{id}

Update user

Requires Sanctum bearer token.
Request Example
{
    "name": "Alex Carter",
    "email": "alex@example.com",
    "job_title": "Sales Rep",
    "password": "password"
}
Response Example
{
    "message": "User updated successfully.",
    "data": {
        "id": 2,
        "name": "Alex Carter",
        "email": "alex@example.com",
        "job_title": "Sales Rep"
    }
}
DELETE Users
/users/{id}

Delete user

Requires Sanctum bearer token.
Response Example
{
    "message": "User deleted successfully."
}
GET Leads
/leads

List leads

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "first_name": "Jordan",
            "last_name": "Miles",
            "company": "Skyline Labs",
            "stage": "qualified"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Leads
/leads

Create lead

Requires Sanctum bearer token.
Request Example
{
    "first_name": "Jordan",
    "last_name": "Miles",
    "company": "Skyline Labs",
    "stage": "qualified",
    "estimated_value": 4200
}
Response Example
{
    "message": "Lead created successfully.",
    "data": {
        "id": 1,
        "first_name": "Jordan",
        "last_name": "Miles",
        "company": "Skyline Labs",
        "stage": "qualified"
    }
}
GET Leads
/leads/{id}

Show lead

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "first_name": "Jordan",
        "last_name": "Miles",
        "company": "Skyline Labs",
        "stage": "qualified"
    }
}
PUT Leads
/leads/{id}

Update lead

Requires Sanctum bearer token.
Request Example
{
    "first_name": "Jordan",
    "last_name": "Miles",
    "company": "Skyline Labs",
    "stage": "qualified",
    "estimated_value": 4200
}
Response Example
{
    "message": "Lead updated successfully.",
    "data": {
        "id": 1,
        "first_name": "Jordan",
        "last_name": "Miles",
        "company": "Skyline Labs",
        "stage": "qualified"
    }
}
DELETE Leads
/leads/{id}

Delete lead

Requires Sanctum bearer token.
Response Example
{
    "message": "Lead deleted successfully."
}
GET Customers
/customers

List customers

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "name": "Aurora Studio",
            "email": "hello@aurora.test",
            "status": "active"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Customers
/customers

Create customer

Requires Sanctum bearer token.
Request Example
{
    "name": "Aurora Studio",
    "email": "hello@aurora.test",
    "status": "active"
}
Response Example
{
    "message": "Customer created successfully.",
    "data": {
        "id": 1,
        "name": "Aurora Studio",
        "email": "hello@aurora.test",
        "status": "active"
    }
}
GET Customers
/customers/{id}

Show customer

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "name": "Aurora Studio",
        "email": "hello@aurora.test",
        "status": "active"
    }
}
PUT Customers
/customers/{id}

Update customer

Requires Sanctum bearer token.
Request Example
{
    "name": "Aurora Studio",
    "email": "hello@aurora.test",
    "status": "active"
}
Response Example
{
    "message": "Customer updated successfully.",
    "data": {
        "id": 1,
        "name": "Aurora Studio",
        "email": "hello@aurora.test",
        "status": "active"
    }
}
DELETE Customers
/customers/{id}

Delete customer

Requires Sanctum bearer token.
Response Example
{
    "message": "Customer deleted successfully."
}
GET Opportunities
/opportunities

List opportunities

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "name": "Aurora Expansion",
            "amount": 9200,
            "stage": "proposal"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Opportunities
/opportunities

Create opportunity

Requires Sanctum bearer token.
Request Example
{
    "name": "Aurora Expansion",
    "amount": 9200,
    "stage": "proposal"
}
Response Example
{
    "message": "Opportunity created successfully.",
    "data": {
        "id": 1,
        "name": "Aurora Expansion",
        "amount": 9200,
        "stage": "proposal"
    }
}
GET Opportunities
/opportunities/{id}

Show opportunity

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "name": "Aurora Expansion",
        "amount": 9200,
        "stage": "proposal"
    }
}
PUT Opportunities
/opportunities/{id}

Update opportunity

Requires Sanctum bearer token.
Request Example
{
    "name": "Aurora Expansion",
    "amount": 9200,
    "stage": "proposal"
}
Response Example
{
    "message": "Opportunity updated successfully.",
    "data": {
        "id": 1,
        "name": "Aurora Expansion",
        "amount": 9200,
        "stage": "proposal"
    }
}
DELETE Opportunities
/opportunities/{id}

Delete opportunity

Requires Sanctum bearer token.
Response Example
{
    "message": "Opportunity deleted successfully."
}
GET Projects
/projects

List projects

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "name": "Launch Retainer",
            "status": "active",
            "budget": 12000
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Projects
/projects

Create project

Requires Sanctum bearer token.
Request Example
{
    "name": "Launch Retainer",
    "status": "active",
    "budget": 12000
}
Response Example
{
    "message": "Project created successfully.",
    "data": {
        "id": 1,
        "name": "Launch Retainer",
        "status": "active",
        "budget": 12000
    }
}
GET Projects
/projects/{id}

Show project

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "name": "Launch Retainer",
        "status": "active",
        "budget": 12000
    }
}
PUT Projects
/projects/{id}

Update project

Requires Sanctum bearer token.
Request Example
{
    "name": "Launch Retainer",
    "status": "active",
    "budget": 12000
}
Response Example
{
    "message": "Project updated successfully.",
    "data": {
        "id": 1,
        "name": "Launch Retainer",
        "status": "active",
        "budget": 12000
    }
}
DELETE Projects
/projects/{id}

Delete project

Requires Sanctum bearer token.
Response Example
{
    "message": "Project deleted successfully."
}
GET Tasks
/tasks

List tasks

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "title": "QA onboarding flow",
            "status": "todo",
            "priority": "high"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Tasks
/tasks

Create task

Requires Sanctum bearer token.
Request Example
{
    "title": "QA onboarding flow",
    "status": "todo",
    "priority": "high"
}
Response Example
{
    "message": "Task created successfully.",
    "data": {
        "id": 1,
        "title": "QA onboarding flow",
        "status": "todo",
        "priority": "high"
    }
}
GET Tasks
/tasks/{id}

Show task

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "title": "QA onboarding flow",
        "status": "todo",
        "priority": "high"
    }
}
PUT Tasks
/tasks/{id}

Update task

Requires Sanctum bearer token.
Request Example
{
    "title": "QA onboarding flow",
    "status": "todo",
    "priority": "high"
}
Response Example
{
    "message": "Task updated successfully.",
    "data": {
        "id": 1,
        "title": "QA onboarding flow",
        "status": "todo",
        "priority": "high"
    }
}
DELETE Tasks
/tasks/{id}

Delete task

Requires Sanctum bearer token.
Response Example
{
    "message": "Task deleted successfully."
}
GET Invoices
/invoices

List invoices

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "invoice_number": "INV-00001",
            "status": "sent",
            "balance_due": 5900
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Invoices
/invoices

Create invoice

Requires Sanctum bearer token.
Request Example
{
    "customer_id": 1,
    "issue_date": "2026-04-19",
    "total": 5900,
    "balance_due": 5900
}
Response Example
{
    "message": "Invoice created successfully.",
    "data": {
        "id": 1,
        "invoice_number": "INV-00001",
        "status": "sent",
        "balance_due": 5900
    }
}
GET Invoices
/invoices/{id}

Show invoice

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "invoice_number": "INV-00001",
        "status": "sent",
        "balance_due": 5900
    }
}
PUT Invoices
/invoices/{id}

Update invoice

Requires Sanctum bearer token.
Request Example
{
    "customer_id": 1,
    "issue_date": "2026-04-19",
    "total": 5900,
    "balance_due": 5900
}
Response Example
{
    "message": "Invoice updated successfully.",
    "data": {
        "id": 1,
        "invoice_number": "INV-00001",
        "status": "sent",
        "balance_due": 5900
    }
}
DELETE Invoices
/invoices/{id}

Delete invoice

Requires Sanctum bearer token.
Response Example
{
    "message": "Invoice deleted successfully."
}
GET Estimates
/estimates

List estimates

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "estimate_number": "EST-00001",
            "status": "draft",
            "total": 7200
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Estimates
/estimates

Create estimate

Requires Sanctum bearer token.
Request Example
{
    "customer_id": 1,
    "issue_date": "2026-04-19",
    "total": 7200
}
Response Example
{
    "message": "Estimate created successfully.",
    "data": {
        "id": 1,
        "estimate_number": "EST-00001",
        "status": "draft",
        "total": 7200
    }
}
GET Estimates
/estimates/{id}

Show estimate

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "estimate_number": "EST-00001",
        "status": "draft",
        "total": 7200
    }
}
PUT Estimates
/estimates/{id}

Update estimate

Requires Sanctum bearer token.
Request Example
{
    "customer_id": 1,
    "issue_date": "2026-04-19",
    "total": 7200
}
Response Example
{
    "message": "Estimate updated successfully.",
    "data": {
        "id": 1,
        "estimate_number": "EST-00001",
        "status": "draft",
        "total": 7200
    }
}
DELETE Estimates
/estimates/{id}

Delete estimate

Requires Sanctum bearer token.
Response Example
{
    "message": "Estimate deleted successfully."
}
GET Expenses
/expenses

List expenses

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "vendor": "Adobe",
            "category": "Software",
            "amount": 89.9899999999999948840923025272786617279052734375
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Expenses
/expenses

Create expense

Requires Sanctum bearer token.
Request Example
{
    "vendor": "Adobe",
    "category": "Software",
    "amount": 89.9899999999999948840923025272786617279052734375,
    "expense_date": "2026-04-19"
}
Response Example
{
    "message": "Expense created successfully.",
    "data": {
        "id": 1,
        "vendor": "Adobe",
        "category": "Software",
        "amount": 89.9899999999999948840923025272786617279052734375
    }
}
GET Expenses
/expenses/{id}

Show expense

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "vendor": "Adobe",
        "category": "Software",
        "amount": 89.9899999999999948840923025272786617279052734375
    }
}
PUT Expenses
/expenses/{id}

Update expense

Requires Sanctum bearer token.
Request Example
{
    "vendor": "Adobe",
    "category": "Software",
    "amount": 89.9899999999999948840923025272786617279052734375,
    "expense_date": "2026-04-19"
}
Response Example
{
    "message": "Expense updated successfully.",
    "data": {
        "id": 1,
        "vendor": "Adobe",
        "category": "Software",
        "amount": 89.9899999999999948840923025272786617279052734375
    }
}
DELETE Expenses
/expenses/{id}

Delete expense

Requires Sanctum bearer token.
Response Example
{
    "message": "Expense deleted successfully."
}
GET Tickets
/tickets

List tickets

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "ticket_number": "TKT-00001",
            "subject": "Portal access issue",
            "status": "open"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Tickets
/tickets

Create ticket

Requires Sanctum bearer token.
Request Example
{
    "subject": "Portal access issue",
    "status": "open",
    "priority": "high"
}
Response Example
{
    "message": "Ticket created successfully.",
    "data": {
        "id": 1,
        "ticket_number": "TKT-00001",
        "subject": "Portal access issue",
        "status": "open"
    }
}
GET Tickets
/tickets/{id}

Show ticket

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "ticket_number": "TKT-00001",
        "subject": "Portal access issue",
        "status": "open"
    }
}
PUT Tickets
/tickets/{id}

Update ticket

Requires Sanctum bearer token.
Request Example
{
    "subject": "Portal access issue",
    "status": "open",
    "priority": "high"
}
Response Example
{
    "message": "Ticket updated successfully.",
    "data": {
        "id": 1,
        "ticket_number": "TKT-00001",
        "subject": "Portal access issue",
        "status": "open"
    }
}
DELETE Tickets
/tickets/{id}

Delete ticket

Requires Sanctum bearer token.
Response Example
{
    "message": "Ticket deleted successfully."
}
GET Notes
/notes

List notes

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "body": "Buyer requested revised terms."
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Notes
/notes

Create note

Requires Sanctum bearer token.
Request Example
{
    "noteable_type": "customer",
    "noteable_id": 1,
    "body": "Buyer requested revised terms."
}
Response Example
{
    "message": "Note created successfully.",
    "data": {
        "id": 1,
        "body": "Buyer requested revised terms."
    }
}
GET Notes
/notes/{id}

Show note

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "body": "Buyer requested revised terms."
    }
}
PUT Notes
/notes/{id}

Update note

Requires Sanctum bearer token.
Request Example
{
    "noteable_type": "customer",
    "noteable_id": 1,
    "body": "Buyer requested revised terms."
}
Response Example
{
    "message": "Note updated successfully.",
    "data": {
        "id": 1,
        "body": "Buyer requested revised terms."
    }
}
DELETE Notes
/notes/{id}

Delete note

Requires Sanctum bearer token.
Response Example
{
    "message": "Note deleted successfully."
}
GET Activities
/activities

List activities

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "action": "status_updated"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Activities
/activities

Create activity

Requires Sanctum bearer token.
Request Example
{
    "subject_type": "customer",
    "subject_id": 1,
    "action": "status_updated"
}
Response Example
{
    "message": "Activity created successfully.",
    "data": {
        "id": 1,
        "action": "status_updated"
    }
}
GET Activities
/activities/{id}

Show activity

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "action": "status_updated"
    }
}
PUT Activities
/activities/{id}

Update activity

Requires Sanctum bearer token.
Request Example
{
    "subject_type": "customer",
    "subject_id": 1,
    "action": "status_updated"
}
Response Example
{
    "message": "Activity updated successfully.",
    "data": {
        "id": 1,
        "action": "status_updated"
    }
}
DELETE Activities
/activities/{id}

Delete activity

Requires Sanctum bearer token.
Response Example
{
    "message": "Activity deleted successfully."
}
GET Files
/files

List files

Requires Sanctum bearer token.
Response Example
{
    "data": [
        {
            "id": 1,
            "name": "brief.pdf",
            "path": "customers/1/brief.pdf"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 15
    }
}
POST Files
/files

Create file

Requires Sanctum bearer token.
Request Example
{
    "fileable_type": "customer",
    "fileable_id": 1,
    "name": "brief.pdf"
}
Response Example
{
    "message": "File created successfully.",
    "data": {
        "id": 1,
        "name": "brief.pdf",
        "path": "customers/1/brief.pdf"
    }
}
GET Files
/files/{id}

Show file

Requires Sanctum bearer token.
Response Example
{
    "data": {
        "id": 1,
        "name": "brief.pdf",
        "path": "customers/1/brief.pdf"
    }
}
PUT Files
/files/{id}

Update file

Requires Sanctum bearer token.
Request Example
{
    "fileable_type": "customer",
    "fileable_id": 1,
    "name": "brief.pdf"
}
Response Example
{
    "message": "File updated successfully.",
    "data": {
        "id": 1,
        "name": "brief.pdf",
        "path": "customers/1/brief.pdf"
    }
}
DELETE Files
/files/{id}

Delete file

Requires Sanctum bearer token.
Response Example
{
    "message": "File deleted successfully."
}