Users: Signers, Witnesses, Contacts, Notaries

Users at Notarize come in four flavors:
Signers
Witnesses
Contacts
Notaries

Signers

Signers are users who are agreeing to the terms of the document. At least one signature of theirs will appear on the document. Their names and email addresses must be provided at time of transaction creation.
Signer information must be provided in the signers array of the Create (or Update) Transaction call.

Witnesses

Witnesses will sign the document, but they are distinct from signers. Where signers must be "named" in advance, witnesses can be "generic" at time of transaction creation.
There is no "witness array". "Tags" for witnesses can be included in the signing_designations array with the generic monikers witness1 and witness2. Individuals who will act as witnesses can be co-located with the signer or receive a link to join the meeting after it has begun, depending on limitations by state. In either case, the witness will provide their name at the time of joining the transaction.

Contacts

Contacts are users who can be kept informed of the state of the transaction, but will not be a party to it. Their signatures will not appear on the document.
Contacts can have roles of: escrow_officer, loan_officer, real_estate_agent, title_agent, loan_processor, mortgage_broker, closer, or other

Notaries

Notaries are distinct from signers (even though their signatures appear on the documents). They are distinct from Witnesses, even though there are limited legal cases where the notary can act as a witness. They are also distinct from Contacts, even in the case where the Title Agent is also the Notary.
For Notary-On-Demand services, the notary is not named in advance. The signer will be paired with the first available, qualified, notary. "Tags" for notaries can be placed using the generic notary moniker.
For so-called "Bring-Your-Own-Notary" transactions, even when the notary is known in advance, use the generic moniker notary for "tags" and do not list the notary in the signers array. BYON notaries cannot currently be assigned to a transaction using the API. The web UI provides this functionality.