Skip to content

Employee


GET /employees

GET
/employees

Find all instances of the model matched by filter from the data source.

Parameters

Query Parameters

filter

Filter defining fields, where, include, order, offset, and limit

Typestring

Responses

Request was successful

application/json
JSON
[
{
"name": "string",
"number": "string",
"email": "string",
"phoneNumber": "string",
"type": "regular",
"clockInAllowedAt": "string",
"hireDate": "string",
"active": true,
"externalId": "string",
"receivesLateClockInNotifications": true,
"id": "string",
"companyId": "string",
"divisionId": "string",
"plantId": "string",
"truckId": "string",
"createdAt": "string",
"updatedAt": "string",
"typeId": "string",
"timeCategoryIds": [
"string"
],
"defaultTimeCategoryId": "string"
}
]

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/count

GET
/employees/count

Count instances of the model matched by where from the data source.

Parameters

Query Parameters

where

Criteria to match model instances

Typestring

Responses

Request was successful

application/json
JSON
{
"count": 0
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/filter

GET
/employees/filter

Get filtered employees

Parameters

Query Parameters

keyword

Filter keyword

Typestring
type

Filter type

Typestring

Responses

Request was successful

application/json
JSON
[
{
}
]

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/filterTypes

GET
/employees/filterTypes

Get available filter types

Responses

Request was successful

application/json
JSON
[
{
}
]

Playground

Samples

cURL
JavaScript
PHP
Python

GET /employees/findOne

GET
/employees/findOne

Find first instance of the model matched by filter from the data source.

Parameters

Query Parameters

filter

Filter defining fields, where, include, order, offset, and limit

Typestring

Responses

Request was successful

application/json
JSON
{
"name": "string",
"number": "string",
"email": "string",
"phoneNumber": "string",
"type": "regular",
"clockInAllowedAt": "string",
"hireDate": "string",
"active": true,
"externalId": "string",
"receivesLateClockInNotifications": true,
"id": "string",
"companyId": "string",
"divisionId": "string",
"plantId": "string",
"truckId": "string",
"createdAt": "string",
"updatedAt": "string",
"typeId": "string",
"timeCategoryIds": [
"string"
],
"defaultTimeCategoryId": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}

GET
/employees/{id}

Find a model instance by {{id}} from the data source.

Parameters

Path Parameters

id*

Model id

Typestring
Required

Query Parameters

filter

Filter defining fields and include

Typestring

Responses

Request was successful

application/json
JSON
{
"name": "string",
"number": "string",
"email": "string",
"phoneNumber": "string",
"type": "regular",
"clockInAllowedAt": "string",
"hireDate": "string",
"active": true,
"externalId": "string",
"receivesLateClockInNotifications": true,
"id": "string",
"companyId": "string",
"divisionId": "string",
"plantId": "string",
"truckId": "string",
"createdAt": "string",
"updatedAt": "string",
"typeId": "string",
"timeCategoryIds": [
"string"
],
"defaultTimeCategoryId": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/account

GET
/employees/{id}/account

Fetches hasOne relation account.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

refresh
Typeboolean

Responses

Request was successful

application/json
JSON
{
"type": "string",
"subType": "string",
"sysdyneId": "string",
"realm": "string",
"username": "string",
"credentials": {
},
"challenges": {
},
"email": "string",
"emailVerified": true,
"status": "string",
"created": "string",
"lastUpdated": "string",
"id": "string",
"createdAt": "string",
"updatedAt": "string",
"companyId": "string",
"divisionId": "string",
"employeeId": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

POST /employees/{id}/breakEnd

POST
/employees/{id}/breakEnd

End Break

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Request Body

application/json
JSON
{
"end": "string"
}

Responses

Request was successful

Playground

Variables
Key
Value
Body

Samples

cURL
JavaScript
PHP
Python

POST /employees/{id}/breakStart

POST
/employees/{id}/breakStart

Start Break

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Request Body

application/json
JSON
{
"start": "string"
}

Responses

Request was successful

Playground

Variables
Key
Value
Body

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/callOuts

GET
/employees/{id}/callOuts

GET /employees/{id}/callOuts

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

filter
Typestring
Format"JSON"

Responses

Request was successful

application/json
JSON
[
{
"clockInAllowedAt": "string",
"note": "string",
"phoneNumber": 0,
"confirmed": false,
"reply": "string",
"id": "string",
"userId": "string",
"companyId": "string",
"plantId": "string",
"employeeId": "string",
"createdAt": "string",
"updatedAt": "string",
"timeCategoryId": "string"
}
]

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

POST /employees/{id}/callOuts

POST
/employees/{id}/callOuts

POST /employees/{id}/callOuts

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Request Body

application/json
JSON
{
"clockInAllowedAt": "string",
"note": "string",
"phoneNumber": 0,
"confirmed": false,
"reply": "string",
"id": "string",
"userId": "string",
"companyId": "string",
"plantId": "string",
"employeeId": "string",
"createdAt": "string",
"updatedAt": "string",
"timeCategoryId": "string"
}

Responses

Request was successful

application/json
JSON
{
"clockInAllowedAt": "string",
"note": "string",
"phoneNumber": 0,
"confirmed": false,
"reply": "string",
"id": "string",
"userId": "string",
"companyId": "string",
"plantId": "string",
"employeeId": "string",
"createdAt": "string",
"updatedAt": "string",
"timeCategoryId": "string"
}

Playground

Variables
Key
Value
Body

Samples

cURL
JavaScript
PHP
Python

DELETE /employees/{id}/callOuts

DELETE
/employees/{id}/callOuts

DELETE /employees/{id}/callOuts

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Responses

Request was successful

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/callOuts/count

GET
/employees/{id}/callOuts/count

GET /employees/{id}/callOuts/count

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

where

Criteria to match model instances

Typestring
Format"JSON"

Responses

Request was successful

application/json
JSON
{
"count": 0
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/callOuts/{fk}

GET
/employees/{id}/callOuts/{fk}

GET /employees/{id}/callOuts/{fk}

Parameters

Path Parameters

fk*

Foreign key for callOuts

Typestring
Required
id*

PersistedModel id

Typestring
Required

Responses

Request was successful

application/json
JSON
{
"clockInAllowedAt": "string",
"note": "string",
"phoneNumber": 0,
"confirmed": false,
"reply": "string",
"id": "string",
"userId": "string",
"companyId": "string",
"plantId": "string",
"employeeId": "string",
"createdAt": "string",
"updatedAt": "string",
"timeCategoryId": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

PUT /employees/{id}/callOuts/{fk}

PUT
/employees/{id}/callOuts/{fk}

PUT /employees/{id}/callOuts/{fk}

Parameters

Path Parameters

fk*

Foreign key for callOuts

Typestring
Required
id*

PersistedModel id

Typestring
Required

Request Body

application/json
JSON
{
"clockInAllowedAt": "string",
"note": "string",
"phoneNumber": 0,
"confirmed": false,
"reply": "string",
"id": "string",
"userId": "string",
"companyId": "string",
"plantId": "string",
"employeeId": "string",
"createdAt": "string",
"updatedAt": "string",
"timeCategoryId": "string"
}

Responses

Request was successful

application/json
JSON
{
"clockInAllowedAt": "string",
"note": "string",
"phoneNumber": 0,
"confirmed": false,
"reply": "string",
"id": "string",
"userId": "string",
"companyId": "string",
"plantId": "string",
"employeeId": "string",
"createdAt": "string",
"updatedAt": "string",
"timeCategoryId": "string"
}

Playground

Variables
Key
Value
Body

Samples

cURL
JavaScript
PHP
Python

DELETE /employees/{id}/callOuts/{fk}

DELETE
/employees/{id}/callOuts/{fk}

DELETE /employees/{id}/callOuts/{fk}

Parameters

Path Parameters

fk*

Foreign key for callOuts

Typestring
Required
id*

PersistedModel id

Typestring
Required

Responses

Request was successful

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

POST /employees/{id}/clockIn

POST
/employees/{id}/clockIn

Clock in employee

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Request Body

application/json
JSON
{
"clockedInAt": "string",
"timeCategoryId": "string"
}

Responses

Request was successful

Playground

Variables
Key
Value
Body

Samples

cURL
JavaScript
PHP
Python

POST /employees/{id}/clockOut

POST
/employees/{id}/clockOut

Clock out employee

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Request Body

application/json
JSON
{
"clockedOutAt": "string",
"clockOutDescription": "string"
}

Responses

Request was successful

Playground

Variables
Key
Value
Body

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/defaultTimeCategory

GET
/employees/{id}/defaultTimeCategory

Fetches belongsTo relation defaultTimeCategory.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

refresh
Typeboolean

Responses

Request was successful

application/json
JSON
{
"name": "string",
"type": "tracked",
"code": "string",
"costCenter": "string",
"showInDriverAppInsights": true,
"id": "string",
"companyId": "string",
"divisionId": "string",
"createdAt": "string",
"updatedAt": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/division

GET
/employees/{id}/division

Fetches belongsTo relation division.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

refresh
Typeboolean

Responses

Request was successful

application/json
JSON
{
"name": "string",
"code": "string",
"externalId": "string",
"id": "string",
"parentId": "string",
"companyId": "string",
"createdAt": "string",
"updatedAt": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/employeeType

GET
/employees/{id}/employeeType

Fetches belongsTo relation employeeType.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

refresh
Typeboolean

Responses

Request was successful

application/json
JSON
{
"code": "string",
"name": "string",
"isDefault": false,
"maxWorkingHours": 18,
"needsClockInVerification": true,
"clockInBeforeMarginInMinutes": 5,
"clockInAfterMarginInMinutes": 10,
"allowLateClockIn": true,
"doAutoClockOut": false,
"id": "string",
"companyId": "string",
"divisionId": "string",
"timeRuleIds": [
"string"
],
"createdAt": "string",
"updatedAt": "string",
"timeCategoryIds": [
"string"
],
"defaultTimeCategoryId": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/exists

GET
/employees/{id}/exists

Check whether a model instance exists in the data source.

Parameters

Path Parameters

id*

Model id

Typestring
Required

Responses

Request was successful

application/json
JSON
{
"exists": true
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/log

GET
/employees/{id}/log

Queries log of Employee.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

filter
Typestring

Responses

Request was successful

application/json
JSON
[
{
"status": "string",
"fullName": "string",
"workplace": "string",
"clockInLocation": "string",
"clockOutLocation": "string",
"clockedInAt": "string",
"clockedOutAt": "string",
"clockInDescription": "string",
"clockOutDescription": "string",
"employeeType": "regular",
"approvalStatus": 0,
"isHoliday": true,
"durations": {
},
"employeeId": "string",
"id": "string",
"userId": "string",
"companyId": "string",
"deviceId": "string",
"truckId": "string",
"metrics": {
"course": 0,
"speed": 0,
"metricsDate": "string",
"id": "string"
},
"createdAt": "string",
"updatedAt": "string",
"breaks": [
{
"status": "string",
"start": "string",
"end": "string",
"id": "string",
"createdAt": "string",
"updatedAt": "string"
}
],
"timeCategoryId": "string",
"plants": [
{
"durations": {
},
"id": "string",
"plantId": "string"
}
]
}
]

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/log/count

GET
/employees/{id}/log/count

Counts log of Employee.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

where

Criteria to match model instances

Typestring

Responses

Request was successful

application/json
JSON
{
"count": 0
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/log/{fk}

GET
/employees/{id}/log/{fk}

Find a related item by id for log.

Parameters

Path Parameters

fk*

Foreign key for log

Typestring
Required
id*

PersistedModel id

Typestring
Required

Responses

Request was successful

application/json
JSON
{
"status": "string",
"fullName": "string",
"workplace": "string",
"clockInLocation": "string",
"clockOutLocation": "string",
"clockedInAt": "string",
"clockedOutAt": "string",
"clockInDescription": "string",
"clockOutDescription": "string",
"employeeType": "regular",
"approvalStatus": 0,
"isHoliday": true,
"durations": {
},
"employeeId": "string",
"id": "string",
"userId": "string",
"companyId": "string",
"deviceId": "string",
"truckId": "string",
"metrics": {
"course": 0,
"speed": 0,
"metricsDate": "string",
"id": "string"
},
"createdAt": "string",
"updatedAt": "string",
"breaks": [
{
"status": "string",
"start": "string",
"end": "string",
"id": "string",
"createdAt": "string",
"updatedAt": "string"
}
],
"timeCategoryId": "string",
"plants": [
{
"durations": {
},
"id": "string",
"plantId": "string"
}
]
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/managedPlants

GET
/employees/{id}/managedPlants

Queries managedPlants of Employee.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

filter
Typestring

Responses

Request was successful

application/json
JSON
[
{
"number": "string",
"description": "string",
"address": "string",
"region": {
},
"location": "string",
"radius": 100,
"dvirEmails": [
"string"
],
"timeZone": "string",
"id": "string",
"companyId": "string",
"createdAt": "string",
"updatedAt": "string",
"plantRegionId": "string",
"addressDetails": "string"
}
]

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/managedPlants/count

GET
/employees/{id}/managedPlants/count

Counts managedPlants of Employee.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

where

Criteria to match model instances

Typestring

Responses

Request was successful

application/json
JSON
{
"count": 0
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/managedPlants/{fk}

GET
/employees/{id}/managedPlants/{fk}

Find a related item by id for managedPlants.

Parameters

Path Parameters

fk*

Foreign key for managedPlants

Typestring
Required
id*

PersistedModel id

Typestring
Required

Responses

Request was successful

application/json
JSON
{
"number": "string",
"description": "string",
"address": "string",
"region": {
},
"location": "string",
"radius": 100,
"dvirEmails": [
"string"
],
"timeZone": "string",
"id": "string",
"companyId": "string",
"createdAt": "string",
"updatedAt": "string",
"plantRegionId": "string",
"addressDetails": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/plant

GET
/employees/{id}/plant

Fetches belongsTo relation plant.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

refresh
Typeboolean

Responses

Request was successful

application/json
JSON
{
"number": "string",
"description": "string",
"address": "string",
"region": {
},
"location": "string",
"radius": 100,
"dvirEmails": [
"string"
],
"timeZone": "string",
"id": "string",
"companyId": "string",
"createdAt": "string",
"updatedAt": "string",
"plantRegionId": "string",
"addressDetails": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

POST /employees/{id}/signIn

POST
/employees/{id}/signIn

Sign in employee

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Request Body

application/json
JSON
{
"truckId": "string"
}

Responses

Request was successful

Playground

Variables
Key
Value
Body

Samples

cURL
JavaScript
PHP
Python

POST /employees/{id}/signOut

POST
/employees/{id}/signOut

Sign out employee

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Responses

Request was successful

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/timeCategories

GET
/employees/{id}/timeCategories

Queries timeCategories of Employee.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

filter
Typestring

Responses

Request was successful

application/json
JSON
[
{
"name": "string",
"type": "tracked",
"code": "string",
"costCenter": "string",
"showInDriverAppInsights": true,
"id": "string",
"companyId": "string",
"divisionId": "string",
"createdAt": "string",
"updatedAt": "string"
}
]

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/timeCategories/count

GET
/employees/{id}/timeCategories/count

Counts timeCategories of Employee.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

where

Criteria to match model instances

Typestring

Responses

Request was successful

application/json
JSON
{
"count": 0
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/timeCategories/{fk}

GET
/employees/{id}/timeCategories/{fk}

Find a related item by id for timeCategories.

Parameters

Path Parameters

fk*

Foreign key for timeCategories

Typestring
Required
id*

PersistedModel id

Typestring
Required

Responses

Request was successful

application/json
JSON
{
"name": "string",
"type": "tracked",
"code": "string",
"costCenter": "string",
"showInDriverAppInsights": true,
"id": "string",
"companyId": "string",
"divisionId": "string",
"createdAt": "string",
"updatedAt": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/timeOffs

GET
/employees/{id}/timeOffs

Queries timeOffs of Employee.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

filter
Typestring

Responses

Request was successful

application/json
JSON
[
{
"category": "string",
"paid": true,
"active": true,
"duration": 8,
"date": "string",
"employeeType": "string",
"description": "string",
"id": "string",
"companyId": "string",
"employeeId": "string",
"createdAt": "string",
"updatedAt": "string",
"timeCategoryId": "string"
}
]

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/timeOffs/count

GET
/employees/{id}/timeOffs/count

Counts timeOffs of Employee.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

where

Criteria to match model instances

Typestring

Responses

Request was successful

application/json
JSON
{
"count": 0
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/timeOffs/{fk}

GET
/employees/{id}/timeOffs/{fk}

Find a related item by id for timeOffs.

Parameters

Path Parameters

fk*

Foreign key for timeOffs

Typestring
Required
id*

PersistedModel id

Typestring
Required

Responses

Request was successful

application/json
JSON
{
"category": "string",
"paid": true,
"active": true,
"duration": 8,
"date": "string",
"employeeType": "string",
"description": "string",
"id": "string",
"companyId": "string",
"employeeId": "string",
"createdAt": "string",
"updatedAt": "string",
"timeCategoryId": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/timeOffsPerYear

GET
/employees/{id}/timeOffsPerYear

Queries timeOffsPerYear of Employee.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

filter
Typestring

Responses

Request was successful

application/json
JSON
[
{
"year": 0,
"paidAllowed": 0,
"paidUsed": 0,
"unpaidAllowed": 0,
"unpaidUsed": 0,
"allowUnlimitedUTO": true,
"id": "string",
"companyId": "string",
"employeeId": "string",
"createdAt": "string",
"updatedAt": "string",
"settings": [
{
"allowed": 0,
"used": 0,
"paid": true,
"timeCategoryId": "string"
}
]
}
]

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/timeOffsPerYear/count

GET
/employees/{id}/timeOffsPerYear/count

Counts timeOffsPerYear of Employee.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

where

Criteria to match model instances

Typestring

Responses

Request was successful

application/json
JSON
{
"count": 0
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/timeOffsPerYear/{fk}

GET
/employees/{id}/timeOffsPerYear/{fk}

Find a related item by id for timeOffsPerYear.

Parameters

Path Parameters

fk*

Foreign key for timeOffsPerYear

Typestring
Required
id*

PersistedModel id

Typestring
Required

Responses

Request was successful

application/json
JSON
{
"year": 0,
"paidAllowed": 0,
"paidUsed": 0,
"unpaidAllowed": 0,
"unpaidUsed": 0,
"allowUnlimitedUTO": true,
"id": "string",
"companyId": "string",
"employeeId": "string",
"createdAt": "string",
"updatedAt": "string",
"settings": [
{
"allowed": 0,
"used": 0,
"paid": true,
"timeCategoryId": "string"
}
]
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python

GET /employees/{id}/truck

GET
/employees/{id}/truck

Fetches belongsTo relation truck.

Parameters

Path Parameters

id*

PersistedModel id

Typestring
Required

Query Parameters

refresh
Typeboolean

Responses

Request was successful

application/json
JSON
{
"number": "string",
"description": "string",
"location": "string",
"locationData": {
},
"inService": false,
"inYard": false,
"deadhead": "string",
"endOfDay": false,
"lastAccess": "string",
"externalId": "string",
"id": "string",
"companyId": "string",
"divisionId": "string",
"createdAt": "string",
"updatedAt": "string",
"plantId": "string",
"currentPlantId": "string",
"metrics": "string"
}

Playground

Variables
Key
Value

Samples

cURL
JavaScript
PHP
Python