Field values (V1)¶
This service calls V1's field-value endpoints directly. To read or change a company's, person's
or list entry's field values, use companies / persons get_field_values,
update_field_value and batch_update_fields, or the list-entry methods, which use V2. See
Field values.
Service for managing field values.
For list entry field values, prefer ListEntryService.update_field_value(). Use this for global field values not tied to list entries.
Source code in affinity/services/v1_only.py
1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 | |
create(data: FieldValueCreate) -> FieldValue
¶
Create a field value (V1 API).
Note: V1 writes require numeric field IDs. The SDK accepts V2-style
field-<digits> IDs and converts them; enriched/relationship-intelligence
IDs are not supported.
Source code in affinity/services/v1_only.py
1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 | |
delete(field_value_id: FieldValueId) -> bool
¶
Delete a field value.
Source code in affinity/services/v1_only.py
1367 1368 1369 1370 | |
get_for_entity(field_id: str | FieldId, *, person_id: PersonId | None = None, company_id: CompanyId | None = None, opportunity_id: OpportunityId | None = None, list_entry_id: ListEntryId | None = None, default: T = _UNSET) -> FieldValue | T | None
¶
Get a specific field value for an entity.
Convenience method that fetches all field values and returns the one matching field_id. Like dict.get(), returns None (or default) if not found.
Note: This still makes one API call to fetch all field values for the entity.
For entities with hundreds of field values, prefer using list() directly
if you need to inspect multiple fields.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
field_id
|
str | FieldId
|
The field to look up (accepts str or FieldId for convenience) |
required |
person_id
|
PersonId | None
|
Person entity (exactly one entity ID required) |
None
|
company_id
|
CompanyId | None
|
Company entity |
None
|
opportunity_id
|
OpportunityId | None
|
Opportunity entity |
None
|
list_entry_id
|
ListEntryId | None
|
List entry entity |
None
|
default
|
T
|
Value to return if field not found (default: None) |
_UNSET
|
Returns:
| Name | Type | Description |
|---|---|---|
FieldValue | T | None
|
FieldValue if the field has a value, default otherwise. |
|
Note |
FieldValue | T | None
|
A FieldValue with |
Example
Check if a person has a specific field value¶
status = client.field_values.get_for_entity( "field-123", # or FieldId("field-123") person_id=PersonId(456), ) if status is None: print("Field is empty") else: print(f"Value: {status.value}")
With default value¶
status = client.field_values.get_for_entity( "field-123", person_id=PersonId(456), default="N/A", )
Source code in affinity/services/v1_only.py
1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 | |
list(*, person_id: PersonId | None = None, company_id: CompanyId | None = None, opportunity_id: OpportunityId | None = None, list_entry_id: ListEntryId | None = None) -> list[FieldValue]
¶
Get field values for an entity.
Exactly one of person_id, company_id, opportunity_id, or list_entry_id must be provided.
Raises:
| Type | Description |
|---|---|
ValueError
|
If zero or multiple IDs are provided. |
Source code in affinity/services/v1_only.py
1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 | |
list_batch(person_ids: Sequence[PersonId] | None = None, company_ids: Sequence[CompanyId] | None = None, opportunity_ids: Sequence[OpportunityId] | None = None, *, on_error: Literal['raise', 'skip'] = 'raise') -> dict[PersonId | CompanyId | OpportunityId, builtins.list[FieldValue]]
¶
Get field values for multiple entities.
Performance note: This makes one API call per entity (O(n) calls). There is no server-side batch endpoint. Use this for convenience and consistent error handling, not for performance optimization. For parallelism, use the async client.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
person_ids
|
Sequence[PersonId] | None
|
Sequence of person IDs (mutually exclusive with others) |
None
|
company_ids
|
Sequence[CompanyId] | None
|
Sequence of company IDs |
None
|
opportunity_ids
|
Sequence[OpportunityId] | None
|
Sequence of opportunity IDs |
None
|
on_error
|
Literal['raise', 'skip']
|
How to handle errors - "raise" (default) or "skip" failed IDs |
'raise'
|
Returns:
| Name | Type | Description |
|---|---|---|
dict[PersonId | CompanyId | OpportunityId, list[FieldValue]]
|
Dict mapping entity_id -> list of field values. |
|
Note |
dict[PersonId | CompanyId | OpportunityId, list[FieldValue]]
|
Dict ordering is not guaranteed; do not rely on insertion order. |
Example
Check which persons have a specific field set¶
fv_map = client.field_values.list_batch(person_ids=person_ids) for person_id, field_values in fv_map.items(): has_status = any(fv.field_id == target_field for fv in field_values)
Source code in affinity/services/v1_only.py
1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 | |
update(field_value_id: FieldValueId, value: Any) -> FieldValue
¶
Update a field value.
Source code in affinity/services/v1_only.py
1358 1359 1360 1361 1362 1363 1364 1365 | |