A valid request URL is required to generate request examples{
"agreements": [
{
"document_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"title": "<string>",
"enforcement": "required",
"version": 123,
"summary": "<string>",
"effective_at": "2023-11-07T05:31:56Z",
"accepted": true,
"accepted_at": "2023-11-07T05:31:56Z",
"pending": true,
"blocking": true,
"deferrable": true,
"accept_by": "2023-11-07T05:31:56Z"
}
],
"blocking": 123
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}What I am being asked to agree to
Every document in force in this environment, with whether this person has agreed answered beside each one.
Not only the outstanding ones: “which version of the terms am I on, and when did I accept it” is a question an account screen answers, and a read that carried only what is pending would make you ask for the rest one document at a time.
pending is the decision, and it is not “they have not accepted this exact version”. A version that declared requires_reacceptance sets a floor; somebody is in good standing when they accepted anything at or above it. A corrected typo does not put two hundred thousand people back in front of a checkbox.
blocking is pending on a required document — what to interrupt on. blocking at the top level is how many there are, stated rather than left to be derived by filtering the list.
An anonymous session is not a special case: it has a contact like any other, sees the documents and has agreed to none of them, and its acceptance is recorded against that visitor row — which is what makes “agree before you sign up” possible on a landing page. The merge carries it onto the identified contact.
It needs a verified session for what the write does rather than for what the read reveals: an acceptance is a legal statement attributed to a named person, and an unverified identified session is an assertion anybody who knows an external_id can make from a browser.
A valid request URL is required to generate request examples{
"agreements": [
{
"document_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"title": "<string>",
"enforcement": "required",
"version": 123,
"summary": "<string>",
"effective_at": "2023-11-07T05:31:56Z",
"accepted": true,
"accepted_at": "2023-11-07T05:31:56Z",
"pending": true,
"blocking": true,
"deferrable": true,
"accept_by": "2023-11-07T05:31:56Z"
}
],
"blocking": 123
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Authorizations
A contact session token, uk_ct_…. Belongs to one of the developer's own users, and reads only that user's data.