"Arbitrary JSON value (object, array, or scalar). Used only where the shape is dynamic or type-unstable." scalar Json "A saved address / point in the address book." type AddressbookEntry { id: Int name: String unique_identifier: String business_id: Int created_by: Int updated_by: Int broker_id: Int description: String postcode: String postcode_range: String postcode_prefix: String street_number: String street_name: String apt: String city: String province: String country: String lat: String lng: String telephone: String wms_setting_id: Int warehouse_id: Int territory: Int share_to_territories: Json transit_territories: Json shipping_methods: Json is_point: Int is_warehouse: Int is_fulfillment_center: Int status: Int created_at: String updated_at: String device_flow_policy: Json "Operating-hour set the address links (reload depots and break places are planned only while open); null when none." operating_hour_id: Int "Holiday calendar the address links; null when none." holiday_calendar_id: Int business_name: String territory_name: String address: String territory_info: Json editable: Boolean } "A delivery territory owned by the authenticated business." type ClientTerritory { id: Int name: String "Territory centre point (geometry payload)." center: Json "Territory polygon as a coordinate array." poly: Json } "A curated, safe subset of a driver profile." type DriverProfile { id: Int business_id: Int users_info_id: Int name: String email: String language: String alias: String telephone: String address: String address_2: String city: String province: String country: String postcode: String business_name: String vehicle_type: Int fuel_type: Int capacity: Int territory_id: Int start_location_id: Int end_location_id: Int gps_tracking: Int gps_device_type: String gps_identifier: String status: Int "Skills assigned to the driver (reference data)." skills: Json } "An alliance of cooperating clients." type Alliance { id: Int name: String code: String description: String owner_client_id: Int join_policy: String status: String settings: Json created_at: String updated_at: String deleted_at: String "Owner client (curated), when loaded." owner: AllianceClient } "A client shown within an alliance (safe, curated subset of the user record)." type AllianceClient { id: Int name: String email: String address: String address_2: String city: String province: String country: String postcode: String telephone: String logo_white_bg: String logo_dark_bg: String } "A permission grant attached to an alliance membership." type AllianceMemberPermission { id: Int alliance_member_id: Int permission_type: String grant_type: String is_enabled: Boolean created_at: String updated_at: String } "A client's membership in one alliance." type AllianceMembership { alliance: Alliance role: String status: String joined_at: String permissions: [AllianceMemberPermission] membership_id: Int is_invitation: Boolean "Inviting client (curated), null unless this was an invitation." inviter: AllianceClient } "The caller's alliance memberships." type AllianceListPayload { success: Boolean data: [AllianceMembership] } "A member of an alliance." type AllianceMember { id: Int alliance_id: Int client_id: Int role: String status: String invited_by: Int approved_by: Int joined_at: String created_at: String updated_at: String "Member client (curated), when loaded." client: AllianceClient "Inviting client (curated), when loaded." inviter: AllianceClient "Member permission grants, when loaded." permissions: [AllianceMemberPermission] } "A permission enabled at the alliance level." type AlliancePermission { id: Int alliance_id: Int permission_type: String is_enabled: Boolean constraints: Json created_at: String updated_at: String } "A logged cross-client data access within an alliance." type AllianceAccessLog { id: Int alliance_id: Int accessor_client_id: Int owner_client_id: Int resource_type: String resource_id: Int action: String ip_address: String accessed_at: String "Accessing client (curated), when loaded." accessor: AllianceClient "Owning client (curated), when loaded." owner: AllianceClient } "A pagination link for the access-log paginator." type AllianceAccessLogLink { url: String label: String active: Boolean } "Paginated access-log entries." type AllianceAccessLogPaginator { current_page: Int data: [AllianceAccessLog] first_page_url: String from: Int last_page: Int last_page_url: String links: [AllianceAccessLogLink] next_page_url: String path: String per_page: Int prev_page_url: String to: Int total: Int } "A client whose data the caller may access via an alliance." type AllianceAccessibleClient { id: Int name: String business_name: String is_self: Boolean } "Alliance details with the caller's membership and the member list." type AllianceShowPayload { success: Boolean message: String alliance: Alliance my_membership: AllianceMember members: [AllianceMember] } "The members of an alliance." type AllianceMembersPayload { success: Boolean message: String members: [AllianceMember] } "Pending join requests for an alliance." type AlliancePendingRequestsPayload { success: Boolean message: String requests: [AllianceMember] } "Alliance-level and the caller's member-level permissions." type AlliancePermissionsPayload { success: Boolean message: String alliance_permissions: [AlliancePermission] my_permissions: [AllianceMemberPermission] } "Paginated cross-client access logs for an alliance." type AllianceAccessLogsPayload { success: Boolean message: String logs: AllianceAccessLogPaginator } "Clients whose data the caller may access via alliances." type AllianceAccessibleClientsPayload { success: Boolean data: [AllianceAccessibleClient] } "A simple success/message result." type AllianceResultPayload { success: Boolean message: String } "A result carrying the affected alliance." type AllianceAlliancePayload { success: Boolean message: String alliance: Alliance } "A result carrying the affected membership." type AllianceMemberActionPayload { success: Boolean message: String member: AllianceMember status: String } "The caller's updated member-level permissions." type AllianceMemberPermissionsPayload { success: Boolean message: String permissions: [AllianceMemberPermission] } "The updated alliance-level permissions." type AllianceAlliancePermissionsPayload { success: Boolean message: String permissions: [AlliancePermission] } "An alliance-level permission to enable/disable." input AllianceUpdatePermissionInput { permission_type: String! is_enabled: Boolean! constraints: Json } "A member's own permission grant to enable/disable." input AllianceUpdateMyPermissionInput { permission_type: String! grant_type: String! is_enabled: Boolean! } "AddressBook type" type AddressBook { "Address ID" id: Int! "Contact name" name: String "Company name" company: String "Address" address: String "Postcode" postcode: String "Phone number" phone: String "Email address" email: String "Creation date" created_at: String "Update date" updated_at: String } "ApiResponse type" type ApiResponse { "Success status" success: Boolean "Response message" message: String "Response data (JSON string)" data: String "Response code" code: Int } "AuthPayload type" type AuthPayload { "Success" success: Boolean "Result" result: Boolean "Access token" access_token: String "Token type" token_type: String "Expires at" expires_at: String "Expires timestamp" expires_timestamp: Int "User" user: User "Message" message: String "Name" name: String "Email" email: String } "Customer type" type Customer { "Id" id: ID! "Name" name: String "Email" email: String "Phone" phone: String "Address" address: String "Created at" created_at: String } "Driver type" type Driver { "Driver ID" id: Int! "Driver name" name: String "Driver email" email: String "Driver phone" phone: String "Driver status" status: String "Creation date" created_at: String "Update date" updated_at: String } "Inventory type" type Inventory { "Inventory ID" id: Int! "Warehouse ID" warehouse_id: Int "Product name" product_name: String "Quantity" quantity: Int "Inventory status" status: String "Creation date" created_at: String "Update date" updated_at: String } "MessageResponse type" type MessageResponse { "Success" success: Boolean "Message" message: String "Result" result: Boolean } "A OrderStatus object" type OrderStatus { "id" id: String "name" name: String "description" description: String } "Order type" type Order { "Id" id: ID! "Ref" ref: String "Tracking number" tracking_number: String "Status" status: Int "Delivery address" delivery_address: String "Delivery postal code" delivery_postal_code: String "Delivery contact name" delivery_contact_name: String "Delivery contact phone" delivery_contact_phone: String "Pickup address" pickup_address: String "Pickup postal code" pickup_postal_code: String "Pickup contact name" pickup_contact_name: String "Pickup contact phone" pickup_contact_phone: String "Notes" notes: String "Customer id" customer_id: Int "Created at" created_at: String "Updated at" updated_at: String "Packages" packages: [Package] "Customer" customer: Customer } "Package type" type Package { "Id" id: ID! "Order id" order_id: Int "Weight" weight: Float "Length" length: Float "Width" width: Float "Height" height: Float "Dimensions" dimensions: String "Tracking number" tracking_number: String "Status" status: Int "Created at" created_at: String } "A configurable return reason for a business." type ReturnReason { id: Int! reason: String business_id: Int status: Int sort_number: Int receive_status: Int visible_to_public: Int for_delivery: Int for_pickup: Int created_at: String updated_at: String } "Route type" type Route { "Route ID" id: Int! "Route name" name: String "Driver ID" driver_id: Int "Route status" status: String "Start time" start_time: String "End time" end_time: String "Creation date" created_at: String "Update date" updated_at: String } "A driver skill defined for a business." type Skill { id: Int! name: String business_id: Int status: Int "Driver associations (pivot ids only — no driver PII)." drivers: [SkillDriver] } "Association between a skill and a driver (pivot ids only)." type SkillDriver { id: Int drivers_id: Int skills_id: Int } "Covered postcodes for the caller's territories." type CoveragePayload { result: Boolean message: String "Covered postcodes." data: [String] } "Per-postcode coverage result (postcode → covered boolean)." type CheckPostcodePayload { result: Boolean message: String "Map of queried postcode → whether it is covered." data: Json } "A TrackingEvent object" type TrackingEvent { "id" id: String "order_id" order_id: String "event_type" event_type: String "description" description: String "timestamp" timestamp: String } "User type" type User { "Id" id: ID! "Name" name: String "Email" email: String "Groups id" groups_id: Int "Status" status: Int "Created at" created_at: String "Updated at" updated_at: String } "Warehouse type" type Warehouse { "Warehouse ID" id: Int! "Warehouse name" name: String "Warehouse address" address: String "Warehouse postcode" postcode: String "Warehouse phone" phone: String "Creation date" created_at: String "Update date" updated_at: String } "Locker access restriction mode." enum PartnerLockerAccessMode { SCOPE_ANY RESTRICTED_LOCATIONS } "Partner locker delivery lifecycle status." enum PartnerLockerDeliveryStatus { DRAFT ACTIVE AT_LOCKER OPENING AWAITING_CONFIRMATION FAILED_RETRYABLE FAILED_ATTENTION DELIVERED PICKED_UP EXPIRED CANCELLED FAILED } "Partner locker scope status." enum PartnerLockerScopeStatus { ACTIVE INACTIVE } "Package dimension unit." enum PartnerLockerDimensionUnit { MM CM M FT INCH } "Package weight unit." enum PartnerLockerWeightUnit { KG G LB OZ } "Exactly one recipient contact channel." input PartnerLockerRecipientInput { phone: String email: String } "One requested delivery package. Size is checked only when all three edges and the unit are given; weight only when both the figure and its unit are given." input PartnerLockerPackageInput { externalPackageId: String "A package the carrier pre-advised, by the package number the carrier packages API reports. The task then deposits that package instead of describing a new one: it is pinned to the package's pickup location, the package keeps its number and pickup code, and staff cannot shelve it meanwhile. All packages of a task are named this way or none; packages of one pre-advised order group must be named together." carrierPackageNo: String length: Float width: Float height: Float dimensionUnit: PartnerLockerDimensionUnit "Declared weight, checked against each compartment load limit. Needs weightUnit." weight: Float weightUnit: PartnerLockerWeightUnit } "Create one partner delivery access code and its package intents." input CreatePartnerLockerDeliveryInput { idempotencyKey: String! externalOrderId: String! orderId: Int externalDriverId: String recipient: PartnerLockerRecipientInput! platformScopeGroupId: Int! partnerScopeGroupId: Int accessMode: PartnerLockerAccessMode restrictedLocationIds: [Int!] packageCount: Int packages: [PartnerLockerPackageInput!] expiresInMinutes: Int displayName: String mock: Boolean "standard (default) or grouped: the packages belong together — one cabinet whenever a cabinet can take them all, else as few cabinets of the same location as possible, never another location. A preference, not a gate: a partial delivery is still possible when the location is short." deliveryMode: String } "Partner-managed child scope constrained by a platform grant." input PartnerLockerScopeInput { parentScopeGroupId: Int name: String accessMode: PartnerLockerAccessMode locationIds: [Int!] rules: Json } type PartnerLockerPackage { sequence: Int! externalPackageId: String "The pre-advised package this task deposits, in the carrier's numbering; null for a package the task described itself." carrierPackageNo: String lengthMm: Int widthMm: Int heightMm: Int "Declared weight in grams, null when none was declared." weightG: Int status: String! failureCode: String inventoryId: Int associatedPackageGroupItemId: Int finalShelfId: Int finalGridId: Int "Shelf code of the cabinet the package finally landed in (e.g. \"L1\")." finalShelfCode: String "Hardware door number of the compartment the package finally landed in." finalCompartmentNumber: String "Pickup Locker Number of that compartment, counted column-major from 1." finalPickupLockerNumber: Int "Human-readable compartment label \"{shelfCode}-{pickupLockerNumber}\" (e.g. \"L1-3\")." finalPickupLockerCode: String smartLockerLogId: Int } type PartnerLockerLocation { id: Int! name: String! } type PartnerLockerReservation { locationId: Int! reservedCount: Int! status: String! expiresAt: String } type PartnerLockerWebhookDeliverySummary { configured: Boolean! eventId: String eventType: String status: String attemptCount: Int! nextAttemptAt: String lastHttpStatus: Int lastErrorCode: String deliveredAt: String } type PartnerLockerNotificationSummary { channel: String! recipientMask: String! status: String! attemptCount: Int! errorCode: String nextAttemptAt: String sentAt: String } type PartnerLockerEventSummary { eventId: String! eventType: String! status: String! attemptCount: Int! lastHttpStatus: Int lastErrorCode: String occurredAt: String deliveredAt: String } type PartnerLockerDelivery { deliveryNo: String! externalOrderId: String! orderId: Int externalDriverId: String recipientChannel: String! platformScopeGroupId: Int! partnerScopeGroupId: Int accessMode: PartnerLockerAccessMode isMock: Boolean! restrictedLocationIds: [Int!] status: PartnerLockerDeliveryStatus pickupStatus: String requestedPackageCount: Int! actualPackageCount: Int! failedPackageCount: Int! partialDelivery: Boolean! "standard | grouped — the placement policy chosen at creation" deliveryMode: String "For a follow-up task made from a grouped order's undelivered remainder: the task it came from" splitFromDeliveryNo: String "For a grouped order delivered in part: the follow-up task its remainder was handed to" splitDeliveryNo: String associatedPackageGroupId: Int pickupCode: String readyPackageCount: Int! remainingPackageCount: Int! pickedUpAt: String webhookDeliverySummary: PartnerLockerWebhookDeliverySummary notificationSummary: [PartnerLockerNotificationSummary!] eventTimeline: [PartnerLockerEventSummary!] accessCode: String maskedAccessCode: String expiresAt: String reservationExpiresAt: String cancelledAt: String expiredAt: String usedLocationId: Int deliveredLocation: PartnerLockerLocation failureCode: String packages: [PartnerLockerPackage!] reservation: PartnerLockerReservation createdAt: String updatedAt: String } type PartnerLockerScope { id: Int! parentScopeGroupId: Int scopeLevel: String! name: String! status: PartnerLockerScopeStatus accessMode: PartnerLockerAccessMode locationIds: [Int!] rules: Json ruleVersion: Int! candidateLocationCount: Int } type PartnerLockerPagination { currentPage: Int! lastPage: Int! perPage: Int! total: Int! } type PartnerLockerDeliveryPayload { result: Boolean! code: String! message: String! errors: Json replayed: Boolean delivery: PartnerLockerDelivery } type PartnerLockerDeliveryListPayload { result: Boolean! code: String! message: String! errors: Json deliveries: [PartnerLockerDelivery!] pagination: PartnerLockerPagination } type PartnerLockerScopePayload { result: Boolean! code: String! message: String! errors: Json scope: PartnerLockerScope } type PartnerLockerScopeListPayload { result: Boolean! code: String! message: String! errors: Json providerId: Int platformGrants: [PartnerLockerScope!] partnerScopes: [PartnerLockerScope!] } "Open locker doors for a delivery access code at a location. locationId may be omitted when the code was created for exactly one location." input OpenPartnerLockerDeliveryInput { locationId: Int accessCode: String! } "Reference an in-progress remote door-opening attempt by its claim token. locationId is an optional consistency check." input PartnerLockerRemoteAttemptInput { locationId: Int claimToken: String! decision: String } "Identify a just-confirmed delivery for the correction reopen: pass deliveryNo (preferred) or the original accessCode." input ReopenPartnerLockerDeliveryInput { deliveryNo: String accessCode: String } "Identify a delivered drop-off awaiting pickup: pass deliveryNo (preferred) or the group pickupCode." input PickupOpenPartnerLockerDeliveryInput { deliveryNo: String pickupCode: String } "Which delivery to rotate a code for, and which code: access (courier delivery code, only before it is used) or pickup (recipient code, only after the deposit is settled)." input RotatePartnerLockerDeliveryCodeInput { deliveryNo: String! "access | pickup" codeType: String! "pickup only: re-send the recipient notification carrying the new code." notifyRecipient: Boolean } type PartnerLockerCodeRotationPayload { result: Boolean! code: String! message: String! errors: Json deliveryNo: String codeType: String accessCode: String maskedAccessCode: String pickupCode: String expiresAt: String notifyRecipient: Boolean } "Reject an opened compartment for one package and re-open another. reason is one of door_not_open, compartment_occupied, too_small (which forces a strictly larger compartment). locationId is an optional consistency check." input ReassignPartnerLockerDeliveryInput { locationId: Int claimToken: String! packageSequence: Int! reason: String! } type PartnerLockerRemoteOpenPayload { result: Boolean! code: String! message: String! errors: Json deliveryNo: String claimToken: String locationId: Int locationName: String pickupCode: String attempt: Json } type PartnerLockerRemoteActionPayload { result: Boolean! code: String! message: String! errors: Json outcome: Json } "Generate a virtual mock locker cabinet for sandbox testing." input CreatePartnerLockerMockLockerInput { locationId: Int! name: String compartments: Int gridLengthCm: Float gridWidthCm: Float gridHeightCm: Float "Load limit of each compartment, 0 exclusive to 1000 kg. Omitted leaves the cabinet with no limit, and weight then never refuses a parcel." weightLimitKg: Float } "Resize a mock cabinet's compartments or set their load limit." input SetPartnerLockerMockCompartmentsInput { "Compartment numbers to change; omit for all of them." compartments: [Int] gridLengthCm: Float gridWidthCm: Float gridHeightCm: Float "Load limit per compartment, 0 exclusive to 1000 kg. Send null to clear it, after which weight never refuses a parcel here." weightLimitKg: Float } type PartnerLockerMockPayload { result: Boolean! code: String! message: String! errors: Json locker: Json lockers: Json deleted: Boolean deviceId: String removed: Int released: Int taken: Int } type PartnerLockerLocationListPayload { result: Boolean! code: String! message: String! errors: Json origin: Json locations: Json } type PartnerLockerScopeLocationListPayload { result: Boolean! code: String! message: String! errors: Json count: Int filter: Json locations: Json } type CustomerRegisterPayload { result: Boolean! "True when the business reviews API registrations and the account cannot sign in yet" pendingReview: Boolean! message: String! } type CustomerWechatLoginPayload { result: Boolean! message: String "True when this WeChat account is not linked yet — continue with customerWechatRegister" needRegister: Boolean "Encrypted openid to pass to customerWechatRegister; only set when needRegister is true" openidToken: String accessToken: String tokenType: String expiresAt: String expiresTimestamp: Int "Display name of the signed-in customer" name: String providerLogo: String providerLogoWhite: String } "A product owned by a business." type Product { id: Int! name: String sku: String display_names: Json descriptions: Json price: String compare_at_price: String "Scheduled sale price; applies while inside the sale window" sale_price: String "Sale window start (ISO8601 UTC); null = open-ended" sale_starts_at: String "Sale window end (ISO8601 UTC); null = open-ended" sale_ends_at: String "Cost / wholesale price (margin analytics)" cost_price: String "sale_price while the sale window is active, otherwise price" effective_price: String status: Boolean business_id: Int customer_id: Int product_type_id: Int product_class: String parent_product_id: Int sort_order: Int attributes: Json "Custom SKU field values of the product's account: {key: value}" custom_fields: Json "As entered, in weight_unit" weight: String "As entered, in dimension_unit" length: String "As entered, in dimension_unit" width: String "As entered, in dimension_unit" height: String "Stored whole grams (rounded up)" weight_g: Int "Stored whole millimetres (rounded up)" length_mm: Int "Stored whole millimetres (rounded up)" width_mm: Int "Stored whole millimetres (rounded up)" height_mm: Int weight_unit: Int dimension_unit: Int customs_currency: String customs_value: String origin_country: String hs_code: String manage_stock: Boolean stock_quantity: Int stock_status: String "deny | allow | notify (default deny)" backorder_policy: String stock_display: String stock_display_threshold: Int stock_display_as: Int tax_class: String is_virtual: Boolean is_downloadable: Boolean is_subscription: Boolean subscription_period: String subscription_interval: Int created_at: String updated_at: String productType: ProductCategory variants: [ProductVariant] options: [ProductOption] platformLinks: [ProductPlatformLink] bundleItems: [ProductBundleItem] images: [ProductImage] barcodes: [ProductBarcode] } "A product category / type definition." type ProductCategory { id: Int! business_id: Int parent_id: Int customer_id: Int store_id: Int form_id: Int type_name: String display_names: Json descriptions: Json image: String status: Boolean sort_order: Int created_at: String updated_at: String } "A purchasable variant of a product." type ProductVariant { id: Int! product_id: Int business_id: Int name: String sku: String price: String compare_at_price: String "Scheduled sale price; applies while inside the sale window" sale_price: String "Sale window start (ISO8601 UTC); null = open-ended" sale_starts_at: String "Sale window end (ISO8601 UTC); null = open-ended" sale_ends_at: String "Cost / wholesale price (margin analytics)" cost_price: String "sale_price while the sale window is active, else price, else the parent product effective price" effective_price: String "As entered, in weight_unit" weight: String "As entered, in dimension_unit" length: String "As entered, in dimension_unit" width: String "As entered, in dimension_unit" height: String "Stored whole grams (rounded up)" weight_g: Int "Stored whole millimetres (rounded up)" length_mm: Int "Stored whole millimetres (rounded up)" width_mm: Int "Stored whole millimetres (rounded up)" height_mm: Int weight_unit: Int dimension_unit: Int manage_stock: Boolean stock_quantity: Int stock_status: String "deny | allow | notify (default deny)" backorder_policy: String stock_display: String stock_display_threshold: Int stock_display_as: Int barcode: String status: Boolean sort_order: Int option_values: Json attributes: Json image_path: String created_at: String updated_at: String } "A configurable option (e.g. Size, Color) of a product." type ProductOption { id: Int! product_id: Int name: String display_names: Json type: String sort_order: Int values: [ProductOptionValue] created_at: String updated_at: String } "A selectable value within a product option." type ProductOptionValue { id: Int! product_option_id: Int value: String display_names: Json sort_order: Int created_at: String updated_at: String } "A product/variant mapping to an external e-commerce platform." type ProductPlatformLink { id: Int! business_id: Int product_id: Int variant_id: Int platform: String platform_setting_id: Int external_product_id: String external_variant_id: String external_sku: String external_data: Json sync_status: String last_synced_at: String created_at: String updated_at: String } "A child product/variant that composes a bundled product." type ProductBundleItem { id: Int! product_id: Int child_product_id: Int child_variant_id: Int quantity: Int sort_order: Int is_optional: Boolean childProduct: Product childVariant: ProductVariant created_at: String updated_at: String } "An image attached to a product." type ProductImage { id: Int! product_id: Int image_path: String sort_order: Int is_cover: Boolean created_at: String updated_at: String } "A barcode registered for a product." type ProductBarcode { id: Int! business_id: Int product_id: Int barcode: String description: String created_at: String updated_at: String } "Pagination metadata for a product list." type ProductPagination { total: Int per_page: Int current_page: Int last_page: Int } "A paginated list of products." type ProductListPayload { result: Boolean data: [Product] pagination: ProductPagination } "A single product result with success flag and message." type ProductDetailPayload { result: Boolean data: Product msg: String } "Outcome of a product deletion with success flag and message." type ProductDeletePayload { result: Boolean msg: String } "Per-run counts from a platform product sync." type ProductSyncResult { synced: Int errors: Int total: Int } "Outcome of a platform product sync." type ProductSyncPayload { result: Boolean msg: String data: ProductSyncResult } "A received package eligible for a warehouse transfer." type WarehouseTransferPackage { id: Int! tracking_number: String external_tracking_number: String received_warehouse_id: Int received_at: String received_by: Int order_id: Int order_ref: String fulfillment_center_id: Int customer_id: Int order_channel_id: Int order_batch: String } "Candidate packages for a warehouse transfer." type WarehouseTransferSearchPayload { result: Boolean count: Int packages: [WarehouseTransferPackage] message: String } "Outcome of queuing a warehouse transfer or rollback." type WarehouseTransferActionPayload { result: Boolean queued: Boolean batch_no: Int order_count: Int eligible_package_count: Int message: String } "A warehouse-transfer batch summary." type WarehouseTransferBatchSummary { batch_no: Int! status: Int expected_count: Int processed_count: Int failed_count: Int error_message: String started_at: String completed_at: String created_at: String } "A paginated list of warehouse-transfer batches." type WarehouseTransferListPayload { result: Boolean data: [WarehouseTransferBatchSummary] total: Int page: Int per_page: Int message: String } "A per-package transfer or rollback log entry." type WarehouseTransferLog { id: Int! batch_no: Int business_id: Int package_id: Int order_id: Int from_warehouse_id: Int to_warehouse_id: Int action: String reason: String operated_by: Int created_at: String updated_at: String } "Full detail of one warehouse-transfer batch." type WarehouseTransferBatchDetailPayload { result: Boolean batch_no: Int status: Int expected_count: Int processed_count: Int failed_count: Int error_message: String started_at: String completed_at: String in_progress: Boolean is_rolled_back: Boolean transfers: [WarehouseTransferLog] rollbacks: [WarehouseTransferLog] "Packages the last rollback attempt did not move back; reason is a code (package_missing, stocked_out, not_at_destination, moved_since, source_unknown, error)" skipped: [WarehouseTransferLog] message: String } "A warehouse ranked by distance from a geocoded address." type NearestWarehouse { id: Int code: String name: String descrption: String address: String telephone: String lat: String lng: String distance: String } "Nearest warehouses to an address, ordered by distance." type NearestWarehousePayload { result: Boolean message: Json data: [NearestWarehouse] } "A single event on a tracking timeline." type TrackingEventItem { tracking_event_status_id: Int otep_status: String updated_at: String description: String location_name: String location_city: String location_province: String location_country: String location_postcode: String operation_location: String reason: String time_zone: String gmt_offset: String order_id: Int display_distance_unit: String orders_status_id: Int timestamp: Int updated_at_localized: String source: String } "A proof file (photo/signature) for a tracked order." type TrackingProof { url: String full_url: String type: String "Stable file id for consumer-side dedup and incremental sync." file_id: Int uploaded_at: String "Upload time as a unix timestamp (timezone-unambiguous)." uploaded_timestamp: Int "Expiring signed download link — re-query tracking for a fresh one after expiry." signed_url: String "Unix timestamp when signed_url expires." signed_url_expires_at: Int "Tracking event the proof was captured for. A file with no event recorded is read off the order's timeline (the outcome it was uploaded right before or right after); null only when the order has no such outcome." tracking_event_id: Int "Status code of that event (e.g. 500 delivered, 510 picked up, 501/503 failed delivery)." tracking_event_status_id: Int "Stable key of that event status (deliver_success, pickuped, not_delivered, …)." tracking_event_key: String "Code of the service the proof belongs to: 1 = delivery, 2 = pickup (derived from the event); null without an event." service_type: Int "Code of the outcome the proof documents: 1 = success, 2 = failed (derived from the event status); null without an event or for non-outcome events." service_status: Int } "Third-party carrier tracking info for a label-service order." type TrackingThirdPartyInfo { tracking_number: String status: Json shipping_service: String carrier_tracking_link: String } "Alliance context for cross-client tracking access." type TrackingAllianceInfo { id: Int name: String code: String } "The original carrier (data owner) of alliance tracking data." type TrackingOriginalCarrier { business_id: Int business_name: String } "The tracking timeline for a tracking number." type TrackingPayload { result: Boolean message: String is_third_party_tracking: Boolean postcode: String deliveried: Boolean returntosender: Boolean rejectedbyrecipient: Boolean data: [TrackingEventItem] third_party_info: TrackingThirdPartyInfo proofs: [TrackingProof] sender_address: Json recipient_address: Json is_alliance_data: Boolean alliance: TrackingAllianceInfo original_carrier: TrackingOriginalCarrier } type Reservation { id: Int code: String kind: String status: String source: String guest_name: String party_size: Int starts_at: String ends_at: String local_date: String local_time: String timezone: String quoted_wait_min: Int quoted_wait_max: Int } type ReservationSlot { time: String available: Boolean duration: Int } type ReservationPayload { success: Boolean message: String reason: String date: String timezone: String "Party size reaches the venue threshold: booking becomes a request the venue confirms by hand" large_party: Boolean slots: [ReservationSlot] reservation: Reservation } type HostWaitlistBoard { success: Boolean message: String reason: String "Whether the venue takes walk-ins at all" enabled: Boolean "Clock every time in this payload is rendered in" timezone: String "Fingerprint to poll with when MQTT is unavailable" signature: String grace_period: Int max_delays: Int "{waiting, covers}" counts: Json "Waiting parties in arrival order" queue: Json "Tables with their live state" resources: Json "Parties finished in the last hours" recent: Json "What this venue's tablets show — carried on every board payload so a polling device learns of changes" settings: Json } type HostActionResult { success: Boolean message: String reason: String "The waiting party the action applied to" id: Int code: String status: String status_label: String "The number was already in the queue" duplicate: Boolean resource_id: Int seated_id: Int seated_guest: String "Quoted wait range [min, max] in minutes (join only)" quote: [Int] } type HostBookingBoard { success: Boolean message: String reason: String "Whether the venue takes bookings at all" enabled: Boolean "Venue-local day this board covers" date: String timezone: String "Fingerprint to poll with when MQTT is unavailable" signature: String "{pending, confirmed, checked_in, seated, covers}" counts: Json "The day's bookings and requests, in time order" bookings: Json "Search hits (hostBookingSearch only)" results: Json "The single booking a mutation acted on" booking: Json "A replayed create returned the original booking" duplicate: Boolean "More matches exist than were returned" capped: Boolean "A doubtful move: nothing changed until it is confirmed with a reason" needs_confirmation: Boolean "What the host is being asked to confirm" soft: Json "What this venue's tablets show — carried on every board payload so a polling device learns of changes" settings: Json } type HostTabletSettings { success: Boolean message: String reason: String "show_waitlist / show_bookings, the venue's own capability, and the stored choice" settings: Json "Short-lived unlock (unlock mutation only)" token: String "Who the unlock belongs to" name: String expires_at: String "How long the unlock lasts" minutes: Int } "Freshly generated tracking numbers." type TrackingGeneratePayload { result: Boolean data: [String] message: String } "Identifiers of the package matching a lookup search." type TrackingLookupData { package_id: Int order_id: Int tracking_number: String external_tracking_number: String third_party_tracking_number: String is_alliance_data: Boolean alliance: TrackingAllianceInfo original_carrier: TrackingOriginalCarrier } "Result of a package-identifier lookup." type TrackingLookupPayload { result: Boolean message: String errors: Json data: TrackingLookupData } "An OTEP tracking timeline, optionally projected to a standard format." type OtepTrackingPayload { result: Boolean format: String data: Json message: String } "Outcome of an OTEP inbound ingest call: D9 counts and per-event outcomes." type OtepIngestPayload { result: Boolean message: String counts: Json events: Json errors: Json } "A zone set exported as a GeoJSON or KML file." type ZoneSetExportPayload { result: Boolean message: String filename: String mime: String content_base64: String } "Outcome of a geometry import preview or commit." type GeoImportPayload { result: Boolean message: String preview_id: String expires_in_seconds: Int features: Json refused: Json errors: Json set_id: Int set_name: String zones: Int } "Outcome of an order batch update." type OrderActionPayload { result: Boolean message: Json } "Outcome of cancelling an order." type OrderCancelPayload { result: Boolean id: String message: String "Number-based cancel path only: true when the order was already cancelled (idempotent success)." already_cancelled: Boolean "Number-based cancel path only: candidate order ids when a number matches multiple live orders." matched_order_ids: [Int] "Machine-readable reason when result is false (e.g. THIRD_PARTY_CANCEL_NOT_SUPPORTED, THIRD_PARTY_CANCEL_FAILED)." code: String "Set when a third-party carrier held the order: whether it supports cancellation and whether it accepted." third_party: OrderCancelThirdParty } "Outcome at the third-party carrier holding the order, when there is one." type OrderCancelThirdParty { "The carrier holding the order." provider: String "Whether this carrier can be asked to cancel at all." supports_cancel: Boolean "True when the carrier accepted the cancellation." cancelled: Boolean "Why the carrier cancellation was not made or was refused." message: String } "Outcome of deleting an order." type OrderDeletePayload { id: String message: String } "Outcome of modifying an order." type OrderModifyPayload { result: Boolean id: Int ref: String shipping_price: Json price_details: Json currency: String tracking_number: [String] packages: Json message: Json } "Outcome of a bulk time-window update." type OrderTimeWindowPayload { result: Boolean processed_refs: [String] message: String errors: Json } "Outcome of removing packages from an order." type OrderDeletePackagesPayload { result: Boolean deleted: Json message: Json } "Outcome of a pickup scan." type OrderPickupPayload { result: Boolean id: Json ref: String full_address: String status: Json message: String code: String confirmation_required: Boolean } "A packaging reference (id + name)." type CustomerPackagingRef { id: Int name: String } "A warehouse reference (id + name)." type CustomerWarehouseRef { id: Int name: String } "A purchased product line on a customer order." type CustomerOrderProduct { product_id: Int name: String display_names: Json quantity: Int } "A surcharge line on a customer order." type CustomerOrderSurcharge { id: Int surcharge_id: Int name: String amount: String quantity: Int } "A stored package (dimensions map to String; decimals preserved)." type CustomerStoragePackage { id: Int description: String value: String weight: String weight_unit: Int length: String width: String height: String dimension_unit: Int packaging_id: Int packaging: CustomerPackagingRef quantity: Int received: Boolean } "Detail of one storage order owned by the customer." type CustomerStorageOrderDetail { id: Int status: String can_edit: Boolean can_cancel: Boolean store_from: String store_to: String warehouse: CustomerWarehouseRef warehouse_id: Int need_pickup: Boolean need_delivery: Boolean pickup_address: Json pickup_date: String pickup_start_time: String pickup_end_time: String pickup_channel_id: Int delivery_address: Json delivery_channel_id: Int notes: String form_data: Json items: [CustomerStoragePackage] packages: [CustomerStoragePackage] products: [CustomerOrderProduct] surcharges: [CustomerOrderSurcharge] estimate_price_response: Json total_price: String final_total: String currency: String coupon_code: String promotion_id: Int promotion_discount: Json paid_amount: String created_at: String } "Payload of the customerStorageOrderShow query." type CustomerStorageOrderDetailPayload { result: Boolean message: String data: CustomerStorageOrderDetail } "An item line on a moving order." type CustomerMovingItem { id: Int description: String quantity: Int value: String weight: String weight_unit: Int length: String width: String height: String dimension_unit: Int packaging: CustomerPackagingRef } "The selected moving service package (id + localized name)." type CustomerMovingPackageRef { id: Int display_name: Json pricing_type: String } "A moving service time slot." type CustomerMovingTimeSlot { id: Int label: String start_time: String end_time: String } "Detail of one moving order owned by the customer." type CustomerMovingOrderDetail { id: Int status: String can_edit: Boolean can_cancel: Boolean moving_date: String moving_start_time: String moving_end_time: String origin_address: Json destination_address: Json moving_package: CustomerMovingPackageRef moving_time_slot_id: Int moving_time_slot: CustomerMovingTimeSlot estimated_hours: String items: [CustomerMovingItem] products: [CustomerOrderProduct] surcharges: [CustomerOrderSurcharge] notes: String estimate_price_response: Json price_breakdown: Json coupon_code: String promotion_id: Int promotion_discount: Json final_total: String paid_amount: String total_price: String currency: String created_at: String } "Payload of the customerMovingOrderShow query." type CustomerMovingOrderDetailPayload { result: Boolean message: String data: CustomerMovingOrderDetail } "A package line on a shipping order." type CustomerShippingPackage { id: Int description: String tracking_number: String weight: String weight_unit: Int length: String width: String height: String dimension_unit: Int quantity: Int value: String notes: String packaging: CustomerPackagingRef } "The shipping service a shipping order belongs to." type CustomerShippingServiceRef { id: Int service_code: String name: Json volumetric_factor: String } "A special-requirement line on a shipping order." type CustomerShippingSpecialRequirement { id: Int description: String completed: Boolean } "Detail of one shipping order owned by the customer." type CustomerShippingOrderDetail { id: Int status: Int status_name: String can_edit: Boolean can_cancel: Boolean tracking_number: String reference_number: String shipping_service: CustomerShippingServiceRef origin_type: String warehouse_id: Int pickup_address: Json delivery_address: Json supplies_delivery_address: Json scheduled_date: String time_window: Json package_count: Int total_weight: String total_volume: String packages: [CustomerShippingPackage] products: [CustomerOrderProduct] special_requirements: [CustomerShippingSpecialRequirement] price_breakdown: Json total_price: String promotion_id: Int coupon_code: String promotion_discount: Json notes: String created_at: String } "Payload of the customerShippingOrderShow query." type CustomerShippingOrderDetailPayload { result: Boolean message: String data: CustomerShippingOrderDetail } "A warehouse with a count of shipout-eligible packages." type CustomerShipoutWarehouseSummary { id: Int name: String available_count: Int } "A storage order with its shipout-eligible packages." type CustomerShipoutStorageOrder { id: Int warehouse_id: Int created_at: String packages: [CustomerStoragePackage] } "Warehouses + storage orders eligible for shipout." type CustomerShipoutAvailableItemsData { warehouses: [CustomerShipoutWarehouseSummary] storage_orders: [CustomerShipoutStorageOrder] } "Payload of the customerShipoutAvailableItems query." type CustomerShipoutAvailableItemsPayload { result: Boolean message: String data: CustomerShipoutAvailableItemsData } "The created shipout summary." type CustomerCreateShipoutData { id: Int status: Int is_storage_shipout: Boolean total_price: String price_breakdown: Json has_items_needing_quote: Boolean storage_package_ids: [Int] } "Payload of the customerCreateShipoutOrder mutation." type CustomerCreateShipoutPayload { result: Boolean message: String errors: Json data: CustomerCreateShipoutData } "The wallet payment result for a shipout." type CustomerPayShipoutData { transaction_id: Int amount: String order_status: Int paid_amount: String remaining_balance: String } "Payload of the customerPayShipout mutation." type CustomerPayShipoutPayload { result: Boolean message: String data: CustomerPayShipoutData } "Payload of the customerCancelShipout mutation." type CustomerCancelShipoutPayload { result: Boolean message: String } "The rate selection result for a shipout." type CustomerSelectShipoutRateData { id: Int total_price: String remaining_balance: String can_be_paid: Boolean rate_id: String } "Payload of the customerSelectShipoutRate mutation." type CustomerSelectShipoutRatePayload { result: Boolean message: String data: CustomerSelectShipoutRateData } "A single operation performed on a physical device." type DeviceOperationLog { id: Int "ISO-8601 with offset, in the caller's timezone." occurred_at: String warehouse_id: Int warehouse_name: String "kiosk / smart_locker / smart_drop" device_type: String device_type_label: String device_id: Int device_name: String action: String action_label: String target_type: String target_id: Int target_label: String "Compartment (grids.id) the operation targeted." grid_id: Int "web / api / device / webhook / system" operation_channel: String operation_channel_label: String "Pickup/delivery/return/shipping code presented for the operation." code_used: String "Typed order id; its table is decided by order_type." order_id: Int "delivery / express / return / storage / carrier_package / partner_delivery" order_type: String order_type_label: String "External provider attributed to the operation." provider_id: Int provider_name: String "The external provider's own order/package reference." external_order_id: String "Operation happened on a sandbox mock locker." is_mock: Boolean "user / customer" operator_type: String operator_name: String "success / failed / pending" result: String result_label: String "Translated for the caller." error_message: String source_table: String source_id: Int "Raw per-device payload." detail: Json "The same payload as translated label/value pairs." detail_rows: [DeviceOperationLogDetailRow] } "A translated label/value pair from the event detail payload." type DeviceOperationLogDetailRow { label: String value: String } "Page counters for a device operation log query." type DeviceOperationLogsPagination { current_page: Int per_page: Int total: Int last_page: Int } "Paginated device operation events." type DeviceOperationLogsPayload { success: Boolean data: [DeviceOperationLog] pagination: DeviceOperationLogsPagination } "One handling of one parcel by one device (a device order ledger row). The pickup code hash and lock expiry are never exposed; code_locked says whether the code is locked now." type DeviceOrder { id: Int device_type: String device_id: Int device_name: String warehouse_id: Int section_id: Int grid_id: Int grid_code: String locker_compartment_number: Int kind: String owner_side: String partner_provider_id: Int customer_id: Int source_table: String source_id: Int order_id: Int external_order_id: String reference_number: String group_ref: String status: String next_actor: String is_terminal: Boolean is_overdue: Boolean code_attempts: Int code_locked: Boolean depositor_type: String depositor_id: Int collector_type: String collector_id: Int removal_reason: String failure_code: String due_at: String overdue_at: String reminded_at: String reminder_count: Int reserved_at: String deposit_opened_at: String stored_at: String retrieve_opened_at: String ended_at: String created_at: String updated_at: String } "One line of a device order history." type DeviceOrderEvent { id: Int device_order_id: Int event_type: String from_status: String to_status: String actor_type: String actor_id: Int channel: String smart_locker_log_id: Int device_operation_log_id: Int payload: Json occurred_at: String } "One problem with a device order or a device." type DeviceOrderException { id: Int device_order_id: Int device_type: String device_id: Int grid_id: Int type: String severity: String status: String detected_by: String detail: Json resolution: String resolution_action: String opened_at: String acknowledged_by: Int acknowledged_at: String resolved_by: Int resolved_at: String actionable: Boolean } "Page counters for a device order list." type DeviceOrdersPagination { current_page: Int per_page: Int total: Int last_page: Int } "Paginated device orders, matching the REST body." type DeviceOrdersPayload { success: Boolean message: String data: [DeviceOrder] pagination: DeviceOrdersPagination } "One device order, matching the REST body." type DeviceOrderPayload { success: Boolean message: String data: DeviceOrder } "A device order history, matching the REST body." type DeviceOrderEventsPayload { success: Boolean message: String data: [DeviceOrderEvent] } "A device order exceptions, matching the REST body." type DeviceOrderExceptionsPayload { success: Boolean message: String data: [DeviceOrderException] } "The exception after an acknowledge or resolve, matching the REST body." type DeviceOrderExceptionPayload { success: Boolean message: String data: DeviceOrderException } "Outcome of a pickup code resend, matching the REST body." type DeviceOrderCodeResendPayload { success: Boolean message: String channel: String } "The pickup-code lock of one machine." type DevicePickupCodeLock { device_type: String device_id: Int device_name: String locked: Boolean locked_until: String minutes_remaining: Int failed_count: Int window_started_at: String last_failed_at: String locked_at: String lock_count: Int unlocked_by: Int unlocked_at: String actionable: Boolean } "The machines with a pickup-code lock or recent misses, matching the REST body." type DeviceOrderCodeLocksPayload { success: Boolean message: String data: [DevicePickupCodeLock] } "The machine's lock after an unlock, matching the REST body." type DeviceOrderCodeLockUnlockPayload { success: Boolean message: String data: DevicePickupCodeLock } "The billable quantity this operation consumed." type OpenBilling { "call, job, point, point_1k, element_1k, tile_1k, node, or free." unit: String! "How many units this operation consumed." quantity: Float! "False when the result was already billed and is only being collected." counted: Boolean! "How the quantity was derived, so a charge can be reconciled from the response." breakdown: Json } "A completed computation, or the async job that will produce one." type OpenComputeResult { "sync when the answer is in this response, async when a job was queued." mode: String! "The queued job, when mode is async. Collect it from /v1/jobs/{id}/result." job: Json "The result, when mode is sync. Identical in shape to the REST response body." data: Json warnings: Json meta: Json billing: OpenBilling } "Coordinates and a normalized address for a supplied address." type OpenGeocodeResult { matched: Boolean! "Why nothing matched, when matched is false." reason: String location: Json address: Json confidence: Float "Which link of the per-country chain answered." provider: String billing: OpenBilling } "A structured address for a supplied coordinate." type OpenAddressResult { matched: Boolean! reason: String address: Json provider: String billing: OpenBilling } "A completed plan, or the async job that will produce one." type OpenRoutingResult { "sync when the plan is in this response, async when a job was queued." mode: String! "The queued job, when mode is async." job: Json "The produced routes, when mode is sync." routes: Json "Work that could not be placed, with the caller's own ids and a reason." unassigned: Json summary: Json warnings: Json meta: Json billing: OpenBilling } "The capabilities available to the calling key." type OpenCapabilityReport { key: Json platform: Json "Includes capabilities the client does NOT hold: this is the upgrade surface." capabilities: Json totals: Json } "An asynchronous solve and where it has got to." type OpenJob { id: String! "queued, running, succeeded, failed, cancelled or expired." status: String! capability: String progress: Int stage: String createdAt: String startedAt: String finishedAt: String resultUrl: String "After this the result is gone; collect it before then." resultExpiresAt: String error: Json } type Query { "Turn an address into coordinates through the per-country provider chain." openGeoForward(address1: String, address2: String, city: String, province: String, country: String, postcode: String): OpenGeocodeResult "Turn coordinates into a structured address." openGeoReverse(lat: Float!, lng: Float!, language: String, country: String): OpenAddressResult "Normalize an address and report what would block a delivery." openGeoValidate(address1: String, address2: String, city: String, province: String, country: String!, postcode: String, phone: String): Json "What this key can call, at what price, against which quota." openCapabilities(family: String, includeDisabled: Boolean): OpenCapabilityReport "The state of one asynchronous solve." openJob(id: String!): OpenJob "Road distance, duration and geometry along a fixed sequence of waypoints." openDirections( "Identical in shape to the body of POST /v1/directions." input: Json! ): OpenComputeResult "Project a route's remaining arrival times from the last observed event." openEta( "Identical in shape to the body of POST /v1/eta." input: Json! ): OpenComputeResult "Draw GeoJSON features on the street map and return the image as a base64 PNG." openMapStatic( "Identical in shape to the body of POST /v1/map/static." input: Json! ): OpenComputeResult "Issue a short-lived map token for your own apps. Tiles loaded with it are billed per thousand." openMapToken( "Identical in shape to the body of POST /v1/map/token (optional ttl_seconds)." input: Json ): OpenComputeResult "Price a plan exactly as given: per-leg distance, duration and geometry, with arrival times projected from departure. Never resequences." openPlanRecost( "Identical in shape to the body of POST /v1/plan/recost." input: Json! ): OpenComputeResult "Address suggestions for text being typed." openGeoAutocomplete( "Identical in shape to the body of POST /v1/geo/autocomplete." input: Json! ): OpenComputeResult "The structured address and coordinates of a chosen address suggestion." openGeoPlace( "Identical in shape to the body of POST /v1/geo/place." input: Json! ): OpenComputeResult "Check whether a PDF was issued by Superroute and is unchanged since." openDocumentVerify( "Identical in shape to the body of POST /v1/document/verify." input: Json! ): OpenComputeResult "Draw a barcode or a QR, Data Matrix or PDF417 code as a PNG (base64) or an SVG." openBarcode( "Identical in shape to the body of POST /v1/label/barcode." input: Json! ): OpenComputeResult "The chargeable weight of packages: the greater of actual and volumetric weight, package by package and for the shipment." openWeightChargeable( "Identical in shape to the body of POST /v1/weight/chargeable." input: Json! ): OpenComputeResult "Snap a GPS trace to the roads it was driven on: matched points, the driven line, its length and roads." openTraceMatch( "Identical in shape to the body of POST /v1/trace/match." input: Json! ): OpenComputeResult "The areas reachable from a point (or from which it is reached) within up to four drive times, as GeoJSON." openIsochrone( "Identical in shape to the body of POST /v1/isochrone." input: Json! ): OpenComputeResult "Price one new job in each offered delivery slot against a plan: which slots can take it and what each costs." openSlotsQuote( "Identical in shape to the body of POST /v1/slots/quote." input: Json! ): OpenComputeResult "Place new jobs in a plan at their cheapest positions that keep the plan within its rules, without resequencing anything else." openRoutingInsert( "Identical in shape to the body of POST /v1/routing/insert." input: Json! ): OpenComputeResult "Judge a plan against its stated constraints and name every violation, without the map payload." openPlanValidate( "Identical in shape to the body of POST /v1/plan/validate." input: Json! ): OpenComputeResult "Give one route of a plan a new stop order and price the edited plan with the plan re-costing evaluator." openPlanResequence( "Identical in shape to the body of POST /v1/plan/resequence." input: Json! ): OpenComputeResult "Move stops to a route at a position and price the edited plan, with whether the routes it touched keep their rules." openPlanMove( "Identical in shape to the body of POST /v1/plan/move." input: Json! ): OpenComputeResult "Take stops off their routes into the unassigned pool and price the edited plan." openPlanRemove( "Identical in shape to the body of POST /v1/plan/remove." input: Json! ): OpenComputeResult "Place new jobs in a plan at their cheapest positions, each priced with exact road legs, and price the plan with them." openPlanInsert( "Identical in shape to the body of POST /v1/plan/insert." input: Json! ): OpenComputeResult "Re-order the stops of chosen routes around frozen stops and price the plan, keeping the new order only when it is better." openPlanRefine( "Identical in shape to the body of POST /v1/plan/refine." input: Json! ): OpenComputeResult "Score alternative plans of the same vehicles and jobs and rank them by an objective." openPlanWhatIf( "Identical in shape to the body of POST /v1/plan/what-if." input: Json! ): OpenComputeResult "Geocode many addresses (forward) or points (reverse) in one call, billed per thousand." openGeoBatch( "`forward` (addresses to coordinates) or `reverse` (points to addresses)." direction: String! "Identical in shape to the matching REST batch body: `{addresses: [...]}` forward, `{points: [...], language}` reverse." input: Json! ): Json "Which countries and providers the geocoding capabilities cover." openGeoCoverage: Json "The engine's balance presets and the platform's priority ladder." openRoutingPresets( "Which router-API engine answers: `sroute2` (default), `sroute2t` or `sroute3` (each only when enabled for your account)." engine: String ): Json "Score several alternative plans side by side without committing to any." openRoutingWhatIf( "Identical in shape to the body of POST /v1/routing/what-if." input: Json! ): Json "The caller's recent asynchronous solves, newest first." openJobs(limit: Int = 50): [OpenJob] "The result of a finished asynchronous solve, with the billing that was already counted." openJobResult(id: String!): Json "Every webhook delivery attempt for one job — endpoint, outcome, attempt count and error." openJobDeliveries(id: String!): Json "Liveness and engine reachability." openHealth: Json } type Mutation { "Plan routes across a fleet. Large problems queue a job and return it." openRoutingOptimize( "The routing request, identical in shape to POST /v1/routing/optimize." input: Json! ): OpenRoutingResult "Re-optimize an existing plan, keeping frozen stops in place. Large problems queue a job and return it." openRoutingRefine( "Identical in shape to the body of POST /v1/routing/refine." input: Json! ): OpenComputeResult "Stop an asynchronous solve that has not finished yet." openJobCancel(id: String!): OpenJob "Distances and durations between many origins and destinations." openMatrix( "Identical in shape to the body of POST /v1/matrix." input: Json! ): OpenComputeResult "Choose cartons for a set of items and split the items across them." openPackingSolve( "Identical in shape to the body of POST /v1/packing/solve." input: Json! ): OpenComputeResult "Place cargo in a container, with centre of gravity and unload order." openLoadingSolve( "Identical in shape to the body of POST /v1/loading/solve." input: Json! ): OpenComputeResult "Route your days of deliveries as they are and with each scenario (a new depot, a fleet size, shift hours), and compare." openNetworkSiteScenario( "Identical in shape to the body of POST /v1/network/site-scenario." input: Json! ): OpenComputeResult "Cut weighted points into compact territories that each carry a balanced share of the weight." openTerritoryDesign( "Identical in shape to the body of POST /v1/territory/design." input: Json! ): OpenComputeResult "Group orders into pick batches and give the walk through the bins for each batch." openPickingBatch( "Identical in shape to the body of POST /v1/picking/batch." input: Json! ): OpenComputeResult "Re-drive one webhook delivery by hand." openJobDeliveryReplay(jobId: String!, deliveryId: String!): Json "Verify a callback URL with the challenge handshake so jobs may deliver to it." openWebhookVerify(url: String!, secret: String): Json "Open a distance snapshot for plan edits. Name it as `matrix` in plan calls. Free." openPlanMatrixOpen( "Identical in shape to the body of POST /v1/plan/matrix (optional region and profile)." input: Json ): OpenComputeResult "Close a distance snapshot opened for plan edits. `closed` is false when it was already gone. Free." openPlanMatrixClose( "The snapshot id answered when it was opened." matrix: String! ): OpenComputeResult "Name new points of a distance snapshot (a stop dropped on the map, an address picked to insert): their road legs are measured into it at once. Answers at once, or with `wait_ms` once the legs are held. Free." openPlanMatrixPoints( "The snapshot id answered when it was opened." matrix: String! "Identical in shape to the body of POST /v1/plan/matrix/{matrix}/points: `points` and the optional `wait_ms`." input: Json ): OpenComputeResult }