Reference

Queries

Every read the API answers, in alphabetical order, with what each takes and returns, the scope it needs and an example to send.

This page as Markdown

Generated from the API’s schema with every release, so it always matches the API it describes. Each entry shows the scope a key needs for it.

queryactiveEngagementAny key#

The engagement named by the X-Engagement-ID header. Null when the request acts as your own firm.

Example
graphql
{
  activeEngagement {
    id
    approvalRecorded
    authorisationRef
    authorisedOn
    effectiveFrom
    effectiveTo
    engagementId
    grantedBy
    client {
      id
      name
      kind
    }
    agent {
      id
      name
      kind
    }
  }
}

queryamountOutstandingNeeds BILL_READ#

What is still owed across the whole portfolio, and how complete that figure is.

Example
graphql
{
  amountOutstanding {
    installmentCount
    installmentsPaidPerRecords
    installmentsWithUnknownPayment
    known
    withheldCount
  }
}

queryapiKeysSigned-in people only#

Your firm's API keys, the ones that work first. Always the firm's own, whichever client you are acting for. For people signed in to the app; a request made with a key is refused.

Example
graphql
{
  apiKeys {
    id
    name
    status
    createdAt
    expiresAt
    lastUsedAt
    prefix
    revokedAt
  }
}

queryassessingJurisdictionsNeeds PARCEL_READ#

The units that assess this portfolio's parcels, where its appeals are filed, by state then name.

Example
graphql
{
  assessingJurisdictions {
    id
    name
    assesses
    billDelivery
    bills
    fipsCode
    installmentsPerYear
    kind
  }
}

querybillNeeds BILL_READ#

The bill one of its installments belongs to. A bill has no id of its own, so pass the id of any of its installments. Null when the installment is not visible to you, which is also what one that does not exist returns.

Arguments

idID!required

The id of one of the bill's installments.

Example
graphql
query ($id: ID!) {
  bill(id: $id) {
    key
    status
    annualTotal
    assessmentYear
    billNumber
    billType
    chargesTotal
    installmentsTotal
    acceptedAutomatically {
      at
      reason
    }
    amountOutstanding {
      installmentCount
      installmentsPaidPerRecords
      installmentsWithUnknownPayment
      known
      withheldCount
    }
  }
}

querybillInboxNeeds BILL_READ#

The bills waiting on a decision (NEEDS_REVIEW or DISPUTED), the oldest arrival first and the undated last; or, with view DECIDED, the ones a person accepted or rejected, newest arrival first with the undated ahead of them. One record per bill. Needs PARCEL_READ as well as BILL_READ. A cursor belongs to the filter it was cut under.

Arguments

afterString

The cursor to continue from: the endCursor of the page before.

beforeString

Not supported: lists page forward only, with first and after.

Which bills. The waiting ones when omitted.

firstInt

How many records to return: 25 when omitted, at most 100.

lastInt

Not supported: lists page forward only, with first and after.

Example
graphql
{
  billInbox(first: 25) {
    totalCount
    pageInfo {
      hasNextPage
      endCursor
    }
    edges {
      node {
        key
        status
        annualTotal
        assessmentYear
        billNumber
      }
    }
  }
}

querycalendarFeedsNeeds PARCEL_READ#

The calendar feeds still in force over this portfolio, newest first. Revoked feeds are not listed.

Example
graphql
{
  calendarFeeds {
    id
    createdAt
    label
    lastFetchedAt
    revokedAt
    createdBy {
      id
      name
      email
    }
  }
}

querycountiesInPortfolioNeeds PARCEL_READ#

Every unit that bills a parcel in the portfolio (a county, a township, a school district), with what is owed to each. Ordered by the amount owed, largest first, then by name. The rows are billing units of any level, under a name kept for compatibility.

Example
graphql
{
  countiesInPortfolio {
    parcelCount
    jurisdiction {
      id
      name
      assesses
      billDelivery
      bills
    }
  }
}

querycoverageAny key#

Where bills can be fetched: by state and by county, with the reason where they cannot. The same for every caller.

Example
graphql
{
  coverage {
    countyTotals {
      assessmentOnly
      closed
      covered
      noPortal
      notSurveyed
    }
    totals {
      assessmentOnly
      closed
      covered
      noPortal
      notSurveyed
    }
  }
}

querycoverageUnitAny key#

One unit by its code (US-CA-FIPS-06007), with its sites. Null when the registry does not hold it, and for a state.

Arguments

unitCodeString!required

The unit code, as Jurisdiction.unitCode has it.

Example
graphql
query ($unitCode: String!) {
  coverageUnit(unitCode: $unitCode) {
    name
    status
    assesses
    bills
    countyLevel
    fips
    level
    state
    portals {
      status
      discoveredOn
      host
      reason
      url
    }
  }
}

querydeadlineGenerationNeeds PARCEL_READ#

When the dates deadlines returns were last worked out, and whether a change saved since is waiting on it. Asked in the same request as deadlines, it answers for the set that request read.

Example
graphql
{
  deadlineGeneration {
    generatedAt
    stale
  }
}

querydeadlinesNeeds PARCEL_READ#

Payment and appeal dates across the whole portfolio, soonest first. Dates that could not be worked out come last, with the reason, rather than being hidden. Give from and to for a large portfolio, which otherwise lists every date to come. A parcel with no bill yet has no appeal dates.

Arguments

fromDate

The first day to include. A date that could not be worked out is listed whatever the range.

The last day to include. A date that could not be worked out is listed whatever the range.

Example
graphql
{
  deadlines {
    id
    acknowledgedAt
    assessmentYear
    generatedAt
    kind
    on
    qualifier
    source
    parcel {
      id
      parcelNumber
      status
      useCode
    }
    jurisdiction {
      id
      name
      assesses
      billDelivery
      bills
    }
  }
}

queryfeedRunsNeeds BILL_READ#

The last nights of the feed for the client named by X-Engagement-ID, newest first. Empty without an engagement, or when no feed is set up for the firm.

Arguments

lastIntdefault 7

How many nights: 7 when omitted.

Example
graphql
{
  feedRuns {
    id
    deliveredTo
    feedName
    finishedAt
    message
    outcome
    startedAt
  }
}

queryinboxSummaryNeeds BILL_READ#

The inbox in numbers: what arrived this week, what could not be read, and what waits. Needs PARCEL_READ as well as BILL_READ.

Example
graphql
{
  inboxSummary {
    beingChecked
    disputed
    failedExtractionsThisWeek
    needsReview
    receivedThisWeek
    withheld
  }
}

queryingestionStatusNeeds BILL_READ#

What the nightly fetch did in each county the portfolio holds parcels in: which answered last night and which are failing. California counties only, for now. Needs PARCEL_READ as well as BILL_READ.

Example
graphql
{
  ingestionStatus {
    attempts24h
    failures24h
    lastAnsweredAt
    lastAttemptAt
    lastOutcome
    lastSuccessAt
    parcels
    streak
    jurisdiction {
      id
      name
      assesses
      billDelivery
      bills
    }
  }
}

queryjurisdictionsAny key#

Taxing units from the registry, which is the same for every caller, in state and name order: filter by state, by level, or search by name; at least one is required. At most first are returned (500 when omitted, up to 5,000), so narrow by level or search where a state holds more. An empty list means no unit matched.

Arguments

firstInt

How many to return at most: 500 when omitted, up to 5,000.

levelString

The kind of unit, as Jurisdiction.level has it: county, city, town, township, school_district and so on.

searchString

Part of the name.

stateString

A two-letter state code.

Example
graphql
{
  jurisdictions {
    id
    name
    assesses
    billDelivery
    bills
    fipsCode
    installmentsPerYear
    kind
  }
}

querylegalEntitiesNeeds PARCEL_READ#

The owners of record the portfolio holds parcels under, by name.

Example
graphql
{
  legalEntities {
    id
    name
    taxIdLast4
  }
}

querylegalEntitiesInPortfolioNeeds PARCEL_READ#

Every legal entity that holds a parcel in the portfolio, with how many, their assessed value and what is owed on their bills: the breakdown by owner. Ordered by amount owed, then assessed value, then name. An entity with no parcel is not listed.

Example
graphql
{
  legalEntitiesInPortfolio {
    assessedValue
    assessedValueAsOf
    parcelCount
    legalEntity {
      id
      name
      taxIdLast4
    }
  }
}

querymyEngagementsAny key#

Every client engagement your firm holds, the ones in force first. Lapsed engagements are listed too, so a client is not mistaken for a deleted one; a request under one is refused.

Example
graphql
{
  myEngagements {
    id
    approvalRecorded
    authorisationRef
    authorisedOn
    effectiveFrom
    effectiveTo
    engagementId
    grantedBy
    client {
      id
      name
      kind
    }
    agent {
      id
      name
      kind
    }
  }
}

querynodeAny key#

One record by its id, whatever its type. Null with a FORBIDDEN error when your key lacks the scope its type needs; null alone when it is not visible to you or names nothing.

Arguments

idID!required

The id, as any query returned it.

Example
graphql
query ($id: ID!) {
  node(id: $id) {
    __typename
    id
  }
}

querynodesAny key#

Several records by id, in the order asked, with null in the place of each that is not visible to you, and a FORBIDDEN error when your key lacks the scope a type needs.

Arguments

ids[ID!]!required

The ids, as any query returned them.

Example
graphql
query ($ids: [ID!]!) {
  nodes(ids: $ids) {
    __typename
    id
  }
}

queryparcelNeeds PARCEL_READ#

One parcel: by id, or by parcel number within the unit that assesses it. Pass either id, or parcelNumber with jurisdictionId; anything else is BAD_USER_INPUT. Null when the parcel is not visible to you, which is also what a parcel that does not exist returns.

Arguments

idID

The parcel's id.

jurisdictionIdID

The id of the unit that assesses the parcel. With parcelNumber.

parcelNumberString

As the county writes it. With jurisdictionId.

Example
graphql
query ($id: ID) {
  parcel(id: $id) {
    id
    parcelNumber
    status
    useCode
    jurisdiction {
      id
      name
      assesses
      billDelivery
      bills
    }
    situsAddress {
      city
      county
      line1
      line2
      postalCode
    }
  }
}

queryparcelsNeeds PARCEL_READ#

The parcels you can see, a page at a time: filter and order them, then page with first and after. A cursor belongs to the filter and order it was cut under.

Arguments

afterString

The cursor to continue from: the endCursor of the page before.

beforeString

Not supported: lists page forward only, with first and after.

Which parcels. All of them when omitted.

firstInt

How many records to return: 25 when omitted, at most 100.

lastInt

Not supported: lists page forward only, with first and after.

How to order them. Assessed value, highest first, when omitted.

Example
graphql
{
  parcels(first: 25) {
    totalCount
    pageInfo {
      hasNextPage
      endCursor
    }
    edges {
      node {
        id
        parcelNumber
        status
        useCode
      }
    }
  }
}

queryportfolioSummaryNeeds REPORT_READ#

The portfolio in numbers, as it stands now: parcels, the units that bill them, assessed value by state, and what the open appeals might save. Needs PARCEL_READ as well as REPORT_READ.

Example
graphql
{
  portfolioSummary {
    assessedValueAsOf
    jurisdictionCount
    parcelCount
    totalAssessedValue
    appealUpside {
      appealsWithoutRate
      basisDecidedAppeals
      modeled
      openAppeals
      realizedRatio
    }
    byState {
      assessedValue
      parcelCount
      state
    }
  }
}

queryreportCatalogAny key#

The reports that can be produced, with their columns, in the order the app shows them. The same for every caller.

Example
graphql
{
  reportCatalog {
    name
    category
    columns
    description
    formats
    kind
    scopes
  }
}

queryreportJobNeeds REPORT_READ#

One requested report, by id. Null when it is not visible to you.

Arguments

idID!required

The report job's id, as requestReport returned it.

Example
graphql
query ($id: ID!) {
  reportJob(id: $id) {
    id
    name
    status
    byteSize
    downloadUrl
    error
    filterDescription
    finishedAt
    requestedBy {
      id
      name
      email
    }
  }
}

queryreportJobsNeeds REPORT_READ#

Reports requested over this portfolio, newest first.

Arguments

firstIntdefault 20

How many: 20 when omitted, at most 100.

Example
graphql
{
  reportJobs {
    id
    name
    status
    byteSize
    downloadUrl
    error
    filterDescription
    finishedAt
    requestedBy {
      id
      name
      email
    }
  }
}

queryruleReportsNeeds PARCEL_READ#

The reports filed about rules from this portfolio, newest first, up to 100, with each one's status.

Example
graphql
{
  ruleReports {
    id
    status
    assessmentYear
    createdAt
    evidenceUrl
    problem
    resolution
    resolvedAt
    jurisdiction {
      id
      name
      assesses
      billDelivery
      bills
    }
    reportedBy {
      id
      name
      email
    }
  }
}

querysearchNeeds PARCEL_READ#

Search the portfolio for parcels, units and documents at once. Fewer than two characters returns three empty lists.

Arguments

firstIntdefault 8

How many per list: 8 when omitted, at most 20.

queryString!required

What to look for.

Example
graphql
query ($query: String!) {
  search(query: $query) {
    parcels {
      id
      parcelNumber
      status
      useCode
    }
    jurisdictions {
      id
      name
      assesses
      billDelivery
      bills
    }
  }
}

queryteamSigned-in people only#

The people of your own firm who can sign in, by name. For people signed in to the app; a request made with a key is refused.

Example
graphql
{
  team {
    id
    name
    email
    tenant {
      id
      name
      kind
    }
  }
}

queryviewerAny key#

Who this request acts as: the signed-in person, or the service user the API key stands for.

Example
graphql
{
  viewer {
    id
    name
    email
    tenant {
      id
      name
      kind
    }
  }
}