Skip to content

Users and customer spaces ​

After login, read open_id, union_id and the customer space. The platform generates identifiers and a default personal space automatically. No user group or additional API Subscription is needed.

Request ​

POST ${GOODVISION_API_BASE}/open-platform/v1/user-context:resolve

Call from your server with the current Application's user Access Token. Send {} at first entry:

bash
curl --request POST \
  --url "${GOODVISION_API_BASE}/open-platform/v1/user-context:resolve" \
  --header "Authorization: Bearer ${GOODVISION_USER_ACCESS_TOKEN}" \
  --header 'Content-Type: application/json' \
  --data '{}'
ParameterLocationRequiredDescription
AuthorizationHeader🔴 RequiredBearer <USER_ACCESS_TOKEN> from the current user Client, not an application identity Token
Content-TypeHeader🔴 Requiredapplication/json
JSON request bodyBody🔴 RequiredSend {} at first entry; no user or space ID is needed
organization_idBodyOptionalOmit to prepare or reuse the personal space; send only when the user explicitly selects an existing customer space, with membership checked again

For an explicit existing space selection, send {"organization_id":"<SELECTED_CUSTOMER_SPACE_UUID>"}. Do not send Application, user or permission fields, organization Headers or Query parameters.

Response ​

These fields are generated and returned by the platform, not request parameters that developers must fill in.

FieldPurpose
application_id, environmentVerify the current Application and environment
user.open_idUser correlation within this Application; suitable as your application's user key
user.union_idCorrelate the same person across Applications owned by one developer in one environment
space.organization_idCurrent customer space for subsequent business scope; users do not enter it
space.membership_idThis user's membership in this space
space.display_nameDisplay label; names do not establish permission
space.kindpersonal means default personal entry; selected means explicit selection, not a team classification
resolved_at, expires_atResolution and expiry timestamps, at most five minutes apart

Download the response JSON Schema. Verify Application, environment, current selection and expiry on your server, and resolve again when needed. Responses are no-store and expose neither private identity IDs nor Secrets.

open_id and union_id ​

The platform generates OpenID (open_id) and UnionID (union_id). Read both from the response's user object:

The same person entersopen_idunion_id
Applications A and B under one developer in one environmentDifferentSame
The same Application, switching customer spacesUnchangedUnchanged
Different developers or environmentsIsolatedIsolated

Transferring an Application does not merge historical users. User identifiers grant no product access or paid entitlement.

Recovery ​

StatusAction
400Correct the request; keep only the optional customer-space selection
401Authenticate again in the current Application
403Stop operations in this space and confirm the Application or membership selection
503Preserve verified login and the original operation; offer bounded retry

An invalid space never silently becomes another space. Do not use the developer business as a customer fallback or loop through login on 503. Identity and membership confer no product, paid, credit or platform privileges.

For membership-related oem.access_context.changed.v1, correlate data.subject_id with space.membership_id. Subscriptions correlate by Application, environment, customer space and subscription ID. None of these references is interchangeable with sub, open_id or union_id. See Applications, users and events.

Developer documentation. Internal operations access is not required.