Agreement routes: sign, terminate
The Agreement Verbs sign, terminate as api.sb routes, with inputs, result, refusals and an example.
Reference for Agreement, one group of Agreement routes.
Agreement.sign
Sign executes an Agreement for one Party and records the signature, the signer and the time. Verb page.
POST /{namespace}/ agreements/ {agreement}/ signPath: agreement. Emits Agreement.signed.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
agreement | Agreement | required | The Agreement to sign. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
agreement | Agreement | required | The Agreement, in force once every party signs. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
| The record is not in a state that allows this Verb, so the call is refused. | refused | Read the record, run the Verb that moves it to an allowed state, then retry. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ agreements/ agreement_zHIUnX8LwY/ sign \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"{
"api": "https: //api.sb/ leaseline.app",
"agreement": {
"$id": "https: //api.sb/ leaseline.app/ agreements/ agreement_zHIUnX8LwY",
"$type": "Agreement",
"status": "signed"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Agreement.sign",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Agreement.terminate
Terminate ends an Agreement under its own term, records the reason and the date, and keeps the signed record. Verb page.
POST /{namespace}/ agreements/ {agreement}/ terminatePath: agreement. Body, as JSON: the other inputs. Emits Agreement.terminated.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
agreement | Agreement | required | The Agreement in force. |
reason | text | required | The term it ends under and why. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
agreement | Agreement | required | The terminated Agreement, kept forever. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
| The record changed since it was read, so the write would overwrite a newer version. | conflict | Read the record again, then retry the write against its current state. | None. |
| The record is not in a state that allows this Verb, so the call is refused. | refused | Read the record, run the Verb that moves it to an allowed state, then retry. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ agreements/ agreement_zHIUnX8LwY/ terminate \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"reason": "Example reason"}'{
"api": "https: //api.sb/ leaseline.app",
"agreement": {
"$id": "https: //api.sb/ leaseline.app/ agreements/ agreement_zHIUnX8LwY",
"$type": "Agreement",
"status": "terminated"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Agreement.terminate",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}