By default, each tab (field) is owned by the recipient that the tab is owned by. If you want a tab to modified by more than one recipient, the tab must be marked as shared.
You can use the API Request Builder to experiment. You can then have the API Request Builder create the Python code for you.
So to have a tab be modified by one signer and not by another:
"recipients": {
"signers": [
{
"email": "signer_email@example.com",
"name": "Signer's name", // This signer can modify the tab.
"recipientId": "1", // Other signers cannot
"tabs": {
"signHereTabs": [
{
"anchorString": "/sig1/",
"anchorXOffset": "20",
"anchorUnits": "pixels"
}
],
"textTabs": [
{
"anchorString": "/sig1/",
"locked": "false", // the tab is NOT read-only
"value": "initial value in the field",
"required": "true", // the signer must update the tab
"tabLabel": "data_label", // The data label for the tab
"shared": "false" // only this signer can modify the value
}
]
}
}
]
}