flow

Create Provider From URL

Scrape a vendor-portal URL with the module-local Playwright provider scraper and persist a Provider in api-v1.

FlowStatus: Implemented in api-v1

Overview

This flow documents the active api-v1 create-from-URL path for Service Marketplace. HTTP status is 202 on accept.

It is not a copy of Create Product From URL. Product ingest routes through shared-scraping, BrightData, and AgentQL. Provider ingest uses DeterministicProviderScraperAdapterhouzz.provider.scraper.ts (Playwright + stealth plugin + shared Playwright launch helpers). There is no nested provider-ingestion System because that shared scrape stack is not on this path.

HTTP

  • Canonical: POST /api/v1/service-marketplace/providers/from-url
  • Same router: POST /api/v1/service-marketplace/contractors/from-url
  • Legacy: POST /api/v1/labor-marketplace/contractor-from-url and POST /api/v1/service-marketplace/contractor-from-url

No OpenAPI operationId is registered for these routes yet.

Code References

  • apps/api-v1/src/modules/service-marketplace/core/application/use-cases/CreateProviderFromUrlUseCase.ts
  • apps/api-v1/src/modules/service-marketplace/adapters/outbound/scraping/DeterministicProviderScraperAdapter.ts
  • apps/api-v1/src/modules/service-marketplace/adapters/outbound/scraping/deterministic/provider/houzz.provider.scraper.ts
  • apps/api-v1/src/modules/service-marketplace/adapters/inbound/cli/providerScraperCli.ts

Notes

skipPersistence runs scrape without requiring a provider id. Idempotency is an in-memory one-hour store, not a durable table.