{
  "info": {
    "name": "Nookal API",
    "description": "REST API for Nookal allied-health practice management software. Base URL: https://api.nookal.com/production/v2. Authenticated with an account-issued API key passed as the api_key parameter (query string for GET, form field for POST). Responses use a JSON envelope: {\"status\":\"success\"|\"failure\",\"data\":{...},\"details\":{...}}. Endpoint paths grounded in the Nookal API reference (https://api.nookal.com/dev); verify, getLocations, and getPatients confirmed live. Request bodies are modeled from the documented object reference.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "baseUrl", "value": "https://api.nookal.com/production/v2", "type": "string" },
    { "key": "apiKey", "value": "", "type": "string" }
  ],
  "item": [
    {
      "name": "Verification",
      "item": [
        {
          "name": "Verify API key",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/verify?api_key={{apiKey}}", "host": ["{{baseUrl}}"], "path": ["verify"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }] },
            "description": "Verifies that the supplied API key is valid and connected to a Nookal account. Confirmed live."
          }
        }
      ]
    },
    {
      "name": "Clinic",
      "item": [
        {
          "name": "Get locations",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getLocations?api_key={{apiKey}}", "host": ["{{baseUrl}}"], "path": ["getLocations"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }] },
            "description": "Retrieves the clinic locations for the account. Confirmed live."
          }
        },
        {
          "name": "Get practitioners",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getPractitioners?api_key={{apiKey}}", "host": ["{{baseUrl}}"], "path": ["getPractitioners"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }] },
            "description": "Retrieves the practitioners for the account."
          }
        },
        {
          "name": "Get appointment types",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getAppointmentTypes?api_key={{apiKey}}", "host": ["{{baseUrl}}"], "path": ["getAppointmentTypes"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }] },
            "description": "Retrieves the appointment types configured for the account."
          }
        },
        {
          "name": "Get class types",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getClassTypes?api_key={{apiKey}}", "host": ["{{baseUrl}}"], "path": ["getClassTypes"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }] },
            "description": "Retrieves the class types configured for the account."
          }
        },
        {
          "name": "Get stock list",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getStockList?api_key={{apiKey}}", "host": ["{{baseUrl}}"], "path": ["getStockList"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }] },
            "description": "Retrieves the stock/inventory items for the account."
          }
        }
      ]
    },
    {
      "name": "Patients",
      "item": [
        {
          "name": "Get patients",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getPatients?api_key={{apiKey}}&page=1&page_length=100", "host": ["{{baseUrl}}"], "path": ["getPatients"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }, { "key": "page", "value": "1" }, { "key": "page_length", "value": "100" }] },
            "description": "Lists patients in the account (paginated). Confirmed live."
          }
        },
        {
          "name": "Search patients",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/searchPatients?api_key={{apiKey}}&last_name=Smith&first_name=John&fuzzy_search=true", "host": ["{{baseUrl}}"], "path": ["searchPatients"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }, { "key": "last_name", "value": "Smith" }, { "key": "first_name", "value": "John" }, { "key": "fuzzy_search", "value": "true" }] },
            "description": "Searches patients by name, email + DOB, patient_id, or online_code."
          }
        },
        {
          "name": "Get cases for a patient",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getCases?api_key={{apiKey}}&patient_id=1", "host": ["{{baseUrl}}"], "path": ["getCases"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }, { "key": "patient_id", "value": "1" }] },
            "description": "Retrieves the cases for a patient."
          }
        },
        {
          "name": "Add a patient",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/x-www-form-urlencoded" }],
            "body": { "mode": "urlencoded", "urlencoded": [
              { "key": "api_key", "value": "{{apiKey}}" },
              { "key": "first_name", "value": "John" },
              { "key": "last_name", "value": "Smith" },
              { "key": "date_of_birth", "value": "1990-01-01" }
            ] },
            "url": { "raw": "{{baseUrl}}/addPatient", "host": ["{{baseUrl}}"], "path": ["addPatient"] },
            "description": "Creates a new patient record. first_name, last_name, and date_of_birth are required."
          }
        },
        {
          "name": "Get treatment notes for a patient",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getTreatmentNotes?api_key={{apiKey}}&patient_id=1", "host": ["{{baseUrl}}"], "path": ["getTreatmentNotes"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }, { "key": "patient_id", "value": "1" }] },
            "description": "Retrieves treatment notes for a patient."
          }
        },
        {
          "name": "Add a treatment note",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/x-www-form-urlencoded" }],
            "body": { "mode": "urlencoded", "urlencoded": [
              { "key": "api_key", "value": "{{apiKey}}" },
              { "key": "patient_id", "value": "1" },
              { "key": "case_id", "value": "1" },
              { "key": "practitioner_id", "value": "1" },
              { "key": "date", "value": "2026-07-12" },
              { "key": "notes", "value": "Patient reported improvement." }
            ] },
            "url": { "raw": "{{baseUrl}}/addTreatmentNote", "host": ["{{baseUrl}}"], "path": ["addTreatmentNote"] },
            "description": "Adds a treatment note to a patient case."
          }
        }
      ]
    },
    {
      "name": "Appointments",
      "item": [
        {
          "name": "Get appointments",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getAppointments?api_key={{apiKey}}&date_from=2026-07-01&date_to=2026-07-31", "host": ["{{baseUrl}}"], "path": ["getAppointments"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }, { "key": "date_from", "value": "2026-07-01" }, { "key": "date_to", "value": "2026-07-31" }] },
            "description": "Retrieves appointments, optionally filtered by date range, location, patient, or practitioner."
          }
        },
        {
          "name": "Get appointment availabilities",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getAppointmentAvailabilities?api_key={{apiKey}}&practitioner_id=1&date_from=2026-07-01&date_to=2026-07-07", "host": ["{{baseUrl}}"], "path": ["getAppointmentAvailabilities"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }, { "key": "practitioner_id", "value": "1" }, { "key": "date_from", "value": "2026-07-01" }, { "key": "date_to", "value": "2026-07-07" }] },
            "description": "Retrieves available appointment slots for a practitioner over a date range."
          }
        },
        {
          "name": "Add an appointment booking",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/x-www-form-urlencoded" }],
            "body": { "mode": "urlencoded", "urlencoded": [
              { "key": "api_key", "value": "{{apiKey}}" },
              { "key": "location_id", "value": "1" },
              { "key": "appointment_date", "value": "2026-07-15" },
              { "key": "start_time", "value": "09:00" },
              { "key": "patient_id", "value": "1" },
              { "key": "practitioner_id", "value": "1" },
              { "key": "appointment_type_id", "value": "1" }
            ] },
            "url": { "raw": "{{baseUrl}}/addAppointmentBooking", "host": ["{{baseUrl}}"], "path": ["addAppointmentBooking"] },
            "description": "Creates a new appointment booking."
          }
        },
        {
          "name": "Cancel an appointment",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/x-www-form-urlencoded" }],
            "body": { "mode": "urlencoded", "urlencoded": [
              { "key": "api_key", "value": "{{apiKey}}" },
              { "key": "appointment_id", "value": "1" },
              { "key": "patient_id", "value": "1" }
            ] },
            "url": { "raw": "{{baseUrl}}/cancelAppointment", "host": ["{{baseUrl}}"], "path": ["cancelAppointment"] },
            "description": "Cancels an existing appointment."
          }
        },
        {
          "name": "Get waiting list",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/getWaitingList?api_key={{apiKey}}", "host": ["{{baseUrl}}"], "path": ["getWaitingList"], "query": [{ "key": "api_key", "value": "{{apiKey}}" }] },
            "description": "Retrieves the appointment waiting list."
          }
        }
      ]
    },
    {
      "name": "Invoices",
      "item": [
        {
          "name": "Get invoices",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/x-www-form-urlencoded" }],
            "body": { "mode": "urlencoded", "urlencoded": [
              { "key": "api_key", "value": "{{apiKey}}" },
              { "key": "patient_id", "value": "1" }
            ] },
            "url": { "raw": "{{baseUrl}}/getInvoices", "host": ["{{baseUrl}}"], "path": ["getInvoices"] },
            "description": "Retrieves invoices, optionally filtered by patient."
          }
        },
        {
          "name": "Add an invoice",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/x-www-form-urlencoded" }],
            "body": { "mode": "urlencoded", "urlencoded": [
              { "key": "api_key", "value": "{{apiKey}}" },
              { "key": "location_id", "value": "1" },
              { "key": "patient_id", "value": "1" },
              { "key": "date", "value": "2026-07-12" }
            ] },
            "url": { "raw": "{{baseUrl}}/addInvoice", "host": ["{{baseUrl}}"], "path": ["addInvoice"] },
            "description": "Creates a new invoice for a patient at a location."
          }
        },
        {
          "name": "Add a payment to an invoice",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/x-www-form-urlencoded" }],
            "body": { "mode": "urlencoded", "urlencoded": [
              { "key": "api_key", "value": "{{apiKey}}" },
              { "key": "invoice_id", "value": "1" },
              { "key": "method", "value": "card" },
              { "key": "amount", "value": "89.00" },
              { "key": "date", "value": "2026-07-12" }
            ] },
            "url": { "raw": "{{baseUrl}}/addPaymentToInvoice", "host": ["{{baseUrl}}"], "path": ["addPaymentToInvoice"] },
            "description": "Records a payment against an invoice."
          }
        }
      ]
    }
  ]
}
