# Mixed-carton pallet planning, dated-lot allocation and indexed-raster encoding

## Mixed Carton Pallet Layer Plan

Arrange mixed cartons into a single pallet layer with a clear, repeatable shelf plan. Supply sourceRevision, palletLengthMm, palletWidthMm, maxLoadGrams and up to 64 cartons with unique id, lengthMm, widthMm, massGrams and allowRotate. Dimensions are positive whole millimetres no greater than 1,000,000; load and masses are positive safe whole grams. All identities are opaque, case-sensitive ASCII labels of 1 to 48 letters, digits, underscores, periods, colons, pipes or hyphens. Cartons are considered in supplied order. Each first tries its unrotated orientation, then a permitted 90-degree rotation, at the current shelf end. Shelf depth grows to the maximum carton width only when it remains within the pallet. If neither orientation fits that shelf, the same orientation order is tried at x zero on a new shelf immediately after the current depth. Earlier shelves are never revisited. An overweight carton is rejected first; otherwise oversized means neither permitted orientation fits the empty pallet, and no-space means the remaining shelf space cannot fit it. Rejection changes no placement, shelf or load state, so later cartons may still fit. placements and shelves report zero-based indexes and millimetre coordinates; cartonPlans retains input order with status, reason and a nullable placementIndex. Totals report used and remaining grams and square millimetres. Exact integer weight checks occur before addition, and accepted mass never exceeds the declared safe-integer load. Empty cartons returns empty plans and zero usage. Invalid fields, dimensions, masses and duplicate identities reject during preflight before quoting. Shared limits are 36,000 input bytes, 6,000 nodes, depth 24 and 500,000 output bytes. This deterministic supplied-record plan makes no packing optimum, stacking, stability, transport or equipment suitability claim. It does not reserve stock, load a pallet, operate equipment or validate other handling constraints. Use authorized, non-sensitive data. The report describes supplied records and does not change external systems.

[Request example](mixed-carton-pallet-layer-plan.request.example.json) · [Input schema](mixed-carton-pallet-layer-plan.input.schema.json) · [Result schema](mixed-carton-pallet-layer-plan.result.schema.json)

## Dated Lot Demand Allocation Plan

Match dated lot quantities to demand with a clear earliest-expiry allocation plan. Supply sourceRevision, commonUnit, up to 64 lots with unique id, itemId, availableMinute, expiryMinute and availableUnits, and up to 64 demands with unique id, itemId, requiredMinute and requiredUnits. All identities are opaque, case-sensitive ASCII labels of 1 to 48 letters, digits, underscores, periods, colons, pipes or hyphens. Lot and demand identity namespaces are separate; delimiter characters have no composite-key meaning. Quantities are positive safe whole integers in the one supplied common unit. Minutes are nonnegative safe whole integers on one common timeline, with each expiry strictly after availability. Demands run by earliest requiredMinute then original demand order. A lot is eligible only for the exact same itemId when availableMinute is at or before requiredMinute and requiredMinute is strictly before expiryMinute. Eligible lots run by earliest expiry, then earliest availability, then original lot order. Allocation may split across lots, never reuses a unit and never substitutes an item. A demand exactly at expiry cannot use that lot; a demand exactly at availability may use it. Future or expired remaining stock stays visible in balances. demandPlans and lotBalances retain their respective input order. allocations records chronological policy order and each used lot in its policy order. Quantity fields and aggregate totals are exact canonical decimal strings computed with integer arithmetic, including sums beyond the safe-number range. Per-demand status is fulfilled, partial or unfilled; aggregate totals reconcile supplied availability, required units, allocated units, shortage and remaining units. Empty lists are valid. Invalid identities, quantities, times, duplicate identities and non-increasing expiry reject during preflight before quoting. Shared limits are 36,000 input bytes, 6,000 nodes, depth 24 and 500,000 output bytes. This supplied-record policy does not read or change external inventory, reserve stock, purchase goods, guarantee physical availability or provide a global allocation optimum. Use authorized, non-sensitive data. The report describes supplied records and does not change external systems.

[Request example](dated-lot-demand-allocation-plan.request.example.json) · [Input schema](dated-lot-demand-allocation-plan.input.schema.json) · [Result schema](dated-lot-demand-allocation-plan.result.schema.json)

## BMP RLE8 Raster Encoder

Encode numeric palette-index rows as a deterministic BMP RLE8 stream in lowercase hexadecimal. Width and height are integers 1–128, with at most 2048 pixels and exactly height rows of exactly width integer indices 0–255. Rows retain their supplied storage order. In each row, maximal identical runs of at least three use encoded packets of at most 255 pixels. Other spans stop before the next such run or row end: spans of at least three use absolute packets with zero padding to an even byte count, while one or two remaining pixels use encoded singletons, combining an identical pair into a count-two packet. Every row ends with EOL 00 00 and the stream ends with EOB 00 01. Return hex, byte length, dimensions, pixel counts, data/control packet counts and typed metadata. No delta packets, BMP header, palette, orientation conversion, filesystem access or downloadable file. Use authorized, non-sensitive data. The report describes supplied records and does not change external systems.

[Request example](bmp-rle8-raster-encoder.request.example.json) · [Input schema](bmp-rle8-raster-encoder.input.schema.json) · [Result schema](bmp-rle8-raster-encoder.result.schema.json)

## ILBM Bitplane Index Encoder

Encode numeric palette indices as an uncompressed ILBM BODY byte sequence in lowercase hexadecimal. Width and height are integers 1–128, planes is integer 1–8, with at most 2048 pixels and exactly height rows of exactly width indices in 0 through 2^planes minus one. Plane zero carries the least significant index bit; bit seven is leftmost in each byte. Each plane row is ceil(width/16) times two bytes with all unused bits and bytes zero. Plane rows are interleaved by supplied row, then ascending plane. Return BODY hex, byte length, bytes per plane row, dimensions, planes, pixel count and typed metadata. No FORM, BMHD, palette, compression, mask plane, HAM, EHB, orientation conversion, filesystem access or downloadable file. Use authorized, non-sensitive data. The report describes supplied records and does not change external systems.

[Request example](ilbm-bitplane-index-encoder.request.example.json) · [Input schema](ilbm-bitplane-index-encoder.input.schema.json) · [Result schema](ilbm-bitplane-index-encoder.result.schema.json)

One-time job. See the exact service price before checkout. Save your private JSON result within its 30-day access period.
Requests accept at most 36,000 UTF-8 input bytes. Send only authorized, non-sensitive records.

For a known hosted offer, read current checkout and wallet availability with `GET https://gatewayinformationgroup.com/api/catalog/v1/search?id=PRODUCT_ID`. Then use the input schema and request example above.

Use the existing [agent checkout guide](https://gatewayinformationgroup.com/developers) to prepare a quote, pay and retrieve the private result.
