Affected capability
DataHub
Feature description
The GraphQL Asset\Image type in pimcore/data-hub exposes no focal point. The focal point is stored on the asset as the custom settings focalPointX / focalPointY and is used by Pimcore itself for thumbnail cropping, but a GraphQL consumer (headless frontend, app, DAM integration) cannot read it and therefore cannot reproduce the same cropping client-side — it has to fall back to center crops or to a second, non-GraphQL request.
Proposal
Add a focalPoints field to the Asset\Image type:
{
getAsset(id: 123) {
... on asset {
focalPoints {
x
y
}
}
}
}
x and y are Float (percentage coordinates, as stored in the custom settings).
- The field resolves to
null for non-image assets and for images without a focal point — deliberately null for the whole object rather than {x: null, y: null}, since an array of nulls would make graphql-php's default field resolver resolve each subfield on its own.
Notes
Additive, non-breaking: a new nullable field on an existing type, no change to existing fields.
Implementation is prepared in pimcore/data-hub#1010 (resolver resolveFocalPoints, covered by tests/GraphQL/Resolver/AssetTypeFocalPointsTest.php), targeting 2026.x as a new feature.
Created as the tracking issue for that PR. Note that #1010 predates the issue-link guardrail's start date (2026-07-07) and is therefore exempt from it — this issue is for traceability, not to satisfy a failing check.
Affected capability
DataHub
Feature description
The GraphQL
Asset\Imagetype inpimcore/data-hubexposes no focal point. The focal point is stored on the asset as the custom settingsfocalPointX/focalPointYand is used by Pimcore itself for thumbnail cropping, but a GraphQL consumer (headless frontend, app, DAM integration) cannot read it and therefore cannot reproduce the same cropping client-side — it has to fall back to center crops or to a second, non-GraphQL request.Proposal
Add a
focalPointsfield to theAsset\Imagetype:{ getAsset(id: 123) { ... on asset { focalPoints { x y } } } }xandyareFloat(percentage coordinates, as stored in the custom settings).nullfor non-image assets and for images without a focal point — deliberatelynullfor the whole object rather than{x: null, y: null}, since an array of nulls would make graphql-php's default field resolver resolve each subfield on its own.Notes
Additive, non-breaking: a new nullable field on an existing type, no change to existing fields.
Implementation is prepared in pimcore/data-hub#1010 (resolver
resolveFocalPoints, covered bytests/GraphQL/Resolver/AssetTypeFocalPointsTest.php), targeting2026.xas a new feature.Created as the tracking issue for that PR. Note that #1010 predates the issue-link guardrail's start date (2026-07-07) and is therefore exempt from it — this issue is for traceability, not to satisfy a failing check.