# system.kanoa.operators.addOperatorShiftAssignment(assignmentInfo, userId)

Assigns a single operator to a shift by inserting one sch.operatorShiftAssignment row. Use this for
an individual assignment not generated from a crew - see assignCrewToShift for assigning an entire crew.

---
### Parameters
**assignmentInfo** `Dictionary`<br />
<table class='dictionaryKeyTable'>
	<tbody>
 	<tr><td> - assetId</td><td>Integer</td><td>Not required. Ignored if shiftId is supplied (assetId is then resolved from sch.shift)</td></tr>	
 	<tr><td> - endDate</td><td>String</td><td></td></tr>	
 	<tr><td> - shiftId</td><td>Integer</td><td>Not required. The sch.shift this assignment is tied to</td></tr>	
 	<tr><td> - startDate</td><td>String</td><td></td></tr>	
 	<tr><td> - userId</td><td>Integer</td><td>The sec.user being assigned</td></tr>	
	</tbody>
</table>

**userId** `Integer`: The user performing this action (createdBy)<br />

---
### Returns
**operatorShiftAssignmentId** `Integer` the new assignment's id on success, None on failure<br />
**message** `String` None on success, an error message on failure<br />

---
### Example
```python
assignmentInfo = {'userId': 5,	'assetId': 4, 'startDate': system.date.now(), 'endDate': None}
userId = 12
rowsAffected, message = system.kanoa.operators.addOperatorShiftAssignment(assignmentInfo, userId)
```
