opencollective
opencollective copied to clipboard
GraphQLError: Expected value of type "Individual" but got: { dataValues: { type: "ORGANIZATION"...
Sentry Issue: OC-API-C
GraphQLError: Expected value of type "Individual" but got: { dataValues: { id: 60419, name: "A Tree for the Planet Association", description: "This is the Association behind the A tree for the Planet Initiative", currency: ...
To reproduce
Query
query ExpensePage($legacyExpenseId: Int!, $draftKey: String) {
expense(expense: {legacyId: $legacyExpenseId}, draftKey: $draftKey) {
...ExpensePageExpenseFields
__typename
}
loggedInAccount {
...LoggedInAccountExpensePayoutFields
__typename
}
}
fragment LoggedInAccountExpensePayoutFields on Individual {
id
slug
imageUrl
type
name
location {
address
country
__typename
}
payoutMethods {
id
type
name
data
isSaved
__typename
}
adminMemberships: memberOf(role: ADMIN, includeIncognito: false, accountType: [ORGANIZATION, COLLECTIVE, EVENT, FUND, PROJECT, INDIVIDUAL]) {
nodes {
id
account {
id
slug
imageUrl
type
name
isActive
... on AccountWithHost {
host {
id
__typename
}
__typename
}
... on Organization {
host {
id
__typename
}
__typename
}
location {
address
country
__typename
}
payoutMethods {
id
type
name
data
isSaved
__typename
}
__typename
}
__typename
}
__typename
}
__typename
}
fragment ExpensePageExpenseFields on Expense {
id
legacyId
description
longDescription
currency
type
status
privateMessage
tags
amount
createdAt
invoiceInfo
requiredLegalDocuments
draft
items {
id
incurredAt
description
amount
url
__typename
}
attachedFiles {
id
url
__typename
}
payee {
id
slug
name
type
isAdmin
location {
address
country
__typename
}
payoutMethods {
id
type
name
data
isSaved
__typename
}
... on AccountWithHost {
isApproved
host {
id
__typename
}
__typename
}
__typename
}
payeeLocation {
address
country
__typename
}
createdByAccount {
id
slug
name
type
imageUrl
__typename
}
requestedByAccount {
id
slug
name
type
imageUrl
__typename
}
account {
id
slug
name
type
imageUrl
description
settings
twitterHandle
currency
expensePolicy
expensesTags {
id
tag
__typename
}
location {
address
country
__typename
}
... on AccountWithContributions {
balance
__typename
}
... on AccountWithHost {
isApproved
host {
...ExpenseHostFields
__typename
}
__typename
}
... on Organization {
isHost
isActive
balance
host {
...ExpenseHostFields
__typename
}
__typename
}
... on Event {
parent {
id
slug
name
type
imageUrl
__typename
}
__typename
}
... on Project {
parent {
id
slug
name
type
imageUrl
__typename
}
__typename
}
__typename
}
payoutMethod {
id
type
data
isSaved
__typename
}
comments(limit: 300) {
nodes {
...CommentFields
__typename
}
__typename
}
permissions {
canEdit
canDelete
canSeeInvoiceInfo
canApprove
canUnapprove
canReject
canPay
canMarkAsUnpaid
canComment
__typename
}
activities {
id
type
createdAt
data
individual {
id
type
slug
name
imageUrl
__typename
}
__typename
}
__typename
}
fragment CommentFields on Comment {
id
createdAt
html
reactions
userReactions
fromCollective {
id
type
name
slug
imageUrl
__typename
}
__typename
}
fragment ExpenseHostFields on Host {
id
name
slug
type
currency
isHost
expensePolicy
website
settings
paypalPreApproval {
id
balance {
currency
valueInCents
__typename
}
__typename
}
location {
address
country
__typename
}
supportedPayoutMethods
plan {
transferwisePayouts
transferwisePayoutsLimit
__typename
}
__typename
}
Variables
{
"legacyExpenseId": 10099
}
It looks like this one didn't happen in a while, it might have been solved somewhere else
Issue reappeared: https://sentry.io/organizations/open-collective/issues/3352686016/
Looks like some users have a type=ORGANIZATION collective associated to their profiles.
select u.id, u.email, c.type
from "Users" u
INNER JOIN "Collectives" c
ON u."CollectiveId" = c.id
WHERE c.type != 'USER'
AND u."deletedAt" IS NULL