Create a negotiation, set some answers, and send to a counterparty

Please ensure that you have reviewed the prerequisites before following this guide.
We'll provide details on the following required steps:
  1. Create a negotiation from a document id
  1. Make your API key the active user on the negotiation
  1. Save answers on the negotiation
  1. Set the 'owner' (initiating) entity for the negotiation
  1. Save one or more counterparties (receivers) for the negotiation
  1. Send the negotiation for the first time

1. Create a negotiation from a document id

Request
The concept of a document in CreateiQ is analogous to a document template - it's the scaffold of the underlying legal document that a negotiation can be based upon.
To create a negotiation from a document you need a Document ID. To discover how to list all documents available in your subaccount please refer to Step 1 in https://help.createiq.tech/list-all-documents-available-to-you-and-fetch-their-schemas.
As well as the Sub Account ID in the URL this endpoint takes a JSON payload that looks like:
{ presetId: UUID, -- (optional) documentId: UUID, -- (optional) negotiationId: UUID, -- (optional) }
It is expected that only one of these optional parameters is defined in the payload to, respectively:
  • Create a negotiation based on an answer template
  • Create a negotiation based on a document (we'll use this parameter)
  • Create a negotiation based on another negotiation (used only in triparty, custody flows)
Call this endpoint, using a document ID 'DOCUMENT ID' with a payload like:
{ documentId: "DOCUMENT ID" }
Response
A full object describing the negotiation that has been created. For now, we'll take the id field.

2. Make your API key the active user on the document

To make changes to a negotiation you must be the 'active user'. API credentials can claim the active user spot.
Request
Using the negotiation id returned in the previous step:
This claims the active user spot, the 'owner' for the credentials you are using to authenticate the call ('myself').
Response
A full object describing the negotiation for which you are now the active user.

3. Save answers on the negotiation

Request
Using the Negotiation ID from the previous step, we can save some answers. The structure of answers is defined by the document schema and can be observed by using developer tools in the CreateiQ User interface, setting some answers and intercepting the request payloads in the Network tab. Some example answers for a 2016 IM CSA (NY Law) have been included in this request below, but will vary from document to document.
In addition to the Sub Account ID and Negotiation ID specified in the URL, this endpoint also expects a JSON payload of answers. It is important to note that this endpoint accepts a complete answer set, and does not accept diffs or deltas. The answer set that you post to this endpoint will overwrite all answers for the negotiation.
{ "umbrella_agreement_and_principal_identification": { "is_applicable": "not_applicable" }, "additional_regimes": {}, "pledgor_posting_obligations": {}, "additional_obligations": { "additional_obligations": "none" }, "other_eligible_support": { "other_eligible_support": "none" }, "rounding": { "delivery_amount": "10000", "return_amount": "10000" }, "transfer_timing": { "specified": "false" }, "conditions_precedent": { "specified": "false" }, "access_conditions": { "partyA_illegality": "applicable", "partyB_illegality": "applicable", "partyA_force_majeure": "applicable", "partyB_force_majeure": "applicable", "partyA_tax_event": "applicable", "partyB_tax_event": "applicable", "partyA_tax_event_upon_merger": "applicable", "partyB_tax_event_upon_merger": "applicable", "partyA_credit_event_upon_merger": "applicable", "partyB_credit_event_upon_merger": "applicable", "partyA_additional_termination_events": "applicable", "partyB_additional_termination_events": "applicable" }, "consent": { "is_applicable": "standard" }, "resolution_time": { "specified": "true", "time": "13:00", "location": "New York, United States of America" }, "pledgor_additional_rights_event": { "applicable": "false" }, "delivery_in_lieu_right": { "right": "applicable" }, "custodian_risk": { "partyA_custodian_risk": "not_specified", "partyB_custodian_risk": "not_specified" }, "custodian_event": { "definition": "applicable" }, "control_agreement_as_a_credit_support_document": { "definition": "not_specified" }, "other_provisions": { "specify_provisions": "none_specified" }, "support_value": { "is_applicable": "not_applicable" }, "support_transfer": { "is_applicable": "not_applicable" }, "execution_language": { "execution_language": "IN WITNESS WHEREOF the parties have executed this Annex on the respective dates specified below with effect from the first date specified on the first page of this Annex." }, "signature_blocks": { "partyA_standard": "[Insert name of Party A]\n\nBy: ___________________________\n\nName:\n\nTitle:\n\nDate:\n\nBy: ___________________________\n\nName:\n\nTitle:\n\nDate:", "partyB_standard": "[Insert name of Party B]\n\nBy: ___________________________\n\nName:\n\nTitle:\n\nDate:\n\nBy: ___________________________\n\nName:\n\nTitle:\n\nDate:" }, "date_of_isda_master_agreement": { "master_agreement_date": "2022-07-07" }, "emir": { "partyA_secured_party": "not_applicable", "partyB_secured_party": "not_applicable" }, "prudential": { "partyA_secured_party": "not_applicable", "partyB_secured_party": "not_applicable" }, "cftc": { "partyA_secured_party": "not_applicable", "partyB_secured_party": "applicable", "partyB_SIMM": "not_applicable", "partyB_retrospective": "applicable" } }
Response
Once again a full Negotiation is returned in the JSON response. The answers key will reflect the new answers that you have set. Answer keys that are not part of the schema will be automatically ignored.

4. Set the 'owner' (initiating) entity for the negotiation

Request
In addition to the Sub Account ID and Negotiation ID from the previous steps, this endpoint expects a JSON payload to specify an entity. This entity must already be assigned to your subaccount to be used (In the user interface see the 'settings' screen and the 'entities' option in the sidebar). Entity assignment is a manual process and cannot be performed via an API Credential.
{ "ownerEntityId": "123" }
The owner entity id can be either a UUID, which indicates that the entity doesn't have an LEI associated with it. These UUIDs are generated by CreateiQ when the entity is assigned to an account. Or, it can be an LEI. Lets use the Linklaters LEI in this instance:
{ "ownerEntityId": "2138008ANDWS1PN19B62" }
Response
Once again a full Negotiation is returned in the JSON response. The parties key will reflect the new entity that you have selected for the 'initiator' party.

5. Save one or more counterparties (receivers) for the negotiation

Now that we have created a negotiation, saved some answers and selected the entity that we would like to represent as the Initiator of the negotiation, it's time to choose the counterparty(-ies) that we'll be sending this Negotiation invitation to.
Request
For each counterparty we need to select the entity that we expect them to represent, and specify at least one email address of someone at that counterparty to get an email notification that action is expected. In this case we're going to send to matthew@fakecorp.com and alice/bob@notarealcorp.com. Multiple counterparties can be specified, and a new negotiation is created for each counterparty automatically in Step 6. For a first counterparty, or if only one counterparty is specified, our existing Negotiation ID will remain.
In addition to the Sub Account ID and Negotiation ID from the previous steps, this endpoint expects a JSON array payload to specify a list of counterparties. Demonstrating with two counterparties, the first of which has one recipient and the second of which has two recipients. The first counterparty has a non-LEI entity specified, and the second uses the Linklaters LLP Association's LEI:
[ { "entity": { "id": "ee24e3c6-fd36-3a12-bf71-09b00edb9ec7", "name": "Non LEI Entity Name" }, "email": "matthew@fakecorp.com" }, { "entity": { "id": "222100VLKWE12PBCL473", "name": "LINKLATERS LLP ASSOCIATION", "lei": "222100VLKWE12PBCL473", "legalJurisdiction": "LU" }, "email": "alice@notarealcorp.com", "additionalEmails": [ "bob@notarealcorp.com" ] } ]
Note: The first receiver in the list should be specified in the "email" field, with any additional receivers specified in the "additionalEmails" field.
Response
Once again a full Negotiation is returned in the JSON response. The draftCounterparties key will reflect the counterparties that you have saved so far.

6. Send the negotiation for the first time

Request
We're ready to send to counterparty for the first time. This can be achieved with the endpoint:
There is no compulsory JSON body expected on this request.
Response
A list of negotiation JSONs will be returned from this endpoint, one negotiation per counterparty has now been created.