API Documentation

Complete guide for integrating with our public API

Authentication

All API requests require authentication using your organization's API token.

Header Authentication (Recommended)

Authorization: Bearer YOUR_API_TOKEN

Query Parameter

GET /api/v1/public/documents?api_token=YOUR_API_TOKEN

Documents API

GET /api/v1/public/documents

List all documents with pagination and filters

Parameters:

  • page - Page number (default: 1)
  • per_page - Items per page (default: 50, max: 100)
  • document_type - Filter by document type
  • status - Filter by status

GET /api/v1/public/documents/search

Search documents by query

Parameters:

  • q - Search query (required)

GET /api/v1/public/documents/:id

Get detailed information about a specific document

PATCH /api/v1/public/documents/:id

Update document with support for approve/reject/transition

Action Types:

  • approve - Approve the document
  • reject - Reject the document
  • transition - Change document status

Items API

GET /api/v1/public/items

List all items with pagination and filters

Parameters:

  • page - Page number (default: 1)
  • per_page - Items per page (default: 50, max: 100)
  • location_id - Filter by location UUID
  • category_id - Filter by category UUID
  • status - Filter by status (active, inactive)
  • rfid_tag - Filter by exact RFID tag

GET /api/v1/public/items/search

Search items across multiple fields

Parameters:

  • q or query - Search query (required)

GET /api/v1/public/items/:id

Get detailed information about a specific item

PATCH /api/v1/public/items/:id

Update item information

POST /api/v1/public/items/:id/update_image

Update item image (supports base64 or multipart upload)

Response Formats

Success Response

{
  "success": true,
  "data": {
    "id": "uuid-here",
    "name": "Item Name",
    "status": "active"
  },
  "meta": {
    "current_page": 1,
    "total_pages": 10,
    "total_count": 250
  }
}

Rate Limiting

API requests are limited per organization. Default limit is 1000 requests per hour.

When rate limit is exceeded, API will return 429 Too Many Requests

Code Examples

cURL

# List items
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://your-domain.com/api/v1/public/items"

# Search items
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  "https://your-domain.com/api/v1/public/items/search?q=laptop"

# Update item
curl -X PATCH \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Updated Name","quantity":25}' \
  "https://your-domain.com/api/v1/public/items/UUID"

JavaScript (Fetch)

const API_TOKEN = 'YOUR_API_TOKEN';
const BASE_URL = 'https://your-domain.com/api/v1/public';

// List items
async function listItems() {
  const response = await fetch(`${BASE_URL}/items`, {
    headers: {
      'Authorization': `Bearer ${API_TOKEN}`
    }
  });
  return await response.json();
}

// Search items
async function searchItems(query) {
  const response = await fetch(`${BASE_URL}/items/search?q=${encodeURIComponent(query)}`, {
    headers: {
      'Authorization': `Bearer ${API_TOKEN}`
    }
  });
  return await response.json();
}

Python

import requests

API_TOKEN = 'YOUR_API_TOKEN'
BASE_URL = 'https://your-domain.com/api/v1/public'

headers = {
    'Authorization': f'Bearer {API_TOKEN}'
}

# List items
response = requests.get(f'{BASE_URL}/items', headers=headers)
items = response.json()

# Search items
response = requests.get(f'{BASE_URL}/items/search?q=laptop', headers=headers)
search_results = response.json()

# Update item
data = {'name': 'Updated Name', 'quantity': 25}
response = requests.patch(f'{BASE_URL}/items/item_uuid', json=data, headers=headers)
updated_item = response.json()

Complete API Reference

For detailed API documentation including all endpoints, parameters, and response formats, please refer to the full API documentation file.