{
  "service": "Creditcrest Operations",
  "version": "1.0.0",
  "not_a_decision": "This records the work people did on a file and checks it against the lender’s own workflow. The conclusion is the assessor’s, not this software’s. Creditcrest Technologies is not a credit provider, is not a credit assistance provider, and does not hold an Australian credit licence. Its software produces evidence; the licensee makes the decision.",
  "stores": "nothing",
  "roles": {
    "assessor": "Works files assigned to them.",
    "senior": "Works any assigned file, may act on a colleague’s file, and may give a second check.",
    "compliance": "Reads everything, reports, and may give a second check. Does not work files.",
    "admin": "Works any assigned file and administers the queue.",
    "auditor": "Reads everything and reports. Changes nothing."
  },
  "events": {
    "opened": "The file arrived.",
    "assigned": "Somebody took the file, or was given it. `to` is who.",
    "released": "The holder let the file go. Needs a reason.",
    "moved": "The file moved to another state of the workflow.",
    "checked": "A checklist item was completed, marked not applicable, blocked or re-opened. Closing one needs a note.",
    "noted": "A note. Notes are never edited.",
    "document requested": "Something was asked of the applicant. `id` names it.",
    "document received": "What was asked for arrived.",
    "document cancelled": "What was asked for is no longer needed. Needs a reason.",
    "extracted": "Fields were read off a document by some other system. A proposal until a person reviews it.",
    "reviewed": "A person accepted or rejected extracted fields.",
    "figure changed": "A figure in the file was corrected. Needs the old value, the new one and a reason.",
    "rebutted": "A person answered a signal on the file — a flag from the statement, a policy referral — with a rationale of at least twenty characters and at least one piece of evidence. The signal is kept beside the answer.",
    "rebuttal withdrawn": "A rebuttal taken back. Needs the rebuttal’s id and a reason; the rebuttal stays in the trail.",
    "concluded": "A person concluded. `conclusion` is one of record.js’s four.",
    "confirmed": "A second person confirmed a conclusion.",
    "sent back": "A second person returned a conclusion for more work. Needs a reason."
  },
  "example_workflow": {
    "key": "application-review",
    "version": "example-1",
    "status": "published",
    "start": "received",
    "states": {
      "received": {
        "limitDays": 1,
        "what": "In the queue, not yet picked up"
      },
      "in review": {
        "limitDays": 2,
        "what": "Being worked"
      },
      "waiting on applicant": {
        "pauses": true,
        "what": "Waiting for something from the applicant; the clock stops"
      },
      "concluded": {
        "terminal": true,
        "what": "A person has concluded"
      },
      "withdrawn": {
        "terminal": true,
        "what": "The application did not proceed"
      }
    },
    "moves": {
      "received": [
        "in review",
        "withdrawn"
      ],
      "in review": [
        "waiting on applicant",
        "withdrawn"
      ],
      "waiting on applicant": [
        "in review",
        "withdrawn"
      ]
    },
    "checklist": [
      {
        "key": "requirements",
        "label": "Requirements and objectives inquired about and recorded",
        "required": true
      },
      {
        "key": "financial-situation",
        "label": "Financial situation inquired about",
        "required": true
      },
      {
        "key": "verification",
        "label": "Financial situation verified — statements read and figures reconciled",
        "required": true
      },
      {
        "key": "ninety-days",
        "label": "Ninety days of transactions obtained and considered, for a small amount contract",
        "required": false
      },
      {
        "key": "reasons",
        "label": "Reasons for the conclusion written by the assessor",
        "required": true
      }
    ],
    "secondCheck": [
      "conclusion"
    ]
  },
  "endpoints": {
    "POST /v1/operations/case": "{workflow?, people, events, asAt, holidays?, reference?, priority?} — the file replayed",
    "POST /v1/operations/queue": "{workflow?, people, cases: [{reference, priority, events}], asAt} — the queue, in the order to pick files up"
  }
}