# ServeLume API v1

Base URL: https://app.servelume.com/api/v1

Bearer authentication and tenant permissions are enforced by Laravel. Office routes require an API-enabled plan. Never share tokens in public pages.

## GET /public/plans

List active public subscription plans and trial policy

Authentication: Public

Responses: 200, 429

## POST /auth/token

Issue an access token

Authentication: Public

Responses: 200, 422

## GET /auth/me

Current user and tenant

Authentication: Bearer token

Responses: 200, 401, 403

## POST /auth/logout

Revoke the current token

Authentication: Bearer token

Responses: 200

## GET /clients

List clients

Authentication: Bearer token

Responses: 200

## POST /clients

Create a client

Authentication: Bearer token

Responses: 201, 422

## GET /clients/{client}

Retrieve a client

Authentication: Bearer token

Responses: 200, 404

## GET /work-orders

List work orders

Authentication: Bearer token

Responses: 200

## GET /work-orders/{workOrder}

Retrieve a work order

Authentication: Bearer token

Responses: 200

## GET /estimates

List estimates

Authentication: Bearer token

Responses: 200

## GET /estimates/{estimate}

Retrieve an estimate

Authentication: Bearer token

Responses: 200

## GET /invoices

List invoices

Authentication: Bearer token

Responses: 200

## GET /invoices/{invoice}

Retrieve an invoice

Authentication: Bearer token

Responses: 200

## POST /requests

Create an inbound service request (lead)

Authentication: Bearer token

Responses: 201

## POST /me/jobs/{workOrder}/start-travel

Start travel to an assigned job

Authentication: Bearer token

Responses: 200, 401, 403, 404, 422, 429

## GET /me/jobs/{workOrder}/asset-services/commands/{commandId}

Reconcile an equipment service command

Authentication: Bearer token

Responses: 200, 403, 404, 429

## GET /me/jobs/{workOrder}/asset-services

List service records on an assigned job

Authentication: Bearer token

Responses: 200, 403, 404, 429

## POST /me/jobs/{workOrder}/asset-services

Record explicit equipment servicing

Authentication: Bearer token

Responses: 201, 403, 404, 409, 422, 429

## POST /me/jobs/{workOrder}/assets

Link property equipment to an assigned job

Authentication: Bearer token

Responses: 200, 403, 404, 409, 422, 429

## GET /me/jobs/{workOrder}/assets

List equipment linked to an assigned job

Authentication: Bearer token

Responses: 200, 403, 404, 429

## GET /me/jobs/{workOrder}/available-assets/{asset}

Resolve equipment label against an assigned job property

Authentication: Bearer token

Responses: 200, 403, 404, 429

## GET /me/jobs/{workOrder}/available-assets

Find equipment eligible for linking to an assigned job

Authentication: Bearer token

Responses: 200, 403, 404, 422, 429

## GET /me/jobs/{workOrder}/parts

List available inventory for an assigned job

Authentication: Bearer token

Responses: 200, 403, 404

## POST /me/jobs/{workOrder}/parts

Record inventory consumed on an assigned job

Authentication: Bearer token

Responses: 201, 403, 404, 409, 422, 429

## GET /me/jobs/{workOrder}/parts/commands/{commandId}

Reconcile a technician material command

Authentication: Bearer token

Responses: 200, 403, 404, 429

## POST /me/jobs/{workOrder}/parts/{usage}/returns

Return unused job parts to stock

Authentication: Bearer token

Responses: 200, 403, 404, 422, 429

## GET /me/jobs/{workOrder}/part-returns/commands/{commandId}

Check an uncertain parts return

Authentication: Bearer token

Responses: 200, 403, 404, 429