@openeld/openeld 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -0
- package/buf/buf.gen.yaml +8 -0
- package/buf/buf.work.yaml +3 -0
- package/docs/architecture/.gitkeep +0 -0
- package/docs/architecture/README.md +3 -0
- package/docs/decisions/.gitkeep +0 -0
- package/docs/decisions/README.md +3 -0
- package/docs/protobuf/.gitkeep +0 -0
- package/docs/protobuf/README.md +28 -0
- package/docs/providers/.gitkeep +0 -0
- package/docs/providers/README.md +73 -0
- package/docs/providers/capability-matrix.md +13 -0
- package/docs/providers/geotab.md +37 -0
- package/docs/providers/keeptruckin.md +35 -0
- package/docs/providers/motive.md +36 -0
- package/docs/providers/provider-template.md +56 -0
- package/docs/providers/samsara.md +38 -0
- package/docs/providers/verification-matrix.md +13 -0
- package/docs/services/.gitkeep +0 -0
- package/docs/services/README.md +3 -0
- package/examples/ts/.gitkeep +0 -0
- package/examples/ts/README.md +3 -0
- package/package.json +34 -0
- package/proto/.gitkeep +0 -0
- package/proto/README.md +9 -0
- package/proto/common/metadata/.gitkeep +0 -0
- package/proto/common/metadata/audit.proto +22 -0
- package/proto/common/metadata/source.proto +31 -0
- package/proto/common/primitives/.gitkeep +0 -0
- package/proto/common/primitives/ids.proto +21 -0
- package/proto/common/primitives/location.proto +23 -0
- package/proto/common/primitives/time.proto +24 -0
- package/proto/common/units/.gitkeep +0 -0
- package/proto/common/units/measurements.proto +28 -0
- package/proto/logistics/asset.proto +24 -0
- package/proto/logistics/asset_location.proto +19 -0
- package/proto/logistics/assets/.gitkeep +0 -0
- package/proto/logistics/carrier.proto +18 -0
- package/proto/logistics/compliance/.gitkeep +0 -0
- package/proto/logistics/data_consent.proto +24 -0
- package/proto/logistics/diagnostics/.gitkeep +0 -0
- package/proto/logistics/driver.proto +28 -0
- package/proto/logistics/drivers/.gitkeep +0 -0
- package/proto/logistics/dvir.proto +34 -0
- package/proto/logistics/enums.proto +197 -0
- package/proto/logistics/events/.gitkeep +0 -0
- package/proto/logistics/gps_location.proto +24 -0
- package/proto/logistics/hos/.gitkeep +0 -0
- package/proto/logistics/hos_daily_summary.proto +38 -0
- package/proto/logistics/hos_event.proto +41 -0
- package/proto/logistics/ifta_trip.proto +24 -0
- package/proto/logistics/locations/.gitkeep +0 -0
- package/proto/logistics/safety_event.proto +27 -0
- package/proto/logistics/trips/.gitkeep +0 -0
- package/proto/logistics/vehicle.proto +25 -0
- package/proto/logistics/vehicle_assignment.proto +25 -0
- package/proto/logistics/vehicles/.gitkeep +0 -0
- package/proto/providers/eld/geotab/.gitkeep +0 -0
- package/proto/providers/eld/geotab/contracts.proto +105 -0
- package/proto/providers/eld/keeptruckin/.gitkeep +0 -0
- package/proto/providers/eld/keeptruckin/contracts.proto +103 -0
- package/proto/providers/eld/motive/.gitkeep +0 -0
- package/proto/providers/eld/motive/contracts.proto +108 -0
- package/proto/providers/eld/samsara/.gitkeep +0 -0
- package/proto/providers/eld/samsara/contracts.proto +110 -0
- package/proto/providers/eld/shared/.gitkeep +0 -0
- package/proto/providers/eld/shared/common.proto +174 -0
- package/proto/providers/telematics/fleet_complete/.gitkeep +0 -0
- package/proto/providers/telematics/fleet_complete/contracts.proto +13 -0
- package/proto/providers/telematics/fourkites/.gitkeep +0 -0
- package/proto/providers/telematics/fourkites/contracts.proto +13 -0
- package/proto/providers/telematics/project44/.gitkeep +0 -0
- package/proto/providers/telematics/project44/contracts.proto +13 -0
- package/proto/providers/telematics/shared/.gitkeep +0 -0
- package/proto/providers/telematics/shared/common.proto +48 -0
- package/proto/providers/telematics/verizon_connect/.gitkeep +0 -0
- package/proto/providers/telematics/verizon_connect/contracts.proto +13 -0
- package/proto/services/ingestion/.gitkeep +0 -0
- package/proto/services/ingestion/service.proto +37 -0
- package/proto/services/normalization/.gitkeep +0 -0
- package/proto/services/normalization/service.proto +62 -0
- package/proto/services/query/.gitkeep +0 -0
- package/proto/services/query/service.proto +238 -0
- package/proto/services/sync/.gitkeep +0 -0
- package/proto/services/sync/service.proto +89 -0
- package/proto/v1/.gitkeep +0 -0
- package/proto/v1/openeld.proto +39 -0
- package/src/adapters/providers/.gitkeep +0 -0
- package/src/clients/.gitkeep +0 -0
- package/src/fixture-normalization.ts +471 -0
- package/src/generated/README.md +3 -0
- package/src/generated/ts/.gitkeep +0 -0
- package/src/index.ts +1 -0
- package/src/mappers/.gitkeep +0 -0
- package/src/registry/.gitkeep +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "common/primitives/location.proto";
|
|
8
|
+
import "google/protobuf/timestamp.proto";
|
|
9
|
+
|
|
10
|
+
// * Represents a time-stamped asset location and optional linkage to a powered vehicle.
|
|
11
|
+
message AssetLocation {
|
|
12
|
+
string asset_location_id = 1;
|
|
13
|
+
string asset_id = 2;
|
|
14
|
+
google.protobuf.Timestamp timestamp = 3;
|
|
15
|
+
openeld.common.primitives.v1.GeoPoint position = 4;
|
|
16
|
+
optional string linked_vehicle_id = 5;
|
|
17
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
18
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
19
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
|
|
8
|
+
// * Represents a motor carrier in the normalized logistics model.
|
|
9
|
+
message Carrier {
|
|
10
|
+
string carrier_id = 1;
|
|
11
|
+
string usdot_number = 2;
|
|
12
|
+
optional string mc_number = 3;
|
|
13
|
+
string name = 4;
|
|
14
|
+
optional string main_office_address = 5;
|
|
15
|
+
string home_terminal_timezone = 6;
|
|
16
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
17
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
18
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "google/protobuf/timestamp.proto";
|
|
8
|
+
import "logistics/enums.proto";
|
|
9
|
+
|
|
10
|
+
// * Represents a carrier-granted consent for a platform to access specific data scopes.
|
|
11
|
+
message DataConsent {
|
|
12
|
+
string consent_id = 1;
|
|
13
|
+
string carrier_id = 2;
|
|
14
|
+
string platform_id = 3;
|
|
15
|
+
repeated DataAccessScope granted_scopes = 4;
|
|
16
|
+
google.protobuf.Timestamp granted_at = 5;
|
|
17
|
+
optional google.protobuf.Timestamp revoked_at = 6;
|
|
18
|
+
optional google.protobuf.Timestamp expires_at = 7;
|
|
19
|
+
ConsentStatus status = 8;
|
|
20
|
+
ConsentMethod consent_method = 9;
|
|
21
|
+
optional string external_consent_reference = 10;
|
|
22
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
23
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
24
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "google/protobuf/timestamp.proto";
|
|
8
|
+
import "logistics/enums.proto";
|
|
9
|
+
|
|
10
|
+
// * Represents an individual operating under a carrier.
|
|
11
|
+
message Driver {
|
|
12
|
+
string driver_id = 1;
|
|
13
|
+
string carrier_id = 2;
|
|
14
|
+
string first_name = 3;
|
|
15
|
+
string last_name = 4;
|
|
16
|
+
optional string license_number = 5;
|
|
17
|
+
optional string license_state = 6;
|
|
18
|
+
bool eld_exempt = 7;
|
|
19
|
+
HosRuleset hos_ruleset = 8;
|
|
20
|
+
DriverStatus status = 9;
|
|
21
|
+
optional string email = 10;
|
|
22
|
+
optional string phone = 11;
|
|
23
|
+
optional string username = 12;
|
|
24
|
+
optional google.protobuf.Timestamp created_at = 13;
|
|
25
|
+
optional google.protobuf.Timestamp updated_at = 14;
|
|
26
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
27
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
28
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "google/protobuf/timestamp.proto";
|
|
8
|
+
import "logistics/enums.proto";
|
|
9
|
+
|
|
10
|
+
// * Represents a DVIR defect or inspection issue.
|
|
11
|
+
message DvirDefect {
|
|
12
|
+
string defect_id = 1;
|
|
13
|
+
optional string code = 2;
|
|
14
|
+
string title = 3;
|
|
15
|
+
optional string description = 4;
|
|
16
|
+
bool repaired = 5;
|
|
17
|
+
bool repaired_verified = 6;
|
|
18
|
+
optional string mechanic_notes = 7;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// * Represents a normalized driver vehicle inspection report.
|
|
22
|
+
message Dvir {
|
|
23
|
+
string dvir_id = 1;
|
|
24
|
+
string driver_id = 2;
|
|
25
|
+
string vehicle_id = 3;
|
|
26
|
+
InspectionType inspection_type = 4;
|
|
27
|
+
google.protobuf.Timestamp inspection_time = 5;
|
|
28
|
+
bool is_safe_to_drive = 6;
|
|
29
|
+
repeated DvirDefect defects = 7;
|
|
30
|
+
optional string signature_driver = 8;
|
|
31
|
+
optional string mechanic_notes = 9;
|
|
32
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
33
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
34
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
// * Represents the driver's lifecycle state inside the carrier system.
|
|
6
|
+
enum DriverStatus {
|
|
7
|
+
DRIVER_STATUS_UNSPECIFIED = 0;
|
|
8
|
+
DRIVER_STATUS_ACTIVE = 1;
|
|
9
|
+
DRIVER_STATUS_INACTIVE = 2;
|
|
10
|
+
DRIVER_STATUS_DEACTIVATED = 3;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// * Represents the normalized duty status state.
|
|
14
|
+
enum DutyStatus {
|
|
15
|
+
DUTY_STATUS_UNSPECIFIED = 0;
|
|
16
|
+
DUTY_STATUS_OFF_DUTY = 1;
|
|
17
|
+
DUTY_STATUS_SLEEPER_BERTH = 2;
|
|
18
|
+
DUTY_STATUS_DRIVING = 3;
|
|
19
|
+
DUTY_STATUS_ON_DUTY_NOT_DRIVING = 4;
|
|
20
|
+
DUTY_STATUS_PERSONAL_CONVEYANCE = 5;
|
|
21
|
+
DUTY_STATUS_YARD_MOVE = 6;
|
|
22
|
+
DUTY_STATUS_WAIT_TIME = 7;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// * Represents the high-level FMCSA ELD event family.
|
|
26
|
+
enum EventType {
|
|
27
|
+
EVENT_TYPE_UNSPECIFIED = 0;
|
|
28
|
+
EVENT_TYPE_DUTY_STATUS_CHANGE = 1;
|
|
29
|
+
EVENT_TYPE_INTERMEDIATE_LOG = 2;
|
|
30
|
+
EVENT_TYPE_SPECIAL_DRIVING_CONDITION = 3;
|
|
31
|
+
EVENT_TYPE_CERTIFICATION = 4;
|
|
32
|
+
EVENT_TYPE_LOGIN_LOGOUT = 5;
|
|
33
|
+
EVENT_TYPE_ENGINE_POWER = 6;
|
|
34
|
+
EVENT_TYPE_MALFUNCTION_OR_DIAGNOSTIC = 7;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// * Represents a normalized sub-code for the event family.
|
|
38
|
+
enum HosEventCode {
|
|
39
|
+
HOS_EVENT_CODE_UNSPECIFIED = 0;
|
|
40
|
+
HOS_EVENT_CODE_OFF_DUTY = 1;
|
|
41
|
+
HOS_EVENT_CODE_SLEEPER_BERTH = 2;
|
|
42
|
+
HOS_EVENT_CODE_DRIVING = 3;
|
|
43
|
+
HOS_EVENT_CODE_ON_DUTY_NOT_DRIVING = 4;
|
|
44
|
+
HOS_EVENT_CODE_PERSONAL_CONVEYANCE = 5;
|
|
45
|
+
HOS_EVENT_CODE_YARD_MOVE = 6;
|
|
46
|
+
HOS_EVENT_CODE_WAIT_TIME = 7;
|
|
47
|
+
HOS_EVENT_CODE_INTERMEDIATE_LOG = 8;
|
|
48
|
+
HOS_EVENT_CODE_LOGIN = 9;
|
|
49
|
+
HOS_EVENT_CODE_LOGOUT = 10;
|
|
50
|
+
HOS_EVENT_CODE_ENGINE_POWER_UP = 11;
|
|
51
|
+
HOS_EVENT_CODE_ENGINE_SHUTDOWN = 12;
|
|
52
|
+
HOS_EVENT_CODE_CERTIFICATION = 13;
|
|
53
|
+
HOS_EVENT_CODE_MALFUNCTION = 14;
|
|
54
|
+
HOS_EVENT_CODE_DIAGNOSTIC = 15;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// * Represents how a record entered the system.
|
|
58
|
+
enum EventOrigin {
|
|
59
|
+
EVENT_ORIGIN_UNSPECIFIED = 0;
|
|
60
|
+
EVENT_ORIGIN_AUTO = 1;
|
|
61
|
+
EVENT_ORIGIN_DRIVER = 2;
|
|
62
|
+
EVENT_ORIGIN_OTHER_USER = 3;
|
|
63
|
+
EVENT_ORIGIN_UNIDENTIFIED = 4;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// * Represents the record lifecycle after edits and review.
|
|
67
|
+
enum RecordStatus {
|
|
68
|
+
RECORD_STATUS_UNSPECIFIED = 0;
|
|
69
|
+
RECORD_STATUS_ACTIVE = 1;
|
|
70
|
+
RECORD_STATUS_INACTIVE_CHANGED = 2;
|
|
71
|
+
RECORD_STATUS_INACTIVE_CHANGE_REQUESTED = 3;
|
|
72
|
+
RECORD_STATUS_INACTIVE_CHANGE_REJECTED = 4;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// * Represents the HOS cycle/ruleset applied to the driver.
|
|
76
|
+
enum HosRuleset {
|
|
77
|
+
HOS_RULESET_UNSPECIFIED = 0;
|
|
78
|
+
HOS_RULESET_US_70_8 = 1;
|
|
79
|
+
HOS_RULESET_US_60_7 = 2;
|
|
80
|
+
HOS_RULESET_US_PASSENGER = 3;
|
|
81
|
+
HOS_RULESET_US_SHORT_HAUL = 4;
|
|
82
|
+
HOS_RULESET_CA_SOUTH_70 = 5;
|
|
83
|
+
HOS_RULESET_CA_SOUTH_120 = 6;
|
|
84
|
+
HOS_RULESET_CA_NORTH_80 = 7;
|
|
85
|
+
HOS_RULESET_CA_NORTH_120 = 8;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// * Represents a standardized malfunction or diagnostic code.
|
|
89
|
+
enum MalfunctionCode {
|
|
90
|
+
MALFUNCTION_CODE_UNSPECIFIED = 0;
|
|
91
|
+
MALFUNCTION_CODE_POWER = 1;
|
|
92
|
+
MALFUNCTION_CODE_ENGINE_SYNCHRONIZATION = 2;
|
|
93
|
+
MALFUNCTION_CODE_TIMING = 3;
|
|
94
|
+
MALFUNCTION_CODE_POSITIONING = 4;
|
|
95
|
+
MALFUNCTION_CODE_DATA_RECORDING = 5;
|
|
96
|
+
MALFUNCTION_CODE_DATA_TRANSFER = 6;
|
|
97
|
+
MALFUNCTION_CODE_OTHER = 7;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// * Represents the inspection lifecycle stage for a DVIR.
|
|
101
|
+
enum InspectionType {
|
|
102
|
+
INSPECTION_TYPE_UNSPECIFIED = 0;
|
|
103
|
+
INSPECTION_TYPE_PRE_TRIP = 1;
|
|
104
|
+
INSPECTION_TYPE_POST_TRIP = 2;
|
|
105
|
+
INSPECTION_TYPE_INTERIM = 3;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// * Represents the severity of a compliance or operational violation.
|
|
109
|
+
enum ViolationSeverity {
|
|
110
|
+
VIOLATION_SEVERITY_UNSPECIFIED = 0;
|
|
111
|
+
VIOLATION_SEVERITY_INFO = 1;
|
|
112
|
+
VIOLATION_SEVERITY_WARNING = 2;
|
|
113
|
+
VIOLATION_SEVERITY_CRITICAL = 3;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// * Represents the lifecycle state of a carrier-granted data consent.
|
|
117
|
+
enum ConsentStatus {
|
|
118
|
+
CONSENT_STATUS_UNSPECIFIED = 0;
|
|
119
|
+
CONSENT_STATUS_ACTIVE = 1;
|
|
120
|
+
CONSENT_STATUS_REVOKED = 2;
|
|
121
|
+
CONSENT_STATUS_EXPIRED = 3;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// * Represents how a carrier granted access to a platform.
|
|
125
|
+
enum ConsentMethod {
|
|
126
|
+
CONSENT_METHOD_UNSPECIFIED = 0;
|
|
127
|
+
CONSENT_METHOD_ELD_OAUTH = 1;
|
|
128
|
+
CONSENT_METHOD_PORTAL = 2;
|
|
129
|
+
CONSENT_METHOD_API_KEY = 3;
|
|
130
|
+
CONSENT_METHOD_WRITTEN_AGREEMENT = 4;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// * Represents the categories of data a platform may access.
|
|
134
|
+
enum DataAccessScope {
|
|
135
|
+
DATA_ACCESS_SCOPE_UNSPECIFIED = 0;
|
|
136
|
+
DATA_ACCESS_SCOPE_GPS = 1;
|
|
137
|
+
DATA_ACCESS_SCOPE_HOS = 2;
|
|
138
|
+
DATA_ACCESS_SCOPE_DRIVER = 3;
|
|
139
|
+
DATA_ACCESS_SCOPE_VEHICLE = 4;
|
|
140
|
+
DATA_ACCESS_SCOPE_SAFETY = 5;
|
|
141
|
+
DATA_ACCESS_SCOPE_IFTA = 6;
|
|
142
|
+
DATA_ACCESS_SCOPE_ASSET = 7;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// * Represents the normalized type of telematics safety event.
|
|
146
|
+
enum SafetyEventType {
|
|
147
|
+
SAFETY_EVENT_TYPE_UNSPECIFIED = 0;
|
|
148
|
+
SAFETY_EVENT_TYPE_HARD_BRAKE = 1;
|
|
149
|
+
SAFETY_EVENT_TYPE_HARD_ACCEL = 2;
|
|
150
|
+
SAFETY_EVENT_TYPE_SPEEDING = 3;
|
|
151
|
+
SAFETY_EVENT_TYPE_HARD_TURN = 4;
|
|
152
|
+
SAFETY_EVENT_TYPE_COLLISION = 5;
|
|
153
|
+
SAFETY_EVENT_TYPE_ROLLOVER = 6;
|
|
154
|
+
SAFETY_EVENT_TYPE_LANE_DEPARTURE = 7;
|
|
155
|
+
SAFETY_EVENT_TYPE_FOLLOWING_DISTANCE = 8;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// * Represents the normalized severity of a safety event.
|
|
159
|
+
enum SafetySeverity {
|
|
160
|
+
SAFETY_SEVERITY_UNSPECIFIED = 0;
|
|
161
|
+
SAFETY_SEVERITY_LOW = 1;
|
|
162
|
+
SAFETY_SEVERITY_MEDIUM = 2;
|
|
163
|
+
SAFETY_SEVERITY_HIGH = 3;
|
|
164
|
+
SAFETY_SEVERITY_CRITICAL = 4;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// * Represents the type of non-powered or auxiliary asset being tracked.
|
|
168
|
+
enum AssetType {
|
|
169
|
+
ASSET_TYPE_UNSPECIFIED = 0;
|
|
170
|
+
ASSET_TYPE_TRAILER = 1;
|
|
171
|
+
ASSET_TYPE_CONTAINER = 2;
|
|
172
|
+
ASSET_TYPE_CHASSIS = 3;
|
|
173
|
+
ASSET_TYPE_DOLLY = 4;
|
|
174
|
+
ASSET_TYPE_REEFER = 5;
|
|
175
|
+
ASSET_TYPE_OTHER = 6;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// * Represents the operational status of an asset.
|
|
179
|
+
enum AssetStatus {
|
|
180
|
+
ASSET_STATUS_UNSPECIFIED = 0;
|
|
181
|
+
ASSET_STATUS_ACTIVE = 1;
|
|
182
|
+
ASSET_STATUS_INACTIVE = 2;
|
|
183
|
+
ASSET_STATUS_IN_MAINTENANCE = 3;
|
|
184
|
+
ASSET_STATUS_RETIRED = 4;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// * Represents the normalized fuel type used for IFTA reporting.
|
|
188
|
+
enum FuelType {
|
|
189
|
+
FUEL_TYPE_UNSPECIFIED = 0;
|
|
190
|
+
FUEL_TYPE_DIESEL = 1;
|
|
191
|
+
FUEL_TYPE_GASOLINE = 2;
|
|
192
|
+
FUEL_TYPE_CNG = 3;
|
|
193
|
+
FUEL_TYPE_LNG = 4;
|
|
194
|
+
FUEL_TYPE_ELECTRIC = 5;
|
|
195
|
+
FUEL_TYPE_HYBRID = 6;
|
|
196
|
+
FUEL_TYPE_OTHER = 7;
|
|
197
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "common/primitives/location.proto";
|
|
8
|
+
import "common/units/measurements.proto";
|
|
9
|
+
import "google/protobuf/timestamp.proto";
|
|
10
|
+
|
|
11
|
+
// * Represents a normalized GPS breadcrumb.
|
|
12
|
+
message GpsLocation {
|
|
13
|
+
string location_id = 1;
|
|
14
|
+
string vehicle_id = 2;
|
|
15
|
+
optional string driver_id = 3;
|
|
16
|
+
google.protobuf.Timestamp timestamp = 4;
|
|
17
|
+
openeld.common.primitives.v1.GeoPoint position = 5;
|
|
18
|
+
optional openeld.common.units.v1.Speed speed = 6;
|
|
19
|
+
optional openeld.common.units.v1.Heading heading = 7;
|
|
20
|
+
optional openeld.common.units.v1.OdometerReading odometer = 8;
|
|
21
|
+
optional openeld.common.units.v1.EngineHours engine_hours = 9;
|
|
22
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
23
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
24
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "common/primitives/time.proto";
|
|
8
|
+
import "common/units/measurements.proto";
|
|
9
|
+
import "google/protobuf/duration.proto";
|
|
10
|
+
import "google/protobuf/timestamp.proto";
|
|
11
|
+
import "logistics/enums.proto";
|
|
12
|
+
|
|
13
|
+
// * Represents a normalized HOS violation entry.
|
|
14
|
+
message HosViolation {
|
|
15
|
+
string code = 1;
|
|
16
|
+
optional string title = 2;
|
|
17
|
+
optional string description = 3;
|
|
18
|
+
ViolationSeverity severity = 4;
|
|
19
|
+
optional google.protobuf.Timestamp start_time = 5;
|
|
20
|
+
optional google.protobuf.Timestamp end_time = 6;
|
|
21
|
+
optional google.protobuf.Duration duration = 7;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// * Represents a driver's daily HOS summary for a single log date.
|
|
25
|
+
message HosDailySummary {
|
|
26
|
+
string summary_id = 1;
|
|
27
|
+
string driver_id = 2;
|
|
28
|
+
openeld.common.primitives.v1.LocalDate log_date = 3;
|
|
29
|
+
optional google.protobuf.Duration off_duty_duration = 4;
|
|
30
|
+
optional google.protobuf.Duration sleeper_berth_duration = 5;
|
|
31
|
+
optional google.protobuf.Duration driving_duration = 6;
|
|
32
|
+
optional google.protobuf.Duration on_duty_duration = 7;
|
|
33
|
+
optional openeld.common.units.v1.Distance distance = 8;
|
|
34
|
+
bool is_certified = 9;
|
|
35
|
+
repeated HosViolation violations = 10;
|
|
36
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
37
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
38
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "common/primitives/location.proto";
|
|
8
|
+
import "common/units/measurements.proto";
|
|
9
|
+
import "google/protobuf/timestamp.proto";
|
|
10
|
+
import "logistics/enums.proto";
|
|
11
|
+
|
|
12
|
+
// * Represents a normalized HOS annotation or remark.
|
|
13
|
+
message HosAnnotation {
|
|
14
|
+
string text = 1;
|
|
15
|
+
optional string author_driver_id = 2;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// * Represents a normalized HOS event as defined by FMCSA concepts.
|
|
19
|
+
message HosEvent {
|
|
20
|
+
string event_id = 1;
|
|
21
|
+
string driver_id = 2;
|
|
22
|
+
optional string vehicle_id = 3;
|
|
23
|
+
google.protobuf.Timestamp event_timestamp = 4;
|
|
24
|
+
optional google.protobuf.Timestamp event_end_time = 5;
|
|
25
|
+
EventType event_type = 6;
|
|
26
|
+
HosEventCode event_code = 7;
|
|
27
|
+
DutyStatus duty_status = 8;
|
|
28
|
+
optional openeld.common.primitives.v1.GeoPoint position = 9;
|
|
29
|
+
optional string location_description = 10;
|
|
30
|
+
optional openeld.common.units.v1.OdometerReading odometer = 11;
|
|
31
|
+
optional openeld.common.units.v1.EngineHours engine_hours = 12;
|
|
32
|
+
EventOrigin origin = 13;
|
|
33
|
+
RecordStatus record_status = 14;
|
|
34
|
+
optional HosAnnotation annotation = 15;
|
|
35
|
+
bool certified = 16;
|
|
36
|
+
optional string edited_by_driver_id = 17;
|
|
37
|
+
uint32 sequence_number = 18;
|
|
38
|
+
repeated MalfunctionCode malfunction_codes = 19;
|
|
39
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
40
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
41
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "common/units/measurements.proto";
|
|
8
|
+
import "google/protobuf/timestamp.proto";
|
|
9
|
+
import "logistics/enums.proto";
|
|
10
|
+
|
|
11
|
+
// * Represents a normalized IFTA mileage record for a jurisdiction and time range.
|
|
12
|
+
message IftaTrip {
|
|
13
|
+
string ifta_trip_id = 1;
|
|
14
|
+
string vehicle_id = 2;
|
|
15
|
+
optional string driver_id = 3;
|
|
16
|
+
google.protobuf.Timestamp start_time = 4;
|
|
17
|
+
google.protobuf.Timestamp end_time = 5;
|
|
18
|
+
string jurisdiction = 6;
|
|
19
|
+
openeld.common.units.v1.Distance distance = 7;
|
|
20
|
+
optional double fuel_consumed_liters = 8;
|
|
21
|
+
FuelType fuel_type = 9;
|
|
22
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
23
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
24
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "common/primitives/location.proto";
|
|
8
|
+
import "common/units/measurements.proto";
|
|
9
|
+
import "google/protobuf/timestamp.proto";
|
|
10
|
+
import "logistics/enums.proto";
|
|
11
|
+
|
|
12
|
+
// * Represents a normalized telematics safety event.
|
|
13
|
+
message SafetyEvent {
|
|
14
|
+
string safety_event_id = 1;
|
|
15
|
+
optional string driver_id = 2;
|
|
16
|
+
optional string vehicle_id = 3;
|
|
17
|
+
SafetyEventType event_type = 4;
|
|
18
|
+
google.protobuf.Timestamp event_time = 5;
|
|
19
|
+
optional openeld.common.primitives.v1.GeoPoint position = 6;
|
|
20
|
+
SafetySeverity severity = 7;
|
|
21
|
+
optional openeld.common.units.v1.Speed speed = 8;
|
|
22
|
+
optional openeld.common.units.v1.Speed speed_limit = 9;
|
|
23
|
+
optional double g_force = 10;
|
|
24
|
+
optional string provider_event_label = 11;
|
|
25
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
26
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
27
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "common/units/measurements.proto";
|
|
8
|
+
|
|
9
|
+
// * Represents a commercial motor vehicle in the normalized model.
|
|
10
|
+
message Vehicle {
|
|
11
|
+
string vehicle_id = 1;
|
|
12
|
+
string carrier_id = 2;
|
|
13
|
+
string vin = 3;
|
|
14
|
+
string name = 4;
|
|
15
|
+
optional string license_plate = 5;
|
|
16
|
+
optional string license_state = 6;
|
|
17
|
+
optional string make = 7;
|
|
18
|
+
optional string model = 8;
|
|
19
|
+
optional int32 year = 9;
|
|
20
|
+
optional openeld.common.units.v1.OdometerReading odometer = 10;
|
|
21
|
+
optional openeld.common.units.v1.EngineHours engine_hours = 11;
|
|
22
|
+
optional string eld_device_id = 12;
|
|
23
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
24
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.logistics.v1;
|
|
4
|
+
|
|
5
|
+
import "common/metadata/audit.proto";
|
|
6
|
+
import "common/metadata/source.proto";
|
|
7
|
+
import "common/primitives/time.proto";
|
|
8
|
+
|
|
9
|
+
// * Identifies a trailer associated with an assignment.
|
|
10
|
+
message TrailerReference {
|
|
11
|
+
string name = 1;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// * Associates a driver with a vehicle during a time range.
|
|
15
|
+
message VehicleAssignment {
|
|
16
|
+
string assignment_id = 1;
|
|
17
|
+
string driver_id = 2;
|
|
18
|
+
string vehicle_id = 3;
|
|
19
|
+
optional string codriver_id = 4;
|
|
20
|
+
optional openeld.common.primitives.v1.TimeRange assignment_time_range = 5;
|
|
21
|
+
repeated TrailerReference trailers = 6;
|
|
22
|
+
optional string shipping_doc_number = 7;
|
|
23
|
+
optional openeld.common.metadata.v1.SourceRecord source = 20;
|
|
24
|
+
optional openeld.common.metadata.v1.AuditMetadata audit = 21;
|
|
25
|
+
}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package openeld.providers.eld.geotab.v1;
|
|
4
|
+
|
|
5
|
+
import "google/protobuf/timestamp.proto";
|
|
6
|
+
import "providers/eld/shared/common.proto";
|
|
7
|
+
|
|
8
|
+
// * Represents a Geotab user/driver record close to the native API shape.
|
|
9
|
+
message GeotabUserRecord {
|
|
10
|
+
string id = 1;
|
|
11
|
+
optional string first_name = 2;
|
|
12
|
+
optional string last_name = 3;
|
|
13
|
+
optional string active_to = 4;
|
|
14
|
+
optional string employee_no = 5;
|
|
15
|
+
optional openeld.providers.eld.shared.v1.EldDriverRecord normalized_projection = 20;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// * Represents a Geotab device/vehicle record close to the native API shape.
|
|
19
|
+
message GeotabDeviceRecord {
|
|
20
|
+
string id = 1;
|
|
21
|
+
optional string name = 2;
|
|
22
|
+
optional string vehicle_identification_number = 3;
|
|
23
|
+
optional double odometer_meters = 4;
|
|
24
|
+
optional double engine_hours_seconds = 5;
|
|
25
|
+
optional openeld.providers.eld.shared.v1.EldVehicleRecord normalized_projection = 20;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// * Represents a Geotab DutyStatusLog record.
|
|
29
|
+
message GeotabDutyStatusLogRecord {
|
|
30
|
+
string id = 1;
|
|
31
|
+
optional string driver_id = 2;
|
|
32
|
+
optional string device_id = 3;
|
|
33
|
+
optional google.protobuf.Timestamp date_time = 4;
|
|
34
|
+
optional string status = 5;
|
|
35
|
+
optional string type = 6;
|
|
36
|
+
optional string origin = 7;
|
|
37
|
+
optional string record_status = 8;
|
|
38
|
+
optional double latitude = 9;
|
|
39
|
+
optional double longitude = 10;
|
|
40
|
+
optional double odometer_meters = 11;
|
|
41
|
+
optional double engine_hours_seconds = 12;
|
|
42
|
+
optional openeld.providers.eld.shared.v1.EldHosEventRecord normalized_projection = 20;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// * Represents a Geotab HOS or regulation clock record.
|
|
46
|
+
message GeotabDriverRegulationRecord {
|
|
47
|
+
string driver_id = 1;
|
|
48
|
+
optional string regulation = 2;
|
|
49
|
+
optional double driving_remaining_seconds = 3;
|
|
50
|
+
optional double cycle_remaining_seconds = 4;
|
|
51
|
+
optional double break_remaining_seconds = 5;
|
|
52
|
+
optional openeld.providers.eld.shared.v1.EldHosClockRecord normalized_projection = 20;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// * Represents a Geotab log record used for GPS or breadcrumb data.
|
|
56
|
+
message GeotabLogRecord {
|
|
57
|
+
string id = 1;
|
|
58
|
+
optional string device_id = 2;
|
|
59
|
+
optional string driver_id = 3;
|
|
60
|
+
optional google.protobuf.Timestamp date_time = 4;
|
|
61
|
+
optional double latitude = 5;
|
|
62
|
+
optional double longitude = 6;
|
|
63
|
+
optional double speed_kilometers_per_hour = 7;
|
|
64
|
+
optional double heading_degrees = 8;
|
|
65
|
+
optional openeld.providers.eld.shared.v1.EldGpsLocationRecord normalized_projection = 20;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// * Represents a Geotab DVIR-like inspection record.
|
|
69
|
+
message GeotabInspectionRecord {
|
|
70
|
+
string id = 1;
|
|
71
|
+
optional string driver_id = 2;
|
|
72
|
+
optional string device_id = 3;
|
|
73
|
+
optional google.protobuf.Timestamp inspection_time = 4;
|
|
74
|
+
optional string inspection_type = 5;
|
|
75
|
+
optional bool safe = 6;
|
|
76
|
+
repeated string defect_descriptions = 7;
|
|
77
|
+
optional openeld.providers.eld.shared.v1.EldDvirRecord normalized_projection = 20;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// * Represents a Geotab diagnostic or malfunction record.
|
|
81
|
+
message GeotabDiagnosticRecord {
|
|
82
|
+
string id = 1;
|
|
83
|
+
optional string driver_id = 2;
|
|
84
|
+
optional string device_id = 3;
|
|
85
|
+
optional google.protobuf.Timestamp detected_at = 4;
|
|
86
|
+
optional string type = 5;
|
|
87
|
+
optional string code = 6;
|
|
88
|
+
optional string description = 7;
|
|
89
|
+
optional bool active = 8;
|
|
90
|
+
optional openeld.providers.eld.shared.v1.EldDiagnosticRecord normalized_projection = 20;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// * Groups the stable subset of Geotab records used by the normalization layer.
|
|
94
|
+
message GeotabPayload {
|
|
95
|
+
optional openeld.providers.eld.shared.v1.EldPayloadMetadata metadata = 1;
|
|
96
|
+
repeated GeotabUserRecord users = 2;
|
|
97
|
+
repeated GeotabDeviceRecord devices = 3;
|
|
98
|
+
repeated openeld.providers.eld.shared.v1.EldVehicleAssignmentRecord vehicle_assignments = 4;
|
|
99
|
+
repeated GeotabDutyStatusLogRecord duty_status_logs = 5;
|
|
100
|
+
repeated GeotabDriverRegulationRecord driver_regulations = 6;
|
|
101
|
+
repeated GeotabLogRecord log_records = 7;
|
|
102
|
+
repeated GeotabInspectionRecord inspections = 8;
|
|
103
|
+
repeated GeotabDiagnosticRecord diagnostics = 9;
|
|
104
|
+
repeated openeld.providers.eld.shared.v1.EldSyncCheckpoint checkpoints = 10;
|
|
105
|
+
}
|
|
File without changes
|