fragment CiNeeds on JobNeedUnion {
  ...CiBuildNeedFields
  ...CiJobNeedFields
}

fragment CiBuildNeedFields on CiBuildNeed {
  id
  name
}

fragment CiJobNeedFields on CiJob {
  id
  name
}

fragment LinkedPipelineData on Pipeline {
  __typename
  id
  iid
  path
  cancelable
  retryable
  userPermissions {
    updatePipeline
  }
  status: detailedStatus {
    __typename
    id
    group
    label
    icon
  }
  sourceJob {
    __typename
    id
    name
  }
  project {
    __typename
    id
    name
    fullPath
  }
}

query getPipelineDetails($projectPath: ID!, $iid: ID!) {
  project(fullPath: $projectPath) {
    __typename
    id
    pipeline(iid: $iid) {
      __typename
      id
      iid
      complete
      usesNeeds
      userPermissions {
        updatePipeline
      }
      downstream {
        __typename
        nodes {
          ...LinkedPipelineData
        }
      }
      upstream {
        ...LinkedPipelineData
      }
      stages {
        __typename
        nodes {
          __typename
          id
          name
          status: detailedStatus {
            __typename
            id
            action {
              __typename
              id
              icon
              path
              title
            }
          }
          groups {
            __typename
            nodes {
              __typename
              id
              status: detailedStatus {
                __typename
                id
                label
                group
                icon
              }
              name
              size
              jobs {
                __typename
                nodes {
                  __typename
                  id
                  name
                  kind
                  scheduledAt
                  needs {
                    __typename
                    nodes {
                      __typename
                      id
                      name
                    }
                  }
                  previousStageJobsOrNeeds {
                    __typename
                    nodes {
                      ...CiNeeds
                    }
                  }
                  status: detailedStatus {
                    __typename
                    id
                    icon
                    tooltip
                    hasDetails
                    detailsPath
                    group
                    label
                    action {
                      __typename
                      id
                      buttonTitle
                      icon
                      path
                      title
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}