# Get all branches

Endpoint: GET /v1/{countryCode}/branches
Version: 0.0.1
Security: jwt-authorizer

## Path parameters:

  - `countryCode` (string, required)
    Enum: "au", "nz"

## Query parameters:

  - `expand` (array)
    Comma-separated list of optional sections to include in the response. Supported values: hours (facility accessibility hours), departments (sales departments with resolved trading hours, trading branches only).
    Enum: "hours", "departments"

  - `typeCodes` (array)
    Filter results to only include branches matching the specified branch type code(s). Multiple values are supported (e.g. typeCodes=W&typeCodes=B). If omitted, all branches are returned.

## Response 200 fields (application/json):

  - `branches` (array, required)
    List of branches matching the request criteria.

  - `branches.number` (string, required)
    Unique identifier for the branch.
    Example: "MEL01"

  - `branches.name` (string, required)
    Full trading name of the branch.
    Example: "Melbourne CBD"

  - `branches.shortName` (string, required)
    Abbreviated name of the branch.
    Example: "MEL"

  - `branches.identity` (object)
    Classification and trading status attributes that define what the branch is within the Enterprise hierarchy.

  - `branches.identity.type` (object)
    The classification type of the branch within the Enterprise hierarchy.

  - `branches.identity.type.id` (integer)
    Numeric identifier for the branch type.
    Example: 1

  - `branches.identity.type.code` (string)
    Short code for the branch type.
    Example: "B"

  - `branches.identity.type.description` (string)
    Human-readable description of the branch type.
    Example: "Branch"

  - `branches.identity.isTrading` (boolean)
    Whether this is a trading branch with associated sales departments.
    Example: true

  - `branches.contact` (object)
    Branch-level contact details representing the primary contact for the branch as an organisational unit.

  - `branches.contact.telephone` (string)
    Primary telephone number for the branch.
    Example: "03 9000 0000"

  - `branches.contact.fax` (string)
    Fax number for the branch.
    Example: "03 9000 0001"

  - `branches.contact.managerName` (string)
    Full name of the branch manager.
    Example: "Sarah Williams"

  - `branches.contact.primaryEmail` (string)
    Primary contact email address for the branch.
    Example: "mel01@reece.com.au"

  - `branches.location` (object, required)
    Physical location attributes of the branch.

  - `branches.location.address` (object)

  - `branches.location.address.line1` (string)
    Primary street address line.
    Example: "123 Main Street"

  - `branches.location.address.line2` (string)
    Secondary address line (unit, level, suite etc). Null if not applicable.
    Example: "Level 2"

  - `branches.location.address.suburb` (string)
    Suburb or locality name.
    Example: "Melbourne"

  - `branches.location.address.state` (string)
    State or territory code.
    Example: "VIC"

  - `branches.location.address.postCode` (string)
    Postal code.
    Example: "3000"

  - `branches.location.address.countryCode` (string)
    ISO 3166-1 alpha-2 country code.
    Example: "AU"

  - `branches.location.latitude` (number)
    Geographic latitude in decimal degrees (WGS84).
    Example: -37.8136

  - `branches.location.longitude` (number)
    Geographic longitude in decimal degrees (WGS84).
    Example: 144.9631

  - `branches.location.timeZone` (string)
    IANA time zone identifier for the branch location.
    Example: "Australia/Melbourne"

  - `branches.location.region` (string)
    Geographical region classification.
    Example: "Metro"

  - `branches.hours` (array)
    Facility accessibility hours for this branch. Returned only when expand=hours is requested.

  - `branches.hours.days` (array, required)
    The days of the week to which this time range applies.
    Enum: "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"

  - `branches.hours.open` (string, required)
    Opening time as RFC 3339 partial-time with explicit UTC offset (HH:mm:ss±HH:mm).
    Example: "07:00:00+10:00"

  - `branches.hours.close` (string, required)
    Closing time as RFC 3339 partial-time with explicit UTC offset (HH:mm:ss±HH:mm).
    Example: "17:00:00+10:00"

  - `branches.departments` (array)
    Sales departments for this branch. Returned only when expand=departments is requested.

  - `branches.departments.code` (string, required)
    Stable identifier for the department type. Known values: TRADE, SHOWROOM.
    Example: "TRADE"

  - `branches.departments.name` (string, required)
    Human-readable department name.
    Example: "Trade Counter"

  - `branches.departments.telephone` (string)
    Direct telephone number for this department, if configured.
    Example: "03 9000 0000"

  - `branches.departments.email` (string)
    Contact email address for this department, if configured.
    Example: "mel01.trade@reece.com.au"

  - `branches.departments.hours` (array, required)
    Resolved trading hours for this department, grouped by time range.

## Response 400 fields (application/json):

  - `errorCode` (string, required)
    Stable machine-readable error identifier (UPPERCASE_WITH_UNDERSCORES).
    Example: "RESOURCE_NOT_FOUND"

  - `message` (string, required)
    Human-readable error description.
    Example: "The requested resource was not found."

  - `timestamp` (string)
    Time at which the error occurred (ISO 8601).
    Example: "2026-06-04T10:15:30Z"

  - `status` (integer)
    HTTP status code.
    Example: 404

  - `instance` (string)
    The request path or resource identifier that triggered the error.
    Example: "/v1/au/branches/MEL01"

  - `details` (array, required)
    Structured validation error details (populated for 400 responses).

  - `details.field` (string)
    The field that failed validation.
    Example: "typeCodes"

  - `details.issue` (string)
    Description of the validation failure.
    Example: "Invalid branch type code value."

## Response 401 fields (application/json):

  - `errorCode` (string, required)
    Stable machine-readable error identifier (UPPERCASE_WITH_UNDERSCORES).
    Example: "RESOURCE_NOT_FOUND"

  - `message` (string, required)
    Human-readable error description.
    Example: "The requested resource was not found."

  - `timestamp` (string)
    Time at which the error occurred (ISO 8601).
    Example: "2026-06-04T10:15:30Z"

  - `status` (integer)
    HTTP status code.
    Example: 404

  - `instance` (string)
    The request path or resource identifier that triggered the error.
    Example: "/v1/au/branches/MEL01"

  - `details` (array)
    Structured validation error details (populated for 400 responses).


