Fixture Tracking
Tracks capture status and quality gates for all endpoint fixtures in tests/fixtures/.
Constitution: v2.3.0, Principles I–V Quality Gates: G1 (Model Fidelity), G2 (Fixture Status), G3 (Test Quality), G4 (Doc Accuracy), G5 (Param Routing), G6 (Request Quality) Rule: Status is “complete” only when ALL applicable gates pass.
Summary
Total endpoints: 231
Complete (all gates pass): 38
G1 Model Fidelity: 71/231 pass
G2 Fixture Status: 75/231 pass
G3 Test Quality: 139/231 pass
G4 Doc Accuracy: 157/231 pass
G5 Param Routing: 216/231 pass
G6 Request Quality: 223/231 pass
Status Legend
complete: All applicable quality gates pass
incomplete: One or more gates fail
PASS/FAIL: Per-gate status
ACPortal Endpoints
Endpoint Path |
Method |
Req Model |
Resp Model |
G1 |
G2 |
G3 |
G4 |
G5 |
G6 |
Status |
Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|
/companies/{id} |
GET |
— |
CompanySimple |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/companies/{companyId}/details |
GET |
— |
CompanyDetails |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
HTTP 500 on staging — needs company UUID with populated details |
/companies/{companyId}/fulldetails |
GET |
— |
CompanyDetails |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/companies/{companyId}/fulldetails |
PUT |
CompanyDetails |
CompanyDetails |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
Needs valid CompanyDetails kwargs |
/companies/fulldetails |
POST |
CompanyDetails |
str |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
Needs valid CompanyDetails kwargs for new company |
/companies/search/v2 |
POST |
CompanySearchRequest |
List[SearchCompanyResponse] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
Request fixture captured; response needs valid search that returns results |
/companies/list |
POST |
ListRequest |
List[CompanySimple] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
Needs valid ListRequest kwargs |
/companies/availableByCurrentUser |
GET |
— |
List[CompanySimple] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/contacts/user |
GET |
— |
ContactSimple |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/contacts/{contactId}/primarydetails |
GET |
— |
ContactPrimaryDetails |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/contacts/{contactId}/editdetails |
GET |
— |
ContactDetailedInfo |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
HTTP 500 on staging — was previously captured but now fails |
/contacts/v2/search |
POST |
ContactSearchRequest |
List[SearchContactEntityResult] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
HTTP 400 — needs PageSize (1-32767) and PageNumber (1-32767) in request body |
/documents |
GET |
— |
Document |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
HTTP 500 on staging — was previously captured but now fails |
/address/isvalid |
GET |
— |
AddressIsValidResult |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-14, staging |
/address/propertytype |
GET |
— |
int |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
Query params: needs valid address1, city, state, zip_code for a real address |
/lookup/contactTypes |
GET |
— |
List[ContactTypeEntity] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/lookup/countries |
GET |
— |
List[CountryCodeDto] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/lookup/jobStatuses |
GET |
— |
List[JobStatus] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/lookup/items |
GET |
— |
List[LookupItem] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
Returns 204 — research ABConnectTools for required query params |
/users/list |
POST |
ListRequest |
List[User] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging. Model warning: response is paginated wrapper (totalCount, data) |
/users/roles |
GET |
— |
List[str] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
Fixed — route uses List[str]; API returns plain strings, not UserRole objects |
/job/{jobDisplayId} |
GET |
— |
Job |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
HTTP 500 on staging |
/job/{jobDisplayId}/price |
GET |
— |
JobPrice |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/job/{jobDisplayId}/calendaritems |
GET |
— |
List[CalendarItem] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/job/{jobDisplayId}/updatePageConfig |
GET |
— |
JobUpdatePageConfig |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/job/search |
GET |
— |
JobSearchResult |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
HTTP 404 on staging |
/job/{jobDisplayId}/timeline |
GET |
— |
TimelineResponse |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
Needs job ID with active timeline |
/job/{jobDisplayId}/timeline/{taskCode}/agent |
GET |
— |
TimelineAgent |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
Needs job ID + task code |
/job/{jobDisplayId}/tracking |
GET |
— |
TrackingInfo |
FAIL |
PASS |
PASS |
PASS |
PASS |
PASS |
incomplete |
Works but no fixture_file set in example |
/v3/job/{jobDisplayId}/tracking/{historyAmount} |
GET |
— |
TrackingInfoV3 |
FAIL |
PASS |
PASS |
PASS |
PASS |
PASS |
incomplete |
Works but no fixture_file set in example |
/job/{jobDisplayId}/payment |
GET |
— |
PaymentInfo |
FAIL |
FAIL |
PASS |
FAIL |
FAIL |
PASS |
incomplete |
Works but no fixture_file set in example |
/job/{jobDisplayId}/payment/sources |
GET |
— |
List[PaymentSource] |
FAIL |
FAIL |
PASS |
FAIL |
PASS |
PASS |
incomplete |
Works but no fixture_file set in example |
/job/{jobDisplayId}/payment/ACHPaymentSession |
POST |
ACHSessionRequest |
ACHSessionResponse |
FAIL |
FAIL |
PASS |
FAIL |
PASS |
PASS |
incomplete |
Needs ACH session params |
/job/{jobDisplayId}/note |
GET |
— |
List[JobNote] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
Model bug — id field typed as str but API returns int |
/job/{jobDisplayId}/parcelitems |
GET |
— |
List[ParcelItem] |
FAIL |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
Returns empty list — needs job with parcel items |
/job/{jobDisplayId}/parcel-items-with-materials |
GET |
— |
List[ParcelItemWithMaterials] |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
Returns empty list — needs job with packed items |
/job/{jobDisplayId}/packagingcontainers |
GET |
— |
List[PackagingContainer] |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
Model has warning fields — works but model incomplete |
/job/{jobDisplayId}/shipment/ratequotes |
GET |
— |
List[RateQuote] |
PASS |
PASS |
PASS |
FAIL |
FAIL |
PASS |
incomplete |
2026-02-14, staging |
/job/{jobDisplayId}/shipment/accessorials |
GET |
— |
List[Accessorial] |
PASS |
PASS |
PASS |
FAIL |
PASS |
PASS |
incomplete |
2026-02-14, staging |
/job/{jobDisplayId}/shipment/origindestination |
GET |
— |
ShipmentOriginDestination |
PASS |
PASS |
PASS |
FAIL |
PASS |
PASS |
incomplete |
2026-02-14, staging |
/job/{jobDisplayId}/shipment/ratesstate |
GET |
— |
RatesState |
PASS |
PASS |
PASS |
FAIL |
PASS |
PASS |
incomplete |
2026-02-14, staging |
/shipment |
GET |
— |
ShipmentInfo |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-14, staging |
/shipment/accessorials |
GET |
— |
List[GlobalAccessorial] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-14, staging |
/job/{jobDisplayId}/form/shipments |
GET |
— |
List[FormsShipmentPlan] |
PASS |
PASS |
PASS |
FAIL |
PASS |
PASS |
incomplete |
2026-02-14, staging |
/autoprice/quickquote |
POST |
QuoteRequestModel |
QuickQuoteResponse |
PASS |
PASS |
PASS |
PASS |
PASS |
FAIL |
incomplete |
Request model validation error — field names don’t match (originZip vs OriginZip) |
/AutoPrice/QuoteRequest |
POST |
QuoteRequestModel |
QuoteRequestResponse |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
Needs items array with weight, class fields and valid origin/destination |
/rfq/{rfqId} |
GET |
— |
QuoteRequestDisplayInfo |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 — run examples/rfq.py |
/rfq/forjob/{jobId} |
GET |
— |
List[QuoteRequestDisplayInfo] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/rfq/{rfqId}/accept |
POST |
AcceptModel |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 — mutating |
/rfq/{rfqId}/decline |
POST |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 — mutating |
/rfq/{rfqId}/cancel |
POST |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 — mutating |
/rfq/{rfqId}/acceptwinner |
POST |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 — mutating |
/rfq/{rfqId}/comment |
POST |
AcceptModel |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/rfq |
GET |
— |
List[QuoteRequestDisplayInfo] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/rfq/statusof/{rfqServiceType}/forcompany/{companyId} |
GET |
— |
QuoteRequestStatus |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/onhold |
GET |
— |
List[ExtendedOnHoldInfo] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/onhold |
POST |
SaveOnHoldRequest |
SaveOnHoldResponse |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/onhold |
DELETE |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 — destructive |
/job/{jobDisplayId}/onhold/{id} |
GET |
— |
OnHoldDetails |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/onhold/{onHoldId} |
PUT |
SaveOnHoldRequest |
SaveOnHoldResponse |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/onhold/followupuser/{contactId} |
GET |
— |
OnHoldUser |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/onhold/followupusers |
GET |
— |
List[OnHoldUser] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/onhold/{onHoldId}/comment |
POST |
OnHoldCommentRequest |
OnHoldNoteDetails |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/onhold/{onHoldId}/dates |
PUT |
SaveOnHoldDatesModel |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/onhold/{onHoldId}/resolve |
PUT |
ResolveOnHoldRequest |
ResolveJobOnHoldResponse |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/reports/insurance |
POST |
InsuranceReportRequest |
InsuranceReport |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/reports/sales |
POST |
SalesForecastReportRequest |
SalesForecastReport |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/reports/sales/summary |
POST |
SalesForecastSummaryRequest |
SalesForecastSummary |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/reports/salesDrilldown |
POST |
Web2LeadRevenueFilter |
List[RevenueCustomer] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/reports/topRevenueCustomers |
POST |
Web2LeadRevenueFilter |
List[RevenueCustomer] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/reports/topRevenueSalesReps |
POST |
Web2LeadRevenueFilter |
List[RevenueCustomer] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/reports/referredBy |
POST |
ReferredByReportRequest |
ReferredByReport |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/reports/web2Lead |
POST |
Web2LeadV2RequestModel |
Web2LeadReport |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/email |
POST |
SendEmailRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 — fire-and-forget |
/job/{jobDisplayId}/email/senddocument |
POST |
SendDocumentEmailModel |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/email/createtransactionalemail |
POST |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/email/{emailTemplateGuid}/send |
POST |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/sms |
GET |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/sms |
POST |
SendSMSModel |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/sms/read |
POST |
MarkSmsAsReadModel |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/sms/templatebased/{templateId} |
GET |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/lookup/{masterConstantKey} |
GET |
— |
List[LookupValue] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/{masterConstantKey}/{valueId} |
GET |
— |
LookupValue |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/accessKeys |
GET |
— |
List[AccessKey] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/accessKey/{accessKey} |
GET |
— |
AccessKey |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/PPCCampaigns |
GET |
— |
List[LookupValue] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/parcelPackageTypes |
GET |
— |
List[ParcelPackageType] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/documentTypes |
GET |
— |
List[LookupValue] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/comonInsurance |
GET |
— |
List[LookupValue] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/densityClassMap |
GET |
— |
List[DensityClassEntry] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/referCategory |
GET |
— |
List[LookupValue] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/referCategoryHeirachy |
GET |
— |
List[LookupValue] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/lookup/resetMasterConstantCache |
GET |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 — mutating |
/commodity/{id} |
GET |
— |
Commodity |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/commodity/{id} |
PUT |
CommodityUpdateRequest |
Commodity |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/commodity |
POST |
CommodityCreateRequest |
Commodity |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/commodity/search |
POST |
CommoditySearchRequest |
List[Commodity] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/commodity/suggestions |
POST |
CommoditySuggestionRequest |
List[Commodity] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/commodity-map/{id} |
GET |
— |
CommodityMap |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/commodity-map/{id} |
PUT |
CommodityMapUpdateRequest |
CommodityMap |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/commodity-map/{id} |
DELETE |
— |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
008 |
/commodity-map |
POST |
CommodityMapCreateRequest |
CommodityMap |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/commodity-map/search |
POST |
CommodityMapSearchRequest |
List[CommodityMap] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/dashboard |
GET |
— |
DashboardSummary |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/dashboard/gridviews |
GET |
— |
List[GridViewInfo] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/dashboard/gridviewstate/{id} |
GET |
— |
GridViewState |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/dashboard/gridviewstate/{id} |
POST |
GridViewState |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/dashboard/inbound |
POST |
DashboardCompanyRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
incomplete |
008 |
/dashboard/inhouse |
POST |
DashboardCompanyRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
incomplete |
008 |
/dashboard/outbound |
POST |
DashboardCompanyRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
incomplete |
008 |
/dashboard/local-deliveries |
POST |
DashboardCompanyRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
incomplete |
008 |
/dashboard/recentestimates |
POST |
DashboardCompanyRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
incomplete |
008 |
/views/all |
GET |
— |
List[GridViewDetails] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/views/{viewId} |
GET |
— |
GridViewDetails |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/views |
POST |
GridViewCreateRequest |
GridViewDetails |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/views/{viewId} |
DELETE |
— |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
008 |
/views/{viewId}/accessinfo |
GET |
— |
GridViewAccess |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/views/{viewId}/access |
PUT |
GridViewAccess |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/views/datasetsps |
GET |
— |
List[StoredProcedureColumn] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/views/datasetsp/{spName} |
GET |
— |
List[StoredProcedureColumn] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/companies/brands |
GET |
— |
List[CompanyBrand] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/companies/brandstree |
GET |
— |
List[BrandTree] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/companies/geoAreaCompanies |
GET |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/companies/{companyId}/geosettings |
GET |
— |
GeoSettings |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/companies/{companyId}/geosettings |
POST |
GeoSettingsSaveRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/companies/geosettings |
GET |
— |
GeoSettings |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/companies/search/carrier-accounts |
GET |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/companies/suggest-carriers |
GET |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/companies/{companyId}/carrierAcounts |
GET |
— |
List[CarrierAccount] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/companies/{companyId}/carrierAcounts |
POST |
CarrierAccountSaveRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/companies/{companyId}/packagingsettings |
GET |
— |
PackagingSettings |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/companies/{companyId}/packagingsettings |
POST |
PackagingSettingsSaveRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/companies/{companyId}/packaginglabor |
GET |
— |
PackagingLabor |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/companies/{companyId}/packaginglabor |
POST |
PackagingLaborSaveRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/companies/{companyId}/inheritedPackagingTariffs |
GET |
— |
List[PackagingTariff] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/companies/{companyId}/inheritedpackaginglabor |
GET |
— |
PackagingLabor |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/contacts/{contactId}/history |
POST |
ContactHistoryCreateRequest |
ContactHistory |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/contacts/{contactId}/history/aggregated |
GET |
— |
ContactHistoryAggregated |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/contacts/{contactId}/history/graphdata |
GET |
— |
ContactGraphData |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/contacts/{mergeToId}/merge/preview |
POST |
ContactMergeRequest |
ContactMergePreview |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/contacts/{mergeToId}/merge |
PUT |
ContactMergeRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 — destructive |
/job/{jobDisplayId}/freightproviders |
GET |
— |
List[PricedFreightProvider] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/freightproviders |
POST |
ShipmentPlanProvider |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/freightproviders/{optionIndex}/ratequote |
POST |
RateQuoteRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/job/{jobDisplayId}/freightitems |
POST |
FreightItemsRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
008 |
/note |
GET |
— |
List[GlobalNote] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/note |
POST |
GlobalNoteCreateRequest |
GlobalNote |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/note/{id} |
PUT |
GlobalNoteUpdateRequest |
GlobalNote |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/note/suggestUsers |
GET |
— |
List[SuggestedUser] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/partner |
GET |
— |
List[Partner] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/partner/{id} |
GET |
— |
Partner |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/partner/search |
POST |
PartnerSearchRequest |
List[Partner] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
008 |
/Seller/{id} |
GET |
— |
SellerExpandedDto |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/Seller |
GET |
— |
PaginatedList[SellerExpandedDto] |
FAIL |
FAIL |
FAIL |
PASS |
FAIL |
PASS |
incomplete |
2026-02-14, staging |
/Catalog |
GET |
— |
PaginatedList[CatalogExpandedDto] |
FAIL |
FAIL |
FAIL |
PASS |
FAIL |
PASS |
incomplete |
Returns empty — research ABConnectTools for required params |
/Catalog/{id} |
GET |
— |
CatalogExpandedDto |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
Needs valid catalog ID |
/Lot |
GET |
— |
PaginatedList[LotDto] |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
PASS |
incomplete |
Needs valid catalog ID param |
/Lot/{id} |
GET |
— |
LotDto |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
Needs valid lot ID |
/Lot/overrides |
POST |
LotOverrideDto |
LotOverrideDto |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
Needs lot override params |
/Web2Lead |
GET |
— |
Web2LeadResponse |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
2026-02-13, staging |
/Web2Lead/post |
POST |
Web2LeadRequest |
Web2LeadResponse |
PASS |
PASS |
PASS |
PASS |
PASS |
FAIL |
incomplete |
020 |
/job |
POST |
JobCreateRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/job/update |
POST |
JobUpdateRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/job/save |
PUT |
JobSaveRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/job/transfer/{jobDisplayId} |
POST |
TransferModel |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/status/quote |
POST |
— |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/shipment/ratequotes |
POST |
ShipmentRateQuoteRequest |
List[RateQuote] |
PASS |
PASS |
PASS |
FAIL |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/shipment/book |
POST |
ShipmentBookRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/shipment |
DELETE |
— |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/shipment/accessorial |
POST |
AccessorialAddRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/shipment/accessorial/{addOnId} |
DELETE |
— |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/shipment/exportdata |
POST |
ShipmentExportRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/payment/bysource |
POST |
PayBySourceRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/payment/ACHCreditTransfer |
POST |
ACHCreditTransferRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/payment/attachCustomerBank |
POST |
AttachBankRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/payment/verifyJobACHSource |
POST |
VerifyACHRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/payment/banksource |
POST |
BankSourceRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/job/{jobDisplayId}/payment/cancelJobACHVerification |
POST |
— |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
020 |
/contacts/editdetails |
POST |
ContactEditRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/contacts/{contactId}/editdetails |
PUT |
ContactEditRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/documents |
POST |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/documents/update/{docId} |
PUT |
DocumentUpdateRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/users/user |
POST |
UserCreateRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/users/user |
PUT |
UserUpdateRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/autoprice/v2/quoterequest |
POST |
QuoteRequestModel |
QuoteRequestResponse |
FAIL |
FAIL |
PASS |
PASS |
PASS |
FAIL |
incomplete |
auto-discovered |
/Catalog/{id} |
DELETE |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/Catalog/{id} |
PUT |
UpdateCatalogRequest |
CatalogWithSellersDto |
FAIL |
FAIL |
PASS |
PASS |
PASS |
FAIL |
incomplete |
020 |
/Bulk/insert |
POST |
BulkInsertRequest |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
FAIL |
incomplete |
020 |
/Seller |
POST |
AddSellerRequest |
SellerDto |
PASS |
PASS |
PASS |
PASS |
PASS |
FAIL |
incomplete |
020 |
/Seller/{id} |
PUT |
UpdateSellerRequest |
SellerDto |
PASS |
PASS |
PASS |
PASS |
PASS |
FAIL |
incomplete |
020 |
/Seller/{id} |
DELETE |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/Lot |
POST |
AddLotRequest |
LotDto |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
020 |
/Lot/{id} |
PUT |
UpdateLotRequest |
LotDto |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
020 |
/Lot/{id} |
DELETE |
— |
— |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
020 |
/Lot/get-overrides |
POST |
— |
List[LotOverrideDto] |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
020 |
/Catalog |
POST |
AddCatalogRequest |
CatalogWithSellersDto |
FAIL |
FAIL |
PASS |
PASS |
PASS |
FAIL |
incomplete |
auto-discovered |
/contacts/{id} |
GET |
— |
ContactSimple |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
auto-discovered |
/documents/get/{docPath} |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/documents/list |
GET |
— |
List[Document] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
auto-discovered |
/job/{jobDisplayId}/form/address-label |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/bill-of-lading |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/credit-card-authorization |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/customer-quote |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/invoice |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/invoice/editable |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/item-labels |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/operations |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/packaging-labels |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/packaging-specification |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/packing-slip |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/quick-sale |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/usar |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/form/usar/editable |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/parcelitems/{parcelItemId} |
DELETE |
— |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/timeline/{timelineTaskId} |
DELETE |
— |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/note/{id} |
GET |
— |
JobNote |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/timeline/{timelineTaskIdentifier} |
GET |
— |
TimelineTask |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
auto-discovered |
/job/{jobDisplayId}/timeline/incrementjobstatus |
POST |
IncrementStatusRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/timeline/{timelineTaskId} |
PATCH |
TimelineTaskUpdateRequest |
TimelineTask |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
auto-discovered |
/job/{jobDisplayId}/item/notes |
POST |
ItemNotesRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/note |
POST |
JobNoteCreateRequest |
JobNote |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/parcelitems |
POST |
ParcelItemCreateRequest |
ParcelItem |
FAIL |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/timeline |
POST |
— |
TimelineSaveResponse |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
auto-discovered |
/job/{jobDisplayId}/item/{itemId} |
PUT |
ItemUpdateRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/note/{id} |
PUT |
JobNoteUpdateRequest |
JobNote |
FAIL |
FAIL |
PASS |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/job/searchByDetails |
POST |
JobSearchRequest |
List[JobSearchResult] |
PASS |
PASS |
PASS |
PASS |
PASS |
PASS |
complete |
auto-discovered |
/job/{jobDisplayId}/timeline/undoincrementjobstatus |
POST |
IncrementStatusRequest |
ServiceBaseResponse |
PASS |
PASS |
FAIL |
PASS |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/payment/create |
GET |
— |
PaymentInfo |
FAIL |
FAIL |
PASS |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/job/{jobDisplayId}/shipment/exportdata |
GET |
— |
ShipmentExportData |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/shipment/document/{docId} |
GET |
— |
bytes |
FAIL |
FAIL |
FAIL |
FAIL |
PASS |
PASS |
incomplete |
auto-discovered |
/Web2Lead/get |
GET |
— |
Web2LeadResponse |
PASS |
PASS |
PASS |
PASS |
FAIL |
PASS |
incomplete |
auto-discovered |
Model Warning Summary
Models with __pydantic_extra__ fields when validated against their fixtures:
Model |
Issue |
|---|---|
List[ParcelItem] |
2 undeclared field(s): jobModifiedDate, parcelItems |
ParcelItem |
2 undeclared field(s): jobModifiedDate, parcelItems |
TrackingInfo |
3 undeclared field(s): errorMessage, statuses, success |
TrackingInfoV3 |
2 undeclared field(s): carriers, statuses |