Find capable production
Status: Foundation
Use producer-universe SpecMatch when you have canonical demand and want Gnaww to evaluate it across the capability universe authorised for your developer context.
validated canonical GJS
-> POST /v1/matches/universe
-> ranked capability results
Ranking is capability evaluation. It is not commercial producer selection.
Build the request from retained canonical demand
This guide assumes specification.json came from Get and display a Specification.
Build the match request from the retained GJS rather than recreating its fields:
jq -n \
--slurpfile specification specification.json \
'{
gjs: $specification[0].gjs,
fulfilment: {
destination: {country_code: "GB"},
maximum_delivery_working_days: 5
}
}' > universe-request.json
The fulfilment values above are capability-plane requirements. A destination or delivery capability result is not a live promise for this job.
Evaluate the authorised universe
curl https://api.gnaww.io/v1/matches/universe \
--request POST \
--header "X-Gnaww-API-Key: ${GNAWW_API_KEY}" \
--header "Content-Type: application/json" \
--dump-header universe-headers.txt \
--output universe.json \
--data @universe-request.json
Inspect the result:
jq '{
outcome,
demand_basis,
producer_universe_size,
confirmed_capable_count,
review_required_count,
blocked_count,
best_capable_candidate
}' universe.json
Read candidate truth before acting on it
Each public candidate carries safe source and truth evidence, including:
source;truth_state;producer_profile_id;producer_profile_schema_version;is_live_supplier;- the SpecMatch result;
- capability-plane fulfilment evidence.
A fixture-backed candidate must remain fixture-backed in your interface. A published capability profile does not prove current price, capacity or producer willingness to accept this job.
The response also makes the transaction boundary machine-readable. Producer selection, live pricing, availability checking, producer acceptance and order creation are all reported separately from the capability evaluation.
No capable route is a valid result
Your application must handle all current universe outcomes:
capable_producer_found;review_required;no_capable_producer.
Do not silently turn review_required into an accepted route. Do not describe no_capable_producer as a producer decline or current unavailability. It means no compatible route was found in the evaluated capability universe for that controlled requirement.
Carry one candidate forward
When best_capable_candidate is present, retain its public capability target evidence for the next operation:
export PROFILE_ID="$(jq -r '.best_capable_candidate.producer_profile_id // empty' universe.json)"
export TARGET_SOURCE="$(jq -r '.best_capable_candidate.source // empty' universe.json)"
If either value is empty, stop and handle the actual universe outcome rather than inventing a route.
Trace the operation
Retain X-Request-Id and X-Correlation-Id from universe-headers.txt for safe troubleshooting. See Errors and tracing.
The exact request and result fields are governed by the API reference.
Next
Use one explicit returned capability target to Validate one capability.