Strise Connect API Docs
Examples

Dispositions

When monitoring screens your entities it produces PEP and sanction matches. A disposition is the decision you record on a match: that it's a true match, or a false one. The dispositionScreeningMatches query returns those matches with their disposition status, so you can pull the ones that still need dispositioning or audit the ones you've already handled.

Each node is anchored on the screened entity — the entity that actually carries the hit. entityId and entityKind identify it (a company, a private person, or a business person), and its pepInfo / sanctionInfo hold the matched records — the same PepInfo / SanctionInfo you get elsewhere in the API, each null when the entity has no hit of that kind. The screening is intrinsic to the entity, so it lives on the node, not per monitored entity. The disposition trail lives on each hit (hits.dispositions / sanctions.dispositions).

screenings ties the entity back to each monitored portfolio entity it surfaces under: for a hit on the monitored entity itself there is one entry whose monitoredEntity is the screened entity itself and whose relationsToMonitoredEntity is null; for a hit found through a related entity (say a company's beneficial owner) each entry pairs the monitored entity with the relation. A beneficial owner who is a PEP under three of your companies is therefore one node with three screenings.

This requires the Monitoring feature. To add entities to monitoring and handle change alerts, see the Monitoring Alerts example.

Fetch matches that need dispositioning

Filter on status: [UNVERIFIED] to get the worklist of matches nobody has dispositioned yet. It covers companies and private persons, and both PEP and sanction matches:

query Worklist {
  dispositionScreeningMatches(
    where: { status: [UNVERIFIED] }
    pageInfo: { size: 50, offset: 0 }
  ) {
    edges {
      node {
        entityId
        entityKind
        pepInfo {
          hits { name pep rca confirmedMatch }
        }
        sanctionInfo {
          sanctions { sanctionedBy program confirmedMatch }
        }
        screenings {
          monitoredEntity {
            ... on Company { name }
            ... on PrivatePerson { name }
          }
          # null when the hit is on the monitored entity itself.
          relationsToMonitoredEntity
        }
      }
    }
    pageInfo {
      totalSize
      nextPageOffset
    }
  }
}

Only PEP matches

Add kind: [PEP] to list only the PEP matches still waiting on a decision. A company's PEP match is found through a related person, so the node is anchored on that person (entityKind: BUSINESS_PERSON) and each screenings entry points back to the company with relationsToMonitoredEntity describing the link:

query UndispositionedPeps {
  dispositionScreeningMatches(
    where: { kind: [PEP], status: [UNVERIFIED] }
    pageInfo: { size: 50, offset: 0 }
  ) {
    edges {
      node {
        entityId
        entityKind
        pepInfo {
          hits { name pep rca confirmedMatch }
        }
        screenings {
          monitoredEntity {
            ... on Company { name }
            ... on PrivatePerson { name }
          }
          # How the screened person is linked to the monitored company
          # (e.g. an officer or beneficial owner). Null when the match
          # is on the monitored entity itself.
          relationsToMonitoredEntity
        }
      }
    }
    pageInfo {
      totalSize
      nextPageOffset
    }
  }
}

Only sanction matches

Use kind: [SANCTIONS] for the sanction worklist. A sanction can sit on a related company too — for example a sanctioned subsidiary of a monitored company. That node is anchored on the related company (entityKind: COMPANY), and screenings points back to the monitored company with the ownership relation:

query UndispositionedSanctions {
  dispositionScreeningMatches(
    where: { kind: [SANCTIONS], status: [UNVERIFIED] }
    pageInfo: { size: 50, offset: 0 }
  ) {
    edges {
      node {
        entityId
        entityKind
        sanctionInfo {
          sanctions { sanctionedBy program sanctionedSince confirmedMatch }
        }
        screenings {
          monitoredEntity {
            ... on Company { name }
            ... on PrivatePerson { name }
          }
          # e.g. [OWNERSHIP] when the sanctioned entity is a subsidiary
          # of the monitored company; null on a hit on the entity itself.
          relationsToMonitoredEntity
        }
      }
    }
    pageInfo {
      totalSize
      nextPageOffset
    }
  }
}

You can also narrow to one screened entity kind with entityKind, for example only private persons: where: { kind: [SANCTIONS], entityKind: [PRIVATE_PERSON] }.

Audit dispositioned matches

Filter on status: [CONFIRMED_TRUE, CONFIRMED_FALSE] and select the dispositions trail on each hit to see what was decided, who decided it, and when. The trail is newest first, so a re-disposition (say, a manager re-verifying an earlier suppression) shows up as several entries:

query DispositionAudit {
  dispositionScreeningMatches(
    where: { status: [CONFIRMED_TRUE, CONFIRMED_FALSE] }
    pageInfo: { size: 50, offset: 0 }
  ) {
    edges {
      node {
        entityId
        entityKind
        pepInfo {
          hits {
            name
            dispositions {
              status
              comment
              dispositionedBy { name email }
              dispositionedAt
            }
          }
        }
        sanctionInfo {
          sanctions {
            sanctionedBy
            dispositions {
              status
              comment
              dispositionedBy { name email }
              dispositionedAt
            }
          }
        }
        screenings {
          monitoredEntity {
            ... on Company { name }
            ... on PrivatePerson { name }
          }
        }
      }
    }
    pageInfo {
      totalSize
      nextPageOffset
    }
  }
}

Leave status out to return every match whatever its disposition state, which is handy for a full export. where also takes kind (PEP / SANCTIONS — the same DatasetKind used on alerts) and entityKind (COMPANY / PRIVATE_PERSON / BUSINESS_PERSON, on the screened entity); drop a filter to include everything.

On this page