Skip to main content

PartnerCustomerUserDetail

Everything the account owner assigned to one buyer login, in one payload.

type PartnerCustomerUserDetail {
addresses: [CustomerUserAddressAssignment!]!
approverScope: String!
approvesOrders: Boolean!
assignedAddressIds: [ID!]!
createdAt: DateTime!
email: String!
firstName: String!
id: ID!
inviteStatus: String!
lastLoginAt: DateTime
lastName: String!
orderLimit: Float
partnerId: ID!
referenceId: String!
role: String!
status: String!
}

Fields​

PartnerCustomerUserDetail.addresses ● [CustomerUserAddressAssignment!]! non-null object​

Every LIVE address of the partner, flagged with this user's assignment and approver grant. This is the seller's full view of the account address book — it is deliberately NOT narrowed to what the user may use, because it also seeds the assignment checkboxes.

PartnerCustomerUserDetail.approverScope ● String! non-null scalar​

approver reach — COMPANY (every request at this partner, incl. branchless ones) | BRANCH (only the branches granted in addresses). Meaningful only when approvesOrders; an Owner is always company-wide.

PartnerCustomerUserDetail.approvesOrders ● Boolean! non-null scalar​

User.approvesCustomerOrders — may decide teammates' parked over-limit orders. Always true for an Owner (that is what owning the account means).

PartnerCustomerUserDetail.assignedAddressIds ● [ID!]! non-null scalar​

Addresses assigned to this user. Meaning depends on role — for CUSTOMER_ADMIN, empty means UNRESTRICTED (whole account address book); for CUSTOMER_BUYER / CUSTOMER_VIEWER, empty means NONE assigned (denied, per resolveAddressScope). On the list so the Users tab can show each login's reach without opening every row.

PartnerCustomerUserDetail.createdAt ● DateTime! non-null scalar​

When the record was created.

PartnerCustomerUserDetail.email ● String! non-null scalar​

Email address.

PartnerCustomerUserDetail.firstName ● String! non-null scalar​

The person's first name.

PartnerCustomerUserDetail.id ● ID! non-null scalar​

The unique ID of this record.

PartnerCustomerUserDetail.inviteStatus ● String! non-null scalar​

PENDING (invited, not yet accepted) | ACTIVE (accepted + enabled) | DEACTIVATED (accepted, access revoked).

PartnerCustomerUserDetail.lastLoginAt ● DateTime scalar​

When the person last signed in.

PartnerCustomerUserDetail.lastName ● String! non-null scalar​

The person's last name.

PartnerCustomerUserDetail.orderLimit ● Float scalar​

Per-order ceiling in the org base currency (User.customerOrderLimit). Null = no limit. Only bites in Company mode — in branch mode the BRANCH's own orderLimit is the only value limit (rule 1), and an Owner is never order-value checked at all.

PartnerCustomerUserDetail.partnerId ● ID! non-null scalar​

The partner this login belongs to.

PartnerCustomerUserDetail.referenceId ● String! non-null scalar​

Reference id shown in the admin console — <customer code>@<firstnamelastname> (e.g. C000049@gowrivijayan). DERIVED on read from Partner.code + the user's name, not a stored column, and not unique — display only, never a lookup key. Empty string when the partner has no code or the user has no name.

PartnerCustomerUserDetail.role ● String! non-null scalar​

CUSTOMER_ADMIN (Owner) | CUSTOMER_BUYER | CUSTOMER_VIEWER — the SAME vocabulary the buyer-side team screen uses (CUSTOMER_TEAM_ROLES). The founding self-registered user is CUSTOMER_ADMIN; invited users hold whatever role the invite carried (default CUSTOMER_BUYER).

PartnerCustomerUserDetail.status ● String! non-null scalar​

The raw User.status — ACTIVE | INACTIVE (invite outstanding) | SUSPENDED (access revoked). Prefer inviteStatus, which reads the same row as the three states the UI shows.

Returned By​

partnerCustomerUser query ● updateCustomerUser mutation