opencollective icon indicating copy to clipboard operation
opencollective copied to clipboard

GraphQLError: Expected value of type "Individual" but got: { dataValues: { type: "ORGANIZATION"...

Open sentry[bot] opened this issue 4 years ago • 2 comments

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
}

sentry[bot] avatar Jan 21 '21 12:01 sentry[bot]

It looks like this one didn't happen in a while, it might have been solved somewhere else

Betree avatar Aug 04 '22 06:08 Betree

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

Betree avatar Aug 05 '22 17:08 Betree