Unit API GraphQL Reference

This GraphQL API for units provides queries and mutations to manage academic units within institutions. It supports operations such as listing units, creating, updating, deleting, merging units, and managing related entities like unit levels, modules, uploads, and previous names. The API enforces validation, handles hierarchical relationships, and publishes events for changes, ensuring data integrity and platform consistency.

API Endpoints
https://unit-api.interfolio.com/institutions/tenant_id/YOUR_TENANT_ID/graphiql

Queries

institution

Response

Returns an Institution!

Example

Query
query Institution {
  institution {
    id
    unit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    unitCount
    isPlatform
    unificationStatus
  }
}
Response
{
  "data": {
    "institution": {
      "id": "4",
      "unit": Unit,
      "unitCount": 123,
      "isPlatform": false,
      "unificationStatus": "abc123"
    }
  }
}

institutionModules

Response

Returns [InstitutionModule!]!

Example

Query
query InstitutionModules {
  institutionModules {
    id
    institution {
      id
      unit {
        ...UnitFragment
      }
      unitCount
      isPlatform
      unificationStatus
    }
    module {
      id
      name
      label
    }
    unitCount
    label
  }
}
Response
{
  "data": {
    "institutionModules": [
      {
        "id": 4,
        "institution": Institution,
        "module": Module,
        "unitCount": 987,
        "label": "abc123"
      }
    ]
  }
}

modules

Response

Returns [Module!]!

Example

Query
query Modules {
  modules {
    id
    name
    label
  }
}
Response
{
  "data": {
    "modules": [
      {
        "id": "4",
        "name": "abc123",
        "label": "xyz789"
      }
    ]
  }
}

previousNames

Response

Returns [PreviousName!]!

Arguments
Name Description
filterPreviousNameInput - FilterPreviousNameInput

Example

Query
query PreviousNames($filterPreviousNameInput: FilterPreviousNameInput) {
  previousNames(filterPreviousNameInput: $filterPreviousNameInput) {
    id
    unit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    name
    source
    usedFrom
    usedTo
    isCurrent
    createdBy
    updatedBy
    createdAt
    updatedAt
  }
}
Variables
{"filterPreviousNameInput": FilterPreviousNameInput}
Response
{
  "data": {
    "previousNames": [
      {
        "id": 4,
        "unit": Unit,
        "name": "xyz789",
        "source": "abc123",
        "usedFrom": "xyz789",
        "usedTo": "xyz789",
        "isCurrent": "abc123",
        "createdBy": "abc123",
        "updatedBy": "xyz789",
        "createdAt": "abc123",
        "updatedAt": "xyz789"
      }
    ]
  }
}

unitLevels

Response

Returns [UnitLevel!]!

Arguments
Name Description
moduleId - Int

Example

Query
query UnitLevels($moduleId: Int) {
  unitLevels(moduleId: $moduleId) {
    id
    institution {
      id
      unit {
        ...UnitFragment
      }
      unitCount
      isPlatform
      unificationStatus
    }
    units {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    module {
      id
      name
      label
    }
    ancestryDepth
    label
    unitCount
    createdAt
    updatedAt
    updatedBy
  }
}
Variables
{"moduleId": 123}
Response
{
  "data": {
    "unitLevels": [
      {
        "id": 4,
        "institution": Institution,
        "units": [Unit],
        "module": Module,
        "ancestryDepth": 123,
        "label": "xyz789",
        "unitCount": 123,
        "createdAt": "abc123",
        "updatedAt": "abc123",
        "updatedBy": "xyz789"
      }
    ]
  }
}

unitModules

Response

Returns [UnitModule!]!

Example

Query
query UnitModules {
  unitModules {
    id
    module {
      id
      name
      label
    }
    unit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    active
    refId
    createdAt
    updatedAt
  }
}
Response
{
  "data": {
    "unitModules": [
      {
        "id": "4",
        "module": Module,
        "unit": Unit,
        "active": true,
        "refId": "abc123",
        "createdAt": "abc123",
        "updatedAt": "xyz789"
      }
    ]
  }
}

units

Response

Returns [Unit!]!

Arguments
Name Description
filterUnitInput - FilterUnitInput

Example

Query
query Units($filterUnitInput: FilterUnitInput) {
  units(filterUnitInput: $filterUnitInput) {
    id
    name
    institution {
      id
      unit {
        ...UnitFragment
      }
      unitCount
      isPlatform
      unificationStatus
    }
    parentUnit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    parentUnitID
    childUnits {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    unitModules {
      id
      module {
        ...ModuleFragment
      }
      unit {
        ...UnitFragment
      }
      active
      refId
      createdAt
      updatedAt
    }
    abbreviation
    externalID
    ancestry
    ancestryDepth
    createdAt
    updatedAt
    updatedBy
    active
    statistics {
      ModuleName
      type
      count
    }
    statisticsIncludingChildren {
      ModuleName
      type
      count
    }
    notes
    merge {
      mergeProcess {
        ...MergeProcessFragment
      }
      sourceUnitID
      sourceUnit {
        ...UnitFragment
      }
      targetUnitID
      targetUnit {
        ...UnitFragment
      }
      createdAt
      updatedAt
    }
  }
}
Variables
{"filterUnitInput": FilterUnitInput}
Response
{
  "data": {
    "units": [
      {
        "id": "4",
        "name": "abc123",
        "institution": Institution,
        "parentUnit": Unit,
        "parentUnitID": 987,
        "childUnits": [Unit],
        "unitModules": [UnitModule],
        "abbreviation": "abc123",
        "externalID": "abc123",
        "ancestry": "xyz789",
        "ancestryDepth": 123,
        "createdAt": "abc123",
        "updatedAt": "xyz789",
        "updatedBy": "xyz789",
        "active": false,
        "statistics": [Statistic],
        "statisticsIncludingChildren": [Statistic],
        "notes": "xyz789",
        "merge": Merge
      }
    ]
  }
}

uploads

Response

Returns [Upload!]!

Arguments
Name Description
type - String

Example

Query
query Uploads($type: String) {
  uploads(type: $type) {
    id
    institution {
      id
      unit {
        ...UnitFragment
      }
      unitCount
      isPlatform
      unificationStatus
    }
    type
    status
    rowsTotal
    rowsProcessed
    rowsSuccessful
    rowsFailed
    createdBy
    createdAt
    updatedAt
  }
}
Variables
{"type": "abc123"}
Response
{
  "data": {
    "uploads": [
      {
        "id": 4,
        "institution": Institution,
        "type": "abc123",
        "status": "xyz789",
        "rowsTotal": 987,
        "rowsProcessed": 987,
        "rowsSuccessful": 123,
        "rowsFailed": 123,
        "createdBy": "xyz789",
        "createdAt": "abc123",
        "updatedAt": "xyz789"
      }
    ]
  }
}

Mutations

createPreviousName

Response

Returns a PreviousName!

Arguments
Name Description
createPreviousNameInput - CreatePreviousNameInput!

Example

Query
mutation CreatePreviousName($createPreviousNameInput: CreatePreviousNameInput!) {
  createPreviousName(createPreviousNameInput: $createPreviousNameInput) {
    id
    unit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    name
    source
    usedFrom
    usedTo
    isCurrent
    createdBy
    updatedBy
    createdAt
    updatedAt
  }
}
Variables
{"createPreviousNameInput": CreatePreviousNameInput}
Response
{
  "data": {
    "createPreviousName": {
      "id": 4,
      "unit": Unit,
      "name": "xyz789",
      "source": "xyz789",
      "usedFrom": "abc123",
      "usedTo": "xyz789",
      "isCurrent": "xyz789",
      "createdBy": "xyz789",
      "updatedBy": "abc123",
      "createdAt": "abc123",
      "updatedAt": "abc123"
    }
  }
}

createUnit

Response

Returns a Unit!

Arguments
Name Description
createUnitInput - CreateUnitInput!

Example

Query
mutation CreateUnit($createUnitInput: CreateUnitInput!) {
  createUnit(createUnitInput: $createUnitInput) {
    id
    name
    institution {
      id
      unit {
        ...UnitFragment
      }
      unitCount
      isPlatform
      unificationStatus
    }
    parentUnit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    parentUnitID
    childUnits {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    unitModules {
      id
      module {
        ...ModuleFragment
      }
      unit {
        ...UnitFragment
      }
      active
      refId
      createdAt
      updatedAt
    }
    abbreviation
    externalID
    ancestry
    ancestryDepth
    createdAt
    updatedAt
    updatedBy
    active
    statistics {
      ModuleName
      type
      count
    }
    statisticsIncludingChildren {
      ModuleName
      type
      count
    }
    notes
    merge {
      mergeProcess {
        ...MergeProcessFragment
      }
      sourceUnitID
      sourceUnit {
        ...UnitFragment
      }
      targetUnitID
      targetUnit {
        ...UnitFragment
      }
      createdAt
      updatedAt
    }
  }
}
Variables
{"createUnitInput": CreateUnitInput}
Response
{
  "data": {
    "createUnit": {
      "id": "4",
      "name": "xyz789",
      "institution": Institution,
      "parentUnit": Unit,
      "parentUnitID": 987,
      "childUnits": [Unit],
      "unitModules": [UnitModule],
      "abbreviation": "xyz789",
      "externalID": "abc123",
      "ancestry": "abc123",
      "ancestryDepth": 123,
      "createdAt": "xyz789",
      "updatedAt": "abc123",
      "updatedBy": "xyz789",
      "active": false,
      "statistics": [Statistic],
      "statisticsIncludingChildren": [Statistic],
      "notes": "abc123",
      "merge": Merge
    }
  }
}

createUnitLevel

Response

Returns a UnitLevel!

Arguments
Name Description
createUnitLevelInput - CreateUnitLevelInput!

Example

Query
mutation CreateUnitLevel($createUnitLevelInput: CreateUnitLevelInput!) {
  createUnitLevel(createUnitLevelInput: $createUnitLevelInput) {
    id
    institution {
      id
      unit {
        ...UnitFragment
      }
      unitCount
      isPlatform
      unificationStatus
    }
    units {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    module {
      id
      name
      label
    }
    ancestryDepth
    label
    unitCount
    createdAt
    updatedAt
    updatedBy
  }
}
Variables
{"createUnitLevelInput": CreateUnitLevelInput}
Response
{
  "data": {
    "createUnitLevel": {
      "id": "4",
      "institution": Institution,
      "units": [Unit],
      "module": Module,
      "ancestryDepth": 987,
      "label": "xyz789",
      "unitCount": 987,
      "createdAt": "abc123",
      "updatedAt": "abc123",
      "updatedBy": "xyz789"
    }
  }
}

createUploadURL

Response

Returns an CreateUploadURLResponse!

Arguments
Name Description
createUploadURLInput - CreateUploadURLInput

Example

Query
mutation CreateUploadURL($createUploadURLInput: CreateUploadURLInput) {
  createUploadURL(createUploadURLInput: $createUploadURLInput) {
    url
    path
  }
}
Variables
{"createUploadURLInput": CreateUploadURLInput}
Response
{
  "data": {
    "createUploadURL": {
      "url": "xyz789",
      "path": "xyz789"
    }
  }
}

deletePreviousName

Response

Returns a PreviousName!

Arguments
Name Description
id - Int!

Example

Query
mutation DeletePreviousName($id: Int!) {
  deletePreviousName(id: $id) {
    id
    unit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    name
    source
    usedFrom
    usedTo
    isCurrent
    createdBy
    updatedBy
    createdAt
    updatedAt
  }
}
Variables
{"id": 987}
Response
{
  "data": {
    "deletePreviousName": {
      "id": 4,
      "unit": Unit,
      "name": "abc123",
      "source": "xyz789",
      "usedFrom": "abc123",
      "usedTo": "abc123",
      "isCurrent": "xyz789",
      "createdBy": "abc123",
      "updatedBy": "abc123",
      "createdAt": "abc123",
      "updatedAt": "xyz789"
    }
  }
}

deleteUnit

Response

Returns a Unit!

Arguments
Name Description
id - Int!

Example

Query
mutation DeleteUnit($id: Int!) {
  deleteUnit(id: $id) {
    id
    name
    institution {
      id
      unit {
        ...UnitFragment
      }
      unitCount
      isPlatform
      unificationStatus
    }
    parentUnit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    parentUnitID
    childUnits {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    unitModules {
      id
      module {
        ...ModuleFragment
      }
      unit {
        ...UnitFragment
      }
      active
      refId
      createdAt
      updatedAt
    }
    abbreviation
    externalID
    ancestry
    ancestryDepth
    createdAt
    updatedAt
    updatedBy
    active
    statistics {
      ModuleName
      type
      count
    }
    statisticsIncludingChildren {
      ModuleName
      type
      count
    }
    notes
    merge {
      mergeProcess {
        ...MergeProcessFragment
      }
      sourceUnitID
      sourceUnit {
        ...UnitFragment
      }
      targetUnitID
      targetUnit {
        ...UnitFragment
      }
      createdAt
      updatedAt
    }
  }
}
Variables
{"id": 123}
Response
{
  "data": {
    "deleteUnit": {
      "id": 4,
      "name": "xyz789",
      "institution": Institution,
      "parentUnit": Unit,
      "parentUnitID": 123,
      "childUnits": [Unit],
      "unitModules": [UnitModule],
      "abbreviation": "abc123",
      "externalID": "abc123",
      "ancestry": "abc123",
      "ancestryDepth": 123,
      "createdAt": "abc123",
      "updatedAt": "abc123",
      "updatedBy": "abc123",
      "active": true,
      "statistics": [Statistic],
      "statisticsIncludingChildren": [Statistic],
      "notes": "abc123",
      "merge": Merge
    }
  }
}

mergeUnits

Response

Returns a Unit!

Arguments
Name Description
mergeUnitsInput - MergeUnitsInput!

Example

Query
mutation MergeUnits($mergeUnitsInput: MergeUnitsInput!) {
  mergeUnits(mergeUnitsInput: $mergeUnitsInput) {
    id
    name
    institution {
      id
      unit {
        ...UnitFragment
      }
      unitCount
      isPlatform
      unificationStatus
    }
    parentUnit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    parentUnitID
    childUnits {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    unitModules {
      id
      module {
        ...ModuleFragment
      }
      unit {
        ...UnitFragment
      }
      active
      refId
      createdAt
      updatedAt
    }
    abbreviation
    externalID
    ancestry
    ancestryDepth
    createdAt
    updatedAt
    updatedBy
    active
    statistics {
      ModuleName
      type
      count
    }
    statisticsIncludingChildren {
      ModuleName
      type
      count
    }
    notes
    merge {
      mergeProcess {
        ...MergeProcessFragment
      }
      sourceUnitID
      sourceUnit {
        ...UnitFragment
      }
      targetUnitID
      targetUnit {
        ...UnitFragment
      }
      createdAt
      updatedAt
    }
  }
}
Variables
{"mergeUnitsInput": MergeUnitsInput}
Response
{
  "data": {
    "mergeUnits": {
      "id": 4,
      "name": "xyz789",
      "institution": Institution,
      "parentUnit": Unit,
      "parentUnitID": 123,
      "childUnits": [Unit],
      "unitModules": [UnitModule],
      "abbreviation": "abc123",
      "externalID": "xyz789",
      "ancestry": "xyz789",
      "ancestryDepth": 123,
      "createdAt": "xyz789",
      "updatedAt": "abc123",
      "updatedBy": "xyz789",
      "active": true,
      "statistics": [Statistic],
      "statisticsIncludingChildren": [Statistic],
      "notes": "abc123",
      "merge": Merge
    }
  }
}

updatePreviousName

Response

Returns a PreviousName!

Arguments
Name Description
updatePreviousNameInput - UpdatePreviousNameInput!

Example

Query
mutation UpdatePreviousName($updatePreviousNameInput: UpdatePreviousNameInput!) {
  updatePreviousName(updatePreviousNameInput: $updatePreviousNameInput) {
    id
    unit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    name
    source
    usedFrom
    usedTo
    isCurrent
    createdBy
    updatedBy
    createdAt
    updatedAt
  }
}
Variables
{"updatePreviousNameInput": UpdatePreviousNameInput}
Response
{
  "data": {
    "updatePreviousName": {
      "id": 4,
      "unit": Unit,
      "name": "abc123",
      "source": "xyz789",
      "usedFrom": "abc123",
      "usedTo": "xyz789",
      "isCurrent": "abc123",
      "createdBy": "xyz789",
      "updatedBy": "xyz789",
      "createdAt": "xyz789",
      "updatedAt": "abc123"
    }
  }
}

updateUnit

Response

Returns a Unit!

Arguments
Name Description
updateUnitInput - UpdateUnitInput!

Example

Query
mutation UpdateUnit($updateUnitInput: UpdateUnitInput!) {
  updateUnit(updateUnitInput: $updateUnitInput) {
    id
    name
    institution {
      id
      unit {
        ...UnitFragment
      }
      unitCount
      isPlatform
      unificationStatus
    }
    parentUnit {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    parentUnitID
    childUnits {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    unitModules {
      id
      module {
        ...ModuleFragment
      }
      unit {
        ...UnitFragment
      }
      active
      refId
      createdAt
      updatedAt
    }
    abbreviation
    externalID
    ancestry
    ancestryDepth
    createdAt
    updatedAt
    updatedBy
    active
    statistics {
      ModuleName
      type
      count
    }
    statisticsIncludingChildren {
      ModuleName
      type
      count
    }
    notes
    merge {
      mergeProcess {
        ...MergeProcessFragment
      }
      sourceUnitID
      sourceUnit {
        ...UnitFragment
      }
      targetUnitID
      targetUnit {
        ...UnitFragment
      }
      createdAt
      updatedAt
    }
  }
}
Variables
{"updateUnitInput": UpdateUnitInput}
Response
{
  "data": {
    "updateUnit": {
      "id": "4",
      "name": "xyz789",
      "institution": Institution,
      "parentUnit": Unit,
      "parentUnitID": 987,
      "childUnits": [Unit],
      "unitModules": [UnitModule],
      "abbreviation": "xyz789",
      "externalID": "xyz789",
      "ancestry": "abc123",
      "ancestryDepth": 987,
      "createdAt": "abc123",
      "updatedAt": "abc123",
      "updatedBy": "abc123",
      "active": true,
      "statistics": [Statistic],
      "statisticsIncludingChildren": [Statistic],
      "notes": "abc123",
      "merge": Merge
    }
  }
}

updateUnitLevel

Response

Returns a UnitLevel!

Arguments
Name Description
updateUnitLevelInput - UpdateUnitLevelInput!

Example

Query
mutation UpdateUnitLevel($updateUnitLevelInput: UpdateUnitLevelInput!) {
  updateUnitLevel(updateUnitLevelInput: $updateUnitLevelInput) {
    id
    institution {
      id
      unit {
        ...UnitFragment
      }
      unitCount
      isPlatform
      unificationStatus
    }
    units {
      id
      name
      institution {
        ...InstitutionFragment
      }
      parentUnit {
        ...UnitFragment
      }
      parentUnitID
      childUnits {
        ...UnitFragment
      }
      unitModules {
        ...UnitModuleFragment
      }
      abbreviation
      externalID
      ancestry
      ancestryDepth
      createdAt
      updatedAt
      updatedBy
      active
      statistics {
        ...StatisticFragment
      }
      statisticsIncludingChildren {
        ...StatisticFragment
      }
      notes
      merge {
        ...MergeFragment
      }
    }
    module {
      id
      name
      label
    }
    ancestryDepth
    label
    unitCount
    createdAt
    updatedAt
    updatedBy
  }
}
Variables
{"updateUnitLevelInput": UpdateUnitLevelInput}
Response
{
  "data": {
    "updateUnitLevel": {
      "id": "4",
      "institution": Institution,
      "units": [Unit],
      "module": Module,
      "ancestryDepth": 987,
      "label": "abc123",
      "unitCount": 123,
      "createdAt": "xyz789",
      "updatedAt": "abc123",
      "updatedBy": "xyz789"
    }
  }
}

Types

Boolean

Description

The Boolean scalar type represents true or false.

Example
{}

CreatePreviousNameInput

Fields
Input Field Description
unitID - Int! Unit the previous name is for.
name - String! The previous name of the unit.
usedFrom - String When the previous name use began. Ex. YYYY-MM-DD
usedTo - String When the previous name use ended. Ex. YYYY-MM-DD
Example
{}

CreateUnitInput

Fields
Input Field Description
name - String!
abbreviation - String! Shortened institution identifier for the unit. Must be unique amongst the units of the institution. 100 character limit. Also referred to as Internal Name.
externalID - String! Institution identifier for the unit. Must be unique amongst the units of the institution. 100 character limit. Also referred to as Unit ID.
parentUnitID - Int! ID of a Unit within the platform to nest the unit being created under.
Example
{}

CreateUnitLevelInput

Fields
Input Field Description
ancestryDepth - Int! Ancestry depth is a zero (0) indexed representation of the depth a unit exists within the hierarchy.
label - String!
Example
{}

CreateUploadURLInput

Fields
Input Field Description
fileExtension - String Determines the type of file being uploaded to S3. Accepts csv or xlsx.
Example
{}

CreateUploadURLResponse

Fields
Field Name Description
url - String! Direct to S3 upload URL. Pre-signed for 15 minutes.
path - String! Path within S3 bucket. To be POST back as the s3_location field on the /institutions/tenant_id/{tenant_id}/unit_unification/upload REST endpoint.
Example
{
  "url": "abc123",
  "path": "xyz789"
}

DateTime

Example
{}

FilterPreviousNameInput

Fields
Input Field Description
ids - [Int] Filter to a set of previous names. Not recommended to be combined with other filters.
unitIds - [Int]
usedFromDate - DateTime Filter to set of previous names after this date. Ex. YYYY-MM-DD
usedToDate - DateTime Filter to set of previous names before this date. Ex. YYYY-MM-DD
Example
{}

FilterUnitInput

Fields
Input Field Description
id - Int Filter to a specific unit. Not recommended to be combined with other filters.
ids - [Int] Filter to a set of units. Not recommended to be combined with other filters.
ancestryDepths - [Int] Filter by a collection of specific hierarchical depths. Zero (0) indexed.
moduleID - Int Filter by a specific module.
moduleIDs - [Int] Filter by a specific module.
searchString - String Filter by a search string. Name, externalID, and abbreviation fields are searched.
createdAtFrom - DateTime
createdAtTo - DateTime
updatedAtFrom - DateTime
updatedAtTo - DateTime
Example
{}

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
{}

Institution

Fields
Field Name Description
id - ID!
unit - Unit!
unitCount - Int!
Arguments
filterUnitInput - FilterUnitInput
isPlatform - Boolean! When true, the institution is flagged for platform management of organizational units and hierarchy.
unificationStatus - String!

Unification status provides the unification state for multi-module institutions.

Status values are:

  • NOT_STARTED
  • IN_PROGRESS
  • COMPLETE
Example
{
  "id": "4",
  "unit": Unit,
  "unitCount": 987,
  "isPlatform": true,
  "unificationStatus": "abc123"
}

InstitutionModule

Fields
Field Name Description
id - ID!
institution - Institution!
module - Module!
unitCount - Int!
Arguments
filterUnitInput - FilterUnitInput
label - String Institution customized label for the module.
Example
{
  "id": "4",
  "institution": Institution,
  "module": Module,
  "unitCount": 987,
  "label": "abc123"
}

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
{}

Merge

Description

Merge records represent the merging of two units, from source to target. The presence of these records exists only during a pending merge operation and is removed (along with the source unit) upon completion.

Fields
Field Name Description
mergeProcess - MergeProcess! Process encapsulating individual merge directives.
sourceUnitID - Int! Source unit ID. This is the unit ID that is being merged.
sourceUnit - Unit! Source unit. This is the unit that is being merged.
targetUnitID - Int! Target unit ID. This is the unit ID that the source unit is being merged into.
targetUnit - Unit! Target unit. This is the unit that the source unit is being merged into.
createdAt - String! Timestamp of when the merge was created.
updatedAt - String! Timestamp of when the merge was last updated.
Example
{
  "mergeProcess": MergeProcess,
  "sourceUnitID": 987,
  "sourceUnit": Unit,
  "targetUnitID": 123,
  "targetUnit": Unit,
  "createdAt": "xyz789",
  "updatedAt": "abc123"
}

MergeProcess

Fields
Field Name Description
status - String! Status of the merge, one of: IN_PROGRESS COMPLETE FAILED
createdBy - String Name of the user who initiated the merge.
createdByEmail - String Email of the user who initiated the merge.
createdAt - String! Timestamp of when the merge was created.
updatedAt - String! Timestamp of when the merge was last updated.
Example
{
  "status": "xyz789",
  "createdBy": "xyz789",
  "createdByEmail": "xyz789",
  "createdAt": "xyz789",
  "updatedAt": "xyz789"
}

MergeUnitsInput

Fields
Input Field Description
id - Int! Target unit id of the unit you are moving the data to.
unitIDs - [Int!] Id or ids of the units you are moving data from.
mergeChildren - Boolean When false(default) keep child units as children of the target unit or, when true, merge them into a new unit which can be supplied by targetChildID.
targetChildID - Int Optional secondary unit ID for merging child units into a different unit. Defaults to target unit id. Must be the target unit id or one of its children.
Example
{}

Module

Fields
Field Name Description
id - ID!
name - String!

Name is an internal identifier for a particular module.

Names include:

  • rpt
  • fs
  • far
  • lm
  • ids
    • IDS is not currently tracked, provisioned, or managed for platform unit management.
label - String!

Label is the default module label used within Interfolio.

Labels include:

  • Review, Promotion & Tenure
  • Faculty Search
  • Faculty Activity Reporting
  • Lifecycle Management
  • Interfolio Data Service
Example
{
  "id": "4",
  "name": "xyz789",
  "label": "xyz789"
}

PreviousName

Fields
Field Name Description
id - ID!
unit - Unit!
name - String!
source - String!

Source values are:

  • MANUAL
  • SYSTEM
usedFrom - String!
usedTo - String!
isCurrent - String!
createdBy - String!
updatedBy - String!
createdAt - String!
updatedAt - String!
Example
{
  "id": 4,
  "unit": Unit,
  "name": "abc123",
  "source": "xyz789",
  "usedFrom": "abc123",
  "usedTo": "abc123",
  "isCurrent": "xyz789",
  "createdBy": "abc123",
  "updatedBy": "xyz789",
  "createdAt": "xyz789",
  "updatedAt": "abc123"
}

Statistic

Fields
Field Name Description
ModuleName - String!

ModuleName is an internal identifier for a particular module.

ModuleNames include:

  • rpt
  • fs
  • far
  • lm
  • ids
type - String!

Type represents a specific statistic associated with the unit.

The following types are available:

  • Review, Promotion & Tenure
    • Active Committees
    • Cases
    • Case Templates
    • Open Appointment Cases
    • Open Cases
    • Open Other Cases
    • Open Promotion Cases
    • Open Reappointment Cases
    • Open Review Cases
    • Open Sabbatical Cases
    • Open Tenure Cases
  • Faculty Search
    • Positions
  • Lifecycle Management
    • Appointments
    • Appointments Without Rank Events
    • Appointments Without Profile Events
    • Overdue Events
    • Profile Ranks
    • Series
    • Upcoming Appointment Events
    • Upcoming End Events
    • Upcoming Events
    • Upcoming Promotion Events
    • User Role Assignments
  • Faculty Activity Reporting
    • Activity Classifications
    • Activity Input Forms
    • Committees
    • Courses Taught In Current Semester
    • Course Prefixes
    • Evaluation Forms
    • Evaluation Processes
    • Evaluation Workflows
    • Evaluations
    • Faculty Assigned to Unit
    • Faculty Classification Forms
    • Faculty Classifications
    • Grant In Progress
    • IDS Accepted Recommendations
    • IDS Recommendations That Need Rev
    • Input Requests Submitted For Revi
    • Institutional Vita Templates
    • Legacy Vita Templates
    • Profile Forms
    • Scholarly Activities In Progress
count - Int! Count represents the number of records found for a particular type.
Example
{
  "ModuleName": "abc123",
  "type": "xyz789",
  "count": 123
}

String

Description

The Stringscalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
{}

Unit

Fields
Field Name Description
id - ID!
name - String!
institution - Institution!
parentUnit - Unit
parentUnitID - Int
childUnits - [Unit]
Arguments
moduleId - Int
unitModules - [UnitModule]
Arguments
moduleId - Int
abbreviation - String Shortened institution identifier for the unit. Must be unique amongst the units of the institution. 100 character limit. Also referred to as Internal Name.
externalID - String Institution identifier for the unit. Must be unique amongst the units of the institution. 100 character limit. Also referred to as Unit ID.
ancestry - String! Ancestry is a slash (/) delimited list of unit IDs, representing the parent(s) down to the current unit.
ancestryDepth - Int! Ancestry depth is a zero (0) indexed representation of the depth a unit exists within the hierarchy.
createdAt - String!
updatedAt - String!
updatedBy - String
active - Boolean! Indicates whether or not the unit is active at the platform. An inactive unit will not be active in any modules.
statistics - [Statistic] Provides a collection of various statistics for the unit. Can only be queried for once per request.
statisticsIncludingChildren - [Statistic] Provides a collection of various statistics for the unit and all of it's children. Can only be queried once per a request and can not be combined with a call for statistics.
notes - String
merge - Merge Merge record associated with the unit while it is pending being merged into another unit.
Example
{
  "id": "4",
  "name": "xyz789",
  "institution": Institution,
  "parentUnit": Unit,
  "parentUnitID": 987,
  "childUnits": [Unit],
  "unitModules": [UnitModule],
  "abbreviation": "xyz789",
  "externalID": "xyz789",
  "ancestry": "xyz789",
  "ancestryDepth": 123,
  "createdAt": "abc123",
  "updatedAt": "abc123",
  "updatedBy": "xyz789",
  "active": false,
  "statistics": [Statistic],
  "statisticsIncludingChildren": [Statistic],
  "notes": "xyz789",
  "merge": Merge
}

UnitLevel

Fields
Field Name Description
id - ID!
institution - Institution!
units - [Unit]
module - Module!
ancestryDepth - Int! Ancestry depth is a zero (0) indexed representation of the depth a unit exists within the hierarchy.
label - String
unitCount - Int!
createdAt - String!
updatedAt - String!
updatedBy - String
Example
{
  "id": 4,
  "institution": Institution,
  "units": [Unit],
  "module": Module,
  "ancestryDepth": 987,
  "label": "xyz789",
  "unitCount": 987,
  "createdAt": "xyz789",
  "updatedAt": "xyz789",
  "updatedBy": "abc123"
}

UnitModule

Fields
Field Name Description
id - ID!
module - Module!
unit - Unit!
active - Boolean! When false, unit is inactive within that module. This feature is not supported at this time.
refId - String! Represents the ID of the unit within the specific module within Interfolio.
createdAt - String!
updatedAt - String!
Example
{
  "id": "4",
  "module": Module,
  "unit": Unit,
  "active": false,
  "refId": "abc123",
  "createdAt": "xyz789",
  "updatedAt": "xyz789"
}

UpdatePreviousNameInput

Fields
Input Field Description
id - Int!
unitID - Int Update the unit the previous name is for.
name - String The previous name of the unit.
usedFrom - String When the previous name use began. Ex. YYYY-MM-DD
usedTo - String When the previous name use ended. Ex. YYYY-MM-DD
Example
{}

UpdateUnitInput

Fields
Input Field Description
id - Int!
name - String Name of the unit. If not provided, the name will not be changed.
abbreviation - String Shortened institution identifier for the unit. Must be unique amongst the units of the institution. 100 character limit. Also referred to as Internal Name. If not provided, the name will not be changed.
externalID - String Institution identifier for the unit. Must be unique amongst the units of the institution. 100 character limit. Also referred to as Unit ID. If not provided, the name will not be changed.
parentUnitID - Int ID of a Unit within the platform to nest the unit being updated under. If not provided, the unit will not be moved.
notes - String Notes of a unit. If not provided, the notes will not be updated.
Example
{}

UpdateUnitLevelInput

Fields
Input Field Description
ancestryDepth - Int! Ancestry depth is a zero (0) indexed representation of the depth a unit exists within the hierarchy.
label - String!
Example
{}

Upload

Fields
Field Name Description
id - ID!
institution - Institution!
type - String! Type can be: unification, or upload
status - String

State of the upload.

Valid values:

  • NOT_STARTED
  • IN_PROGRESS
  • COMPLETE
rowsTotal - Int!
rowsProcessed - Int!
rowsSuccessful - Int!
rowsFailed - Int!
createdBy - String
createdAt - String!
updatedAt - String!
Example
{
  "id": "4",
  "institution": Institution,
  "type": "xyz789",
  "status": "xyz789",
  "rowsTotal": 123,
  "rowsProcessed": 987,
  "rowsSuccessful": 987,
  "rowsFailed": 987,
  "createdBy": "xyz789",
  "createdAt": "xyz789",
  "updatedAt": "abc123"
}