{
  "info": {
    "name": "ServiceM8 REST API",
    "description": "ServiceM8 field service and job management REST API. Plain JSON over HTTP with GET, POST, and DELETE. Base URL: https://api.servicem8.com/api_1.0. Each object type is a .json collection (e.g. GET /company.json to list, GET /company/{uuid}.json to retrieve, POST /company.json to create, POST /company/{uuid}.json to update, DELETE /company/{uuid}.json to delete). Private integrations authenticate with the X-API-Key header; public add-ons use OAuth 2.0 Bearer tokens. Webhook subscription endpoints live at https://api.servicem8.com/webhook_subscriptions.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      { "key": "key", "value": "X-API-Key", "type": "string" },
      { "key": "value", "value": "{{apiKey}}", "type": "string" },
      { "key": "in", "value": "header", "type": "string" }
    ]
  },
  "variable": [
    { "key": "baseUrl", "value": "https://api.servicem8.com/api_1.0", "type": "string" },
    { "key": "rootUrl", "value": "https://api.servicem8.com", "type": "string" },
    { "key": "apiKey", "value": "", "type": "string" },
    { "key": "uuid", "value": "", "type": "string" }
  ],
  "item": [
    {
      "name": "Jobs",
      "item": [
        {
          "name": "List jobs",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/job.json", "host": ["{{baseUrl}}"], "path": ["job.json"] },
            "description": "Lists jobs. Supports $filter."
          }
        },
        {
          "name": "Create a job",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"company_uuid\": \"\",\n  \"status\": \"Quote\",\n  \"job_address\": \"\",\n  \"job_description\": \"\"\n}" },
            "url": { "raw": "{{baseUrl}}/job.json", "host": ["{{baseUrl}}"], "path": ["job.json"] },
            "description": "Creates a job. New record UUID returned in x-record-uuid header."
          }
        },
        {
          "name": "Retrieve a job",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/job/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["job", "{{uuid}}.json"] },
            "description": "Retrieves a single job by UUID."
          }
        },
        {
          "name": "Update a job",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"status\": \"Work Order\"\n}" },
            "url": { "raw": "{{baseUrl}}/job/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["job", "{{uuid}}.json"] },
            "description": "Updates a job by UUID (POST to the record URL)."
          }
        },
        {
          "name": "Delete a job",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{baseUrl}}/job/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["job", "{{uuid}}.json"] },
            "description": "Deletes a job by UUID."
          }
        }
      ]
    },
    {
      "name": "Job Activities",
      "item": [
        {
          "name": "List job activities",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/jobactivity.json", "host": ["{{baseUrl}}"], "path": ["jobactivity.json"] },
            "description": "Lists job activities (scheduled bookings and recorded time)."
          }
        },
        {
          "name": "Create a job activity",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"job_uuid\": \"\",\n  \"staff_uuid\": \"\",\n  \"start_date\": \"2026-07-10 09:00:00\",\n  \"end_date\": \"2026-07-10 11:00:00\"\n}" },
            "url": { "raw": "{{baseUrl}}/jobactivity.json", "host": ["{{baseUrl}}"], "path": ["jobactivity.json"] },
            "description": "Schedules a job activity for a staff member."
          }
        },
        {
          "name": "Retrieve a job activity",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/jobactivity/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["jobactivity", "{{uuid}}.json"] }
          }
        },
        {
          "name": "Update a job activity",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"end_date\": \"2026-07-10 12:00:00\"\n}" },
            "url": { "raw": "{{baseUrl}}/jobactivity/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["jobactivity", "{{uuid}}.json"] }
          }
        },
        {
          "name": "Delete a job activity",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{baseUrl}}/jobactivity/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["jobactivity", "{{uuid}}.json"] }
          }
        }
      ]
    },
    {
      "name": "Clients (Companies)",
      "item": [
        {
          "name": "List companies",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/company.json", "host": ["{{baseUrl}}"], "path": ["company.json"] },
            "description": "Lists client companies (UI: Clients/Customers)."
          }
        },
        {
          "name": "Create a company",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Acme Pty Ltd\",\n  \"email\": \"accounts@acme.example\"\n}" },
            "url": { "raw": "{{baseUrl}}/company.json", "host": ["{{baseUrl}}"], "path": ["company.json"] }
          }
        },
        {
          "name": "Retrieve a company",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/company/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["company", "{{uuid}}.json"] }
          }
        },
        {
          "name": "Update a company",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"email\": \"billing@acme.example\"\n}" },
            "url": { "raw": "{{baseUrl}}/company/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["company", "{{uuid}}.json"] }
          }
        },
        {
          "name": "Delete a company",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{baseUrl}}/company/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["company", "{{uuid}}.json"] }
          }
        },
        {
          "name": "List company contacts",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/companycontact.json", "host": ["{{baseUrl}}"], "path": ["companycontact.json"] }
          }
        },
        {
          "name": "Create a company contact",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"company_uuid\": \"\",\n  \"first\": \"Jane\",\n  \"last\": \"Doe\",\n  \"email\": \"jane@acme.example\"\n}" },
            "url": { "raw": "{{baseUrl}}/companycontact.json", "host": ["{{baseUrl}}"], "path": ["companycontact.json"] }
          }
        }
      ]
    },
    {
      "name": "Job Contacts",
      "item": [
        {
          "name": "List job contacts",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/jobcontact.json", "host": ["{{baseUrl}}"], "path": ["jobcontact.json"] }
          }
        },
        {
          "name": "Create a job contact",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"job_uuid\": \"\",\n  \"first\": \"John\",\n  \"last\": \"Smith\",\n  \"type\": \"JOB\"\n}" },
            "url": { "raw": "{{baseUrl}}/jobcontact.json", "host": ["{{baseUrl}}"], "path": ["jobcontact.json"] }
          }
        },
        {
          "name": "Retrieve a job contact",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/jobcontact/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["jobcontact", "{{uuid}}.json"] }
          }
        },
        {
          "name": "Delete a job contact",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{baseUrl}}/jobcontact/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["jobcontact", "{{uuid}}.json"] }
          }
        }
      ]
    },
    {
      "name": "Staff",
      "item": [
        {
          "name": "List staff",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/staff.json", "host": ["{{baseUrl}}"], "path": ["staff.json"] }
          }
        },
        {
          "name": "Retrieve a staff member",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/staff/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["staff", "{{uuid}}.json"] }
          }
        }
      ]
    },
    {
      "name": "Materials",
      "item": [
        {
          "name": "List materials",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/material.json", "host": ["{{baseUrl}}"], "path": ["material.json"] }
          }
        },
        {
          "name": "List job materials",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/jobmaterial.json", "host": ["{{baseUrl}}"], "path": ["jobmaterial.json"] }
          }
        },
        {
          "name": "Create a job material",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"job_uuid\": \"\",\n  \"name\": \"Callout Fee\",\n  \"quantity\": \"1\",\n  \"price\": \"120.00\"\n}" },
            "url": { "raw": "{{baseUrl}}/jobmaterial.json", "host": ["{{baseUrl}}"], "path": ["jobmaterial.json"] }
          }
        }
      ]
    },
    {
      "name": "Attachments",
      "item": [
        {
          "name": "List attachments",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/attachment.json", "host": ["{{baseUrl}}"], "path": ["attachment.json"] }
          }
        },
        {
          "name": "Create an attachment record",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"related_object\": \"job\",\n  \"related_object_uuid\": \"\",\n  \"attachment_name\": \"site-photo.jpg\",\n  \"file_type\": \".jpg\"\n}" },
            "url": { "raw": "{{baseUrl}}/attachment.json", "host": ["{{baseUrl}}"], "path": ["attachment.json"] },
            "description": "Creates the attachment record; upload bytes to /attachment/{uuid}.file."
          }
        },
        {
          "name": "Download attachment file",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/attachment/{{uuid}}.file", "host": ["{{baseUrl}}"], "path": ["attachment", "{{uuid}}.file"] }
          }
        }
      ]
    },
    {
      "name": "Queues",
      "item": [
        {
          "name": "List queues",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/queue.json", "host": ["{{baseUrl}}"], "path": ["queue.json"] }
          }
        },
        {
          "name": "Create a queue",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Scheduled\"\n}" },
            "url": { "raw": "{{baseUrl}}/queue.json", "host": ["{{baseUrl}}"], "path": ["queue.json"] }
          }
        }
      ]
    },
    {
      "name": "Vendors",
      "item": [
        {
          "name": "List vendors",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/vendor.json", "host": ["{{baseUrl}}"], "path": ["vendor.json"] },
            "description": "Returns the connected ServiceM8 account (vendor) record."
          }
        },
        {
          "name": "Retrieve a vendor",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/vendor/{{uuid}}.json", "host": ["{{baseUrl}}"], "path": ["vendor", "{{uuid}}.json"] }
          }
        }
      ]
    },
    {
      "name": "Badges",
      "item": [
        {
          "name": "List badges",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/badge.json", "host": ["{{baseUrl}}"], "path": ["badge.json"] }
          }
        },
        {
          "name": "Create a badge",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"VIP\",\n  \"colour\": \"#FF0000\"\n}" },
            "url": { "raw": "{{baseUrl}}/badge.json", "host": ["{{baseUrl}}"], "path": ["badge.json"] }
          }
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "List webhook subscriptions",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{rootUrl}}/webhook_subscriptions", "host": ["{{rootUrl}}"], "path": ["webhook_subscriptions"] }
          }
        },
        {
          "name": "Create an object webhook subscription",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"object\": \"job\",\n  \"fields\": \"status,queue_uuid\",\n  \"callback_url\": \"https://example.com/servicem8/webhook\"\n}" },
            "url": { "raw": "{{rootUrl}}/webhook_subscriptions", "host": ["{{rootUrl}}"], "path": ["webhook_subscriptions"] },
            "description": "Subscribe to field changes on an object; ServiceM8 POSTs object, changed fields, uuid, and resource_url to the callback."
          }
        },
        {
          "name": "Delete a webhook subscription",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{rootUrl}}/webhook_subscriptions/{{uuid}}", "host": ["{{rootUrl}}"], "path": ["webhook_subscriptions", "{{uuid}}"] }
          }
        }
      ]
    }
  ]
}
