Documentation
¶
Index ¶
- type BulkUpsertScanningStationsEndpoint
- type BulkUpsertScanningStationsRequest
- type ConnectProductionStepsEndpoint
- type ConnectProductionStepsRequest
- type CreateScanningStationEndpoint
- type CreateScanningStationRequest
- type DeleteScanningStationEndpoint
- type DeleteScanningStationRequest
- type ExportScanningStationsEndpoint
- type ExportScanningStationsRequest
- type ListScanningStationsEndpoint
- type ListScanningStationsRequest
- type RetrieveScanningStationEndpoint
- type RetrieveScanningStationRequest
- type ScanningStationSvc
- type ScanningStationSvcConfig
- type UpdateScanningStationEndpoint
- type UpdateScanningStationRequest
- type UpsertScanningStationInput
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BulkUpsertScanningStationsEndpoint ¶
type BulkUpsertScanningStationsEndpoint struct{}
Creates or updates multiple scanning stations for the account, matched by name (case-insensitive). Validates and resolves synchronously, then writes asynchronously — 202 with a job to poll.
func (*BulkUpsertScanningStationsEndpoint) Materialize ¶
func (e *BulkUpsertScanningStationsEndpoint) Materialize() *apiendpoint.APIEndpoint[*BulkUpsertScanningStationsRequest, *apiresource.Job]
type BulkUpsertScanningStationsRequest ¶
type BulkUpsertScanningStationsRequest struct {
// Scanning stations to create or update, matched by name (case-insensitive) within
// the account.
ScanningStations []UpsertScanningStationInput `json:"scanning_stations" validate:"required,min=1,max=1000,dive"`
}
Request to bulk upsert scanning stations.
func (*BulkUpsertScanningStationsRequest) SchemaExample ¶
func (*BulkUpsertScanningStationsRequest) SchemaExample() any
type ConnectProductionStepsEndpoint ¶
type ConnectProductionStepsEndpoint struct{}
Connects production steps to a scanning station by name.
Every production step in your account whose name contains the provided value is connected. A production step can be connected to at most one scanning station, so matching steps are moved off any station they were previously connected to. Steps already connected to this station that do not match are left connected, so this adds to the station's steps rather than replacing them.
Nothing about the station is returned, so retrieve the scanning station afterward to confirm which steps are now connected.
func (*ConnectProductionStepsEndpoint) Materialize ¶
func (e *ConnectProductionStepsEndpoint) Materialize() *apiendpoint.APIEndpoint[*ConnectProductionStepsRequest, *apiresource.EmptyResource]
type ConnectProductionStepsRequest ¶
type ConnectProductionStepsRequest struct {
// Scanning station ID.
ScanningStationID string `path:"id" validate:"required"`
// Full or partial production step name to match.
//
// Matching is a case-insensitive substring match, so a broad value such as a single letter can capture far more steps than intended.
Name string `json:"name" validate:"required"`
}
Request to connect production steps to a scanning station.
func (*ConnectProductionStepsRequest) SchemaExample ¶
func (*ConnectProductionStepsRequest) SchemaExample() any
type CreateScanningStationEndpoint ¶
type CreateScanningStationEndpoint struct{}
Creates a scanning station and assigns it to a department.
The new station has no production steps connected to it; use Connect Production Steps to Scanning Station to attach them.
Returns a conflict error if a scanning station with the same name already exists, and a not-found error if the department does not exist in your account.
func (*CreateScanningStationEndpoint) Materialize ¶
func (e *CreateScanningStationEndpoint) Materialize() *apiendpoint.APIEndpoint[*CreateScanningStationRequest, *apiresource.ScanningStation]
type CreateScanningStationRequest ¶
type CreateScanningStationRequest struct {
// Display name of the scanning station.
//
// Must be unique within your account; maximum 255 characters.
Name string `json:"name" validate:"required,max=255"`
// Free-form notes about the scanning station.
Notes field.Optional[string] `json:"notes,omitzero"`
// Scanning station type, determining which batch operation an operator performs when they scan here.
//
// - `init_batch`: starts a new batch at the beginning of a production flow.
// - `merge_batch`: combines several scanned batches into one.
// - `move_batch`: advances a batch through a production step connected to this station.
// - `split_batch`: divides a batch into several batches.
//
// The type cannot be changed after creation.
Type constants.ScanningStationType `json:"type" validate:"required"`
// Whether operators must perform a material check at this station.
//
// - `none`: no additional operator check is required.
// - `material_check`: a material check is expected before the operation.
OperatorRequirement constants.OperatorRequirement `json:"operator_requirement" validate:"required"`
// ID of the department this station belongs to.
//
// Must be a department in your account, and cannot be changed after creation.
DepartmentID string `json:"department_id" validate:"required"`
// Size of the labels printed at this station, given as width-by-height (for example, `1x1`).
LabelSizeCode field.Optional[constants.LabelSizeCode] `json:"label_size,omitzero"`
// Type of label printed at this station.
//
// - `tag`: a label attached to the physical product.
// - `traveler`: a routing sheet that accompanies the batch through every production step.
LabelTypeCode field.Optional[constants.LabelTypeCode] `json:"label_type,omitzero"`
}
Request to create a scanning station.
func (*CreateScanningStationRequest) SchemaExample ¶
func (*CreateScanningStationRequest) SchemaExample() any
type DeleteScanningStationEndpoint ¶
type DeleteScanningStationEndpoint struct{}
Deletes a scanning station.
Production steps connected to the station are not deleted, but they are left without a station to scan at until you connect them to another one. Deleting a station that was already deleted returns an already-deleted error rather than a not-found error.
func (*DeleteScanningStationEndpoint) Materialize ¶
func (e *DeleteScanningStationEndpoint) Materialize() *apiendpoint.APIEndpoint[*DeleteScanningStationRequest, *apiresource.EmptyResource]
type DeleteScanningStationRequest ¶
type DeleteScanningStationRequest struct {
// Scanning station ID.
ScanningStationID string `path:"id" validate:"required"`
}
Request to delete a scanning station.
type ExportScanningStationsEndpoint ¶
type ExportScanningStationsEndpoint struct{}
Starts an export of every matching scanning station and returns the job that tracks it.
func (*ExportScanningStationsEndpoint) Materialize ¶
func (e *ExportScanningStationsEndpoint) Materialize() *apiendpoint.APIEndpoint[*ExportScanningStationsRequest, *apiresource.Job]
type ExportScanningStationsRequest ¶
type ExportScanningStationsRequest struct {
// Free-text search term matched against scanning station names.
Query *string `json:"q"`
}
Filters which scanning stations land in the exported file.
func (*ExportScanningStationsRequest) SchemaExample ¶
func (*ExportScanningStationsRequest) SchemaExample() any
type ListScanningStationsEndpoint ¶
type ListScanningStationsEndpoint struct{}
Returns a paginated list of scanning stations in your account.
The `q` search term matches the station name.
func (*ListScanningStationsEndpoint) Materialize ¶
func (e *ListScanningStationsEndpoint) Materialize() *apiendpoint.APIEndpoint[*ListScanningStationsRequest, *apiresource.List[apiresource.ScanningStation]]
type ListScanningStationsRequest ¶
type ListScanningStationsRequest struct {
apiresource.PaginationRequest
}
Request to list scanning stations.
type RetrieveScanningStationEndpoint ¶
type RetrieveScanningStationEndpoint struct{}
Returns a scanning station by ID.
func (*RetrieveScanningStationEndpoint) Materialize ¶
func (e *RetrieveScanningStationEndpoint) Materialize() *apiendpoint.APIEndpoint[*RetrieveScanningStationRequest, *apiresource.ScanningStation]
type RetrieveScanningStationRequest ¶
type RetrieveScanningStationRequest struct {
// Scanning station ID.
ScanningStationID string `path:"id" validate:"required"`
}
Request to retrieve a scanning station.
type ScanningStationSvc ¶
type ScanningStationSvc interface {
ListScanningStations(ctx context.Context, req *ListScanningStationsRequest) (*apiresource.List[apiresource.ScanningStation], *apierror.APIError)
ExportScanningStations(ctx context.Context, req *ExportScanningStationsRequest) (*apiresource.Job, *apierror.APIError)
GetScanningStation(ctx context.Context, req *RetrieveScanningStationRequest) (*apiresource.ScanningStation, *apierror.APIError)
CreateScanningStation(ctx context.Context, req *CreateScanningStationRequest) (*apiresource.ScanningStation, *apierror.APIError)
BulkUpsertScanningStations(ctx context.Context, req *BulkUpsertScanningStationsRequest) (*apiresource.Job, *apierror.APIError)
UpdateScanningStation(ctx context.Context, req *UpdateScanningStationRequest) (*apiresource.ScanningStation, *apierror.APIError)
DeleteScanningStation(ctx context.Context, req *DeleteScanningStationRequest) (*apiresource.EmptyResource, *apierror.APIError)
ConnectProductionSteps(ctx context.Context, req *ConnectProductionStepsRequest) (*apiresource.EmptyResource, *apierror.APIError)
}
func NewScanningStationSvc ¶
func NewScanningStationSvc(config *ScanningStationSvcConfig) ScanningStationSvc
type ScanningStationSvcConfig ¶
type ScanningStationSvcConfig struct {
// CoreClient (required) is the core-service gRPC client.
CoreClient pb.CoreServiceClient
}
type UpdateScanningStationEndpoint ¶
type UpdateScanningStationEndpoint struct{}
Partially updates a scanning station.
Only the fields provided in the request are changed. Returns a conflict error if the new name is already in use by another scanning station.
func (*UpdateScanningStationEndpoint) Materialize ¶
func (e *UpdateScanningStationEndpoint) Materialize() *apiendpoint.APIEndpoint[*UpdateScanningStationRequest, *apiresource.ScanningStation]
type UpdateScanningStationRequest ¶
type UpdateScanningStationRequest struct {
// Scanning station ID.
ScanningStationID string `path:"id" validate:"required"`
// Display name of the scanning station.
//
// Must be unique within your account; maximum 255 characters.
Name field.Optional[string] `json:"name,omitzero" validate:"omitempty,max=255"`
// Free-form notes about the scanning station.
//
// Send `null` to clear.
Notes field.Clearable[string] `json:"notes,omitzero"`
// Size of the labels printed at this station, given as width-by-height (for example, `1x1`).
//
// Send `null` or an empty string to clear.
LabelSizeCode field.Clearable[constants.LabelSizeCode] `json:"label_size,omitzero"`
// Type of label printed at this station.
//
// - `tag`: a label attached to the physical product.
// - `traveler`: a routing sheet that accompanies the batch through every production step.
//
// Send `null` or an empty string to clear.
LabelTypeCode field.Clearable[constants.LabelTypeCode] `json:"label_type,omitzero"`
// Whether operators must perform a material check at this station.
//
// - `none`: no additional operator check is required.
// - `material_check`: a material check is expected before the operation.
OperatorRequirement field.Optional[constants.OperatorRequirement] `json:"operator_requirement,omitzero"`
}
Request to partially update a scanning station.
The station's type and department are set at creation and cannot be changed here.
func (*UpdateScanningStationRequest) SchemaExample ¶
func (*UpdateScanningStationRequest) SchemaExample() any
type UpsertScanningStationInput ¶
type UpsertScanningStationInput struct {
// Display name of the scanning station. Rows are matched against existing stations
// by name (case-insensitive): a match updates that station, no match creates a new
// one.
Name string `json:"name" validate:"required,max=255"`
// Free-form notes about the scanning station. Preserved when omitted on update.
Notes field.Optional[string] `json:"notes,omitzero"`
// Scanning station type, determining which batch operation the station performs.
//
// - `init_batch`: initializes a new batch.
// - `merge_batch`: merges multiple batches into one.
// - `move_batch`: moves a batch to another location or step.
// - `split_batch`: splits a batch into multiple batches.
//
// The type cannot be changed after creation — rows updating an existing station
// must state that station's current type.
Type constants.ScanningStationType `json:"type" validate:"required"`
// Whether operators must perform a material check at this station.
//
// - `none`: no additional operator check is required.
// - `material_check`: a material check is expected before the operation.
OperatorRequirement constants.OperatorRequirement `json:"operator_requirement" validate:"required"`
// Size of the labels printed at this station, given as width-by-height (for
// example, `1x1`). Preserved when omitted on update; send `null` or an empty
// string to clear.
LabelSizeCode field.Clearable[constants.LabelSizeCode] `json:"label_size,omitzero"`
// Type of label printed at this station. Preserved when omitted on update; send
// `null` or an empty string to clear.
//
// - `tag`: a label attached to the physical product.
// - `traveler`: a routing sheet that accompanies the batch through every production step.
LabelTypeCode field.Clearable[constants.LabelTypeCode] `json:"label_type,omitzero"`
// Department this station belongs to, referenced by `id` or `name`. Create-only: a row
// updating an existing station must state that station's current department.
Department apirequest.ObjectIdentifier `json:"department" validate:"required"`
}
Input for a single scanning station in a bulk upsert operation.