Homebase360 API (1.0.0)

Download OpenAPI specification:

API for integration with Homebase360 customer and job management system

Get customers

Retrieves customer information based on search criteria. At least one query parameter (customerId, phone, or email) should be provided for targeted search, otherwise it might return an empty list or limited results.

Authorizations:
ApiKeyAuth
query Parameters
customerId
string

Specific customer ID to look for. If provided, other filters are ignored.

phone
string

Customer's mobile phone number (US/CA E.164 format, e.g. +13038286690). Searches based on phone.mobile.

email
string

Customer's email address. Searches if the email exists in the customer's email array.

limit
integer <= 100
Default: 25

Maximum number of results to return (max 100)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

Create a new customer

Creates a new customer. Requires at least firstName or lastName, and at least one contact method (a valid phone number in phone or a non-empty email in email).

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
firstName
string

Customer's first name. Required if lastName is not provided.

lastName
string

Customer's last name. Required if firstName is not provided.

object (Phone)

Phone numbers object. All phone numbers must be US/CA E.164 format (e.g. +13038286690). Empty strings are acceptable if number is not available. Only mobile, home, work, and additional keys are allowed.

email
Array of strings <email> [ items <email > ]

List of email addresses. At least one required if phone is not provided. Must be valid email formats.

address
Array of strings

List of physical addresses (optional).

notes
string

Additional notes about the customer (optional).

tags
Array of strings

Tags for categorization (optional).

notifications
boolean
Default: true

Whether the customer should receive notifications (optional, defaults to true).

Responses

Request samples

Content type
application/json
{
  • "firstName": "John",
  • "lastName": "Smith",
  • "phone": {
    },
  • "email": [
    ],
  • "address": [
    ],
  • "notes": "Prefers afternoon appointments",
  • "tags": [
    ],
  • "notifications": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Update an existing customer

Updates specific fields of an existing customer. Only provided fields are updated. displayName is updated automatically if firstName or lastName changes.

Authorizations:
ApiKeyAuth
path Parameters
customerId
required
string

ID of the customer to update

Request Body schema: application/json
required
firstName
string

Customer's first name.

lastName
string

Customer's last name.

object (Phone)

Phone numbers object. All phone numbers must be US/CA E.164 format (e.g. +13038286690). Empty strings are acceptable if number is not available. Only mobile, home, work, and additional keys are allowed.

email
Array of strings <email> [ items <email > ]

Complete list of desired email addresses. Must be valid email formats.

address
Array of strings

Complete list of desired physical addresses.

notes
string

New notes for the customer.

tags
Array of strings

Complete list of desired tags.

notifications
boolean

Update notification preference.

Responses

Request samples

Content type
application/json
{
  • "lastName": "Smith-Updated",
  • "phone": {
    },
  • "notes": "Updated notes via API",
  • "notifications": false,
  • "tags": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Get jobs/schedule

Retrieves jobs based on search criteria. If jobId is provided, returns that job. If startDate and/or endDate are provided, filters jobs where start time falls within the range (inclusive of start, inclusive of end). If no date parameters are given, defaults to returning jobs where the start time is on the current day (based on server time).

Authorizations:
ApiKeyAuth
query Parameters
jobId
string

Specific job ID to look for. If provided, date filters are ignored.

startDate
string <date-time>

Filter jobs starting on or after this date/time in ISO 8601 format (e.g. "2023-05-15T00:00:00Z"). Defaults to the start of the current day if omitted.

endDate
string <date-time>

Filter jobs starting on or before this date/time in ISO 8601 format (e.g. "2023-05-15T23:59:59Z"). If omitted and startDate is also omitted, defaults to the end of the current day.

limit
integer <= 100
Default: 50

Maximum number of results to return (max 100)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

Create a new job

Creates a new job associated with an existing customer. Requires customerId, start, end, and a non-empty lineItems array. end time must be after start time. Optionally accepts leadSource information.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
customerId
required
string

ID of the existing customer for this job. Must exist.

start
required
string <date-time>

Start date and time in ISO 8601 format. Must be before 'end'.

end
required
string <date-time>

End date and time in ISO 8601 format. Must be after 'start'.

required
Array of objects (LineItem) non-empty

List of items/services for the job. Must contain at least one item. See LineItem schema for item structure requirements.

note
string

Optional note for the job.

object (LeadSourceInput)

Optional object detailing the source of the job lead. Only one of online, direct, or other can be true. salesPerson cannot be set via the API.

Responses

Request samples

Content type
application/json
{
  • "customerId": "Ekk9AvDeDihAEU8CMT0W",
  • "start": "2024-08-15T14:30:00Z",
  • "end": "2024-08-15T16:30:00Z",
  • "lineItems": [
    ],
  • "note": "Please call customer 30 mins before arrival.",
  • "leadSource": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Update an existing job

Updates specific fields (start, end, note) of an existing job. Only provided fields are updated. If updating dates, end must remain after start.

Authorizations:
ApiKeyAuth
path Parameters
jobId
required
string

ID of the job to update

Request Body schema: application/json
required
start
string <date-time>

New start date and time in ISO 8601 format. Must be before the 'end' time (either existing or newly provided).

end
string <date-time>

New end date and time in ISO 8601 format. Must be after the 'start' time (either existing or newly provided).

note
string

New note for the job.

Responses

Request samples

Content type
application/json
Example
{
  • "start": "2024-08-15T15:00:00Z",
  • "end": "2024-08-15T17:00:00Z",
  • "note": "Customer requested a later time and confirmed via text."
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}