331 lines
8.5 KiB
Go
331 lines
8.5 KiB
Go
package openplatform
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
StatusNormal = "NORMAL"
|
|
StatusNoData = "NO_DATA"
|
|
)
|
|
|
|
type QueryRequest struct {
|
|
PlateNumbers []string `json:"plateNumbers"`
|
|
Date string `json:"date"`
|
|
ProtocolPriority ProtocolPriority `json:"protocolPriority,omitempty"`
|
|
}
|
|
|
|
type MileageRangeRequest struct {
|
|
StartDate string `json:"startDate"`
|
|
EndDate string `json:"endDate"`
|
|
PlateNumbers []string `json:"plateNumbers"`
|
|
ProtocolPriority ProtocolPriority `json:"protocolPriority,omitempty"`
|
|
Cursor string `json:"cursor"`
|
|
PageSize int `json:"pageSize"`
|
|
}
|
|
|
|
type ProtocolPriority struct {
|
|
Values []string
|
|
Present bool
|
|
}
|
|
|
|
func (p *ProtocolPriority) UnmarshalJSON(data []byte) error {
|
|
p.Present = true
|
|
if string(data) == "null" {
|
|
p.Values = []string{}
|
|
return nil
|
|
}
|
|
var values []string
|
|
if err := json.Unmarshal(data, &values); err != nil {
|
|
return err
|
|
}
|
|
p.Values = values
|
|
return nil
|
|
}
|
|
|
|
type HydrogenResult struct {
|
|
PlateNumber string `json:"plateNumber"`
|
|
Date string `json:"date"`
|
|
HydrogenConsumptionKg *float64 `json:"hydrogenConsumptionKg"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type MileageResult struct {
|
|
VIN string `json:"vin"`
|
|
PlateNumber string `json:"plateNumber"`
|
|
Date string `json:"date"`
|
|
DailyMileageKm *float64 `json:"dailyMileageKm"`
|
|
TotalMileageKm *float64 `json:"totalMileageKm"`
|
|
DataTime *string `json:"dataTime"`
|
|
UpdatedAt *string `json:"updatedAt"`
|
|
SourceProtocol *string `json:"sourceProtocol"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type MileageRangeResult struct {
|
|
VIN string `json:"vin"`
|
|
PlateNumber string `json:"plateNumber"`
|
|
Date string `json:"date"`
|
|
DailyMileageKm *float64 `json:"dailyMileageKm"`
|
|
TotalMileageKm *float64 `json:"totalMileageKm"`
|
|
DataTime *string `json:"dataTime"`
|
|
UpdatedAt *string `json:"updatedAt"`
|
|
SourceProtocol *string `json:"sourceProtocol"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type TotalMileageQueryRequest struct {
|
|
VIN string `json:"vin"`
|
|
Time string `json:"time"`
|
|
Protocol string `json:"protocol,omitempty"`
|
|
}
|
|
|
|
type TotalMileageResult struct {
|
|
VIN string `json:"vin"`
|
|
QueryTime string `json:"queryTime"`
|
|
TotalMileageKm *float64 `json:"totalMileageKm"`
|
|
Protocol string `json:"protocol,omitempty"`
|
|
ProtocolInput string `json:"protocolInput,omitempty"`
|
|
MileageMeaning string `json:"mileageMeaning,omitempty"`
|
|
RecordTime string `json:"recordTime,omitempty"`
|
|
TimeDifferenceSeconds *int64 `json:"timeDifferenceSeconds,omitempty"`
|
|
SelectionPolicy string `json:"selectionPolicy"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type TotalMileagePoint struct {
|
|
VIN string
|
|
Protocol string
|
|
ObservedAt time.Time
|
|
TotalMileageKm float64
|
|
}
|
|
|
|
type ExternalResponse struct {
|
|
Code string `json:"code"`
|
|
Message string `json:"message"`
|
|
Data any `json:"data,omitempty"`
|
|
TraceID string `json:"traceId"`
|
|
}
|
|
|
|
type MileageRangeResponse struct {
|
|
Code string `json:"code"`
|
|
Message string `json:"message"`
|
|
Data []MileageRangeResult `json:"data"`
|
|
SnapshotID string `json:"snapshotId"`
|
|
NextCursor *string `json:"nextCursor"`
|
|
TraceID string `json:"traceId"`
|
|
}
|
|
|
|
type App struct {
|
|
ID uint64 `json:"id"`
|
|
Name string `json:"name"`
|
|
AppKeyPrefix string `json:"appKeyPrefix"`
|
|
Status string `json:"status"`
|
|
ValidFrom time.Time `json:"validFrom"`
|
|
ValidTo *time.Time `json:"validTo,omitempty"`
|
|
CreatedBy string `json:"createdBy"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
type AppCreated struct {
|
|
App
|
|
AppKey string `json:"appKey"`
|
|
}
|
|
|
|
type AppInput struct {
|
|
Name string `json:"name"`
|
|
Status string `json:"status"`
|
|
ValidFrom string `json:"validFrom"`
|
|
ValidTo string `json:"validTo"`
|
|
}
|
|
|
|
type VehicleGrantInput struct {
|
|
VIN string `json:"vin"`
|
|
ValidFrom string `json:"validFrom"`
|
|
ValidTo string `json:"validTo"`
|
|
}
|
|
|
|
type VehicleGrantRequest struct {
|
|
Vehicles []VehicleGrantInput `json:"vehicles"`
|
|
}
|
|
|
|
type VehicleGrant struct {
|
|
VIN string `json:"vin"`
|
|
Plate string `json:"plate"`
|
|
ValidFrom time.Time `json:"validFrom"`
|
|
ValidTo *time.Time `json:"validTo,omitempty"`
|
|
GrantedBy string `json:"grantedBy"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
type VehicleCatalogItem struct {
|
|
VIN string `json:"vin"`
|
|
Plate string `json:"plate"`
|
|
OEM string `json:"oem"`
|
|
Status string `json:"status"`
|
|
Source string `json:"source"`
|
|
}
|
|
|
|
type AuthorizedVehicle struct {
|
|
VIN string
|
|
Plate string
|
|
}
|
|
|
|
type AppCredential struct {
|
|
ID uint64
|
|
Name string
|
|
}
|
|
|
|
type DailyHydrogen struct {
|
|
VIN string
|
|
Date string
|
|
ConsumptionKg float64
|
|
SampleCount int
|
|
QualityStatus string
|
|
}
|
|
|
|
type DailyMileage struct {
|
|
VIN string
|
|
Date string
|
|
Protocol string
|
|
MileageKm float64
|
|
TotalMileageKm float64
|
|
DataTime string
|
|
UpdatedAt string
|
|
}
|
|
|
|
type MileageSnapshot struct {
|
|
ID string
|
|
AppID uint64
|
|
RequestHash []byte
|
|
StartDate string
|
|
EndDate string
|
|
VehicleCount int
|
|
ExpiresAt time.Time
|
|
Vehicles []AuthorizedVehicle
|
|
}
|
|
|
|
type HydrogenObservation struct {
|
|
VIN string
|
|
Source string
|
|
ObservedAt time.Time
|
|
MassKg float64
|
|
TankCapacityLiter float64
|
|
PressureMPa float64
|
|
TemperatureC float64
|
|
NoiseKg float64
|
|
RefuelThresholdKg float64
|
|
}
|
|
|
|
type HydrogenRateObservation struct {
|
|
VIN string
|
|
Source string
|
|
ObservedAt time.Time
|
|
Rate float64
|
|
MileageKm float64
|
|
}
|
|
|
|
type HydrogenRateDailyStat struct {
|
|
VIN string
|
|
Source string
|
|
Date string
|
|
ConsumptionKg float64
|
|
SampleCount int
|
|
QualityStatus string
|
|
QualityReason string
|
|
}
|
|
|
|
type HydrogenDailyStat struct {
|
|
VIN string
|
|
Source string
|
|
Date string
|
|
ConsumptionKg float64
|
|
FirstMassKg float64
|
|
LastMassKg float64
|
|
SampleCount int
|
|
RefuelCount int
|
|
QualityStatus string
|
|
QualityReason string
|
|
}
|
|
|
|
type PortalUser struct {
|
|
ID uint64 `json:"id"`
|
|
Username string `json:"username"`
|
|
DisplayName string `json:"displayName"`
|
|
Status string `json:"status"`
|
|
ValidFrom time.Time `json:"validFrom"`
|
|
ValidTo *time.Time `json:"validTo,omitempty"`
|
|
LastLoginAt *time.Time `json:"lastLoginAt,omitempty"`
|
|
CreatedBy string `json:"createdBy"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
type PortalUserInput struct {
|
|
Username string `json:"username"`
|
|
DisplayName string `json:"displayName"`
|
|
Password string `json:"password"`
|
|
Status string `json:"status"`
|
|
ValidFrom string `json:"validFrom"`
|
|
ValidTo string `json:"validTo"`
|
|
}
|
|
|
|
type PortalUserAppInput struct {
|
|
AppID uint64 `json:"appId"`
|
|
Role string `json:"role"`
|
|
}
|
|
|
|
type PortalUserAppRequest struct {
|
|
Apps []PortalUserAppInput `json:"apps"`
|
|
}
|
|
|
|
type PortalUserApp struct {
|
|
AppID uint64 `json:"appId"`
|
|
AppName string `json:"appName"`
|
|
AppKeyPrefix string `json:"appKeyPrefix"`
|
|
AppStatus string `json:"appStatus"`
|
|
Role string `json:"role"`
|
|
ValidFrom time.Time `json:"validFrom"`
|
|
ValidTo *time.Time `json:"validTo,omitempty"`
|
|
}
|
|
|
|
type PortalSession struct {
|
|
UserID uint64 `json:"userId"`
|
|
Username string `json:"username"`
|
|
DisplayName string `json:"displayName"`
|
|
UserType string `json:"userType"`
|
|
ExpiresAt time.Time `json:"expiresAt"`
|
|
}
|
|
|
|
type PortalLoginResponse struct {
|
|
AccessToken string `json:"accessToken"`
|
|
ExpiresAt time.Time `json:"expiresAt"`
|
|
Session PortalSession `json:"session"`
|
|
}
|
|
|
|
type PortalLoginRequest struct {
|
|
Username string `json:"username"`
|
|
Password string `json:"password"`
|
|
}
|
|
|
|
type PortalAuditItem struct {
|
|
TraceID string `json:"traceId"`
|
|
Endpoint string `json:"endpoint"`
|
|
Result string `json:"result"`
|
|
VehicleCount int `json:"vehicleCount"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
}
|
|
|
|
type DataProduct struct {
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
Version string `json:"version"`
|
|
Status string `json:"status"`
|
|
Method string `json:"method"`
|
|
Path string `json:"path"`
|
|
Unit string `json:"unit"`
|
|
}
|