[Local Catalog] Implement POS catalog generation/status endpoints for full sync #16041
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

For WOOMOB-1170
Description
This PR implements POS catalog sync endpoints with full catalog generation capabilities. The catalog download URL is provided in the job API response when it is complete.
Key Changes:
Catalog Generation Endpoints:
generateCatalog(for:forceGenerate:)- Initiates asynchronous catalog generation and returns a job IDPOST /wp-json/wc/v3/catalogwithfields=["id", "name", "type", "sku", "global_unique_id", "price", "regular_price", "sale_price", "on_sale", "downloadable", "parent_id", "images", "attributes", "manage_stock", "stock_quantity", "stock_status"]withCatalogGenerationResponsecheckCatalogStatus(for:jobID:)- Checks catalog generation job status and provides download URL when completeGET /wp-json/wc/v3/catalog/status/$job_idwithCatalogStatusResponseResponse Models:
CatalogGenerationResponse- Contains job IDjob_id: stringfor tracking catalog generationCatalogStatusResponse- Parsesstatus: string,progress: float, anddownload_url: string?(available when the job is complete) for catalog jobsCatalogStatusenum - Defines pending, processing, and complete statesCatalog generation works asynchronously - merchants initiate generation with
generateCatalog, then poll status withcheckCatalogStatusuntil completion. The download URL is provided in the status response when the job completes.Downloading the catalog file (JSON for now) with the download URL will be in a separate PR, as it involves using a background session.
Testing:
Comprehensive test coverage includes:
The endpoints are currently marked with
periphery:ignorecomments until integration with the broader catalog sync system is complete.Steps to reproduce
Just CI passing is sufficient, as the remote isn't used in the app yet.
Testing information
I tested with
in the app to verify that the remote methods are working as expected.
RELEASE-NOTES.txtif necessary.