HPH Integrations APIv1 · Customer Testing
Customer Testing. Available to the Customer Testing group. Production is not available. Environment and onboarding details are provided directly, never in this documentation.
GetCompanyItemLaborHours

Get company item labor hours

Retrieve authorized labor hours for one through ten company catalog items using optional provider, method, and default-selection filters.

POST/v1/catalog/items/labor-hours

Request schema: CompanyItemLaborHoursBatchRequestV1
Success schema: CompanyItemLaborHoursBatchResponseV1
Documented HTTP statuses: 200, 400, 401, 403, 429, 503
Contract: company-item-content-batch-v1.openapi.json

Authorization

Current Enterprise authority is required. MCAA, PHCC, and future labor provider licenses are evaluated independently for the represented Company; a preference never grants a license.

Request guidance

Use selection all, item_defaults, or company_default. Provider and method filters are optional for all and item_defaults but are rejected for company_default, because callers cannot override the Company's configured preference.

Request fields

FieldTypePresenceConstraints
itemsarrayRequiredSee the versioned schema
labor_hours_filterLaborHoursFilterV1OptionalSee the versioned schema

Synthetic request example

{
  "items": [
    {
      "request_key": "line-1",
      "selector": {
        "hph_item_code": "012NI0018"
      }
    }
  ],
  "labor_hours_filter": {
    "provider": "MCAA",
    "method": "COMPONENT",
    "selection": "item_defaults"
  }
}

Idempotency and recovery

No idempotency key is used because this POST is read-only.

Response guidance

Each available item contains item_skey; hph_item_code is included only when current Company data restrictions permit it, and restricting that field does not deny the otherwise authorized response. The labor_hours collection contains no more than 256 complete entries per item and is never partially truncated. Unlicensed content is omitted with a notice, while a legitimate zero-hour value remains zero. Item-level outcomes are available, not_found_or_concealed, mapping_required, ambiguous, and temporarily_unavailable. There is no continuation cursor in v1.

Synthetic success example: Item default labor hours

{
  "contract_version": "v1",
  "results": [
    {
      "outcome": "available",
      "request_index": 0,
      "request_key": "line-1",
      "item": {
        "item_skey": "b0f01d82-b996-11e0-b635-00137268a1bf",
        "labor_hours": [
          {
            "hph_labor_code": "L-SYN-001",
            "provider": "MCAA",
            "method": "COMPONENT",
            "description": "Synthetic component installation",
            "hours": 0.57,
            "unit_of_measure": "HOUR",
            "effective_date": "2026-10-01",
            "is_default": true
          }
        ],
        "notices": []
      }
    }
  ]
}

Additional response examples

Legitimate zero-hour labor

{
  "contract_version": "v1",
  "results": [
    {
      "outcome": "available",
      "request_index": 0,
      "request_key": "line-1",
      "item": {
        "item_skey": "b0f01d82-b996-11e0-b635-00137268a1bf",
        "labor_hours": [
          {
            "hph_labor_code": "L-SYN-ZERO",
            "provider": "MCAA",
            "method": "COMPONENT",
            "description": "Synthetic zero-hour example",
            "hours": 0,
            "unit_of_measure": "HOUR",
            "effective_date": "2026-10-01",
            "is_default": true
          }
        ],
        "notices": []
      }
    }
  ]
}