Cloudmunk · Endpoint Services
Solve Technologies · Design Specification

Endpoint Services

REST API & SAP OData integration design specification for exchanging delivery, material master, and inventory data between customer systems and Solve Cloudmunk.

Delivery Material Master Inventory
01· REST-Based Endpoints in Cloudmunk

Introduction

This document provides the design specifications for the REST/OData-based endpoints used to exchange delivery, material master, and inventory information between the customer application and Solve Cloudmunk.

The interfaces covered in this document support the integration of the following business objects:

Business objectCovers
Delivery Header & Item DetailsDelivery document information, ship-to party details, delivery status information, and item-level details such as material, batch, quantities, and picking status.
Material Master DetailsMaterial and plant-specific information, including base unit of measure, pallet quantity, and packaging product group.
Inventory DetailsMaterial stock information by batch, plant, storage location, and storage bin — including unrestricted-use, quality inspection, and blocked stock, plus batch data such as manufacture date and shelf-life expiration date.

Each endpoint specification in this document is organized into three sections:

01
Endpoint URL
→
02
Payload
→
03
Response
Authorization (OAuth 2.0)

Authorization (OAuth 2.0)

All REST API endpoints use OAuth 2.0 for authentication and authorization.

Manage Client Credentials

02

Delivery Header & Item Upload API

Used by the customer application to push Delivery Header and Delivery Item information to Solve Cloudmunk. Requests support both single delivery objects and JSON arrays of multiple delivery documents for bulk processing.

POST https://qa-odata.cloudmunk.com/api/DeliveryUpload TRY IT
Content-Type
application/json
Accept
application/json
Authentication
Basic Auth or OAuth (per landscape)

Sample request payload

Bulk Payload (Multiple Records)
Single Record
[
  {
    "Header": {
      "Plant": "1710",
      "Delivery": "8000012345",
      "ShipPoint": "1710",
      "ShiptoParty": "1000001234",
      "ShiptoPartyName": "ABC Retail",
      "ShiptoPartyCity": "Atlanta",
      "OverallPickStatus": "A",
      "OverallPackStatus": "A",
      "OverallGMStatus": "A"
    },
    "Items": [
      {
        "Plant": "1710",
        "Delivery": "8000012345",
        "Item": "000010",
        "Material": "MAT10001",
        "Description": "Soft Drink 500ml",
        "Batch": "BATCH001",
        "DeliveryQty": 120.000,
        "PickedQty": 120.000,
        "PickStatus": "C",
        "UOM": "EA"
      }
    ]
  },
  {
    "Header": {
      "Plant": "1710",
      "Delivery": "8000012346",
      "ShipPoint": "1710",
      "ShiptoParty": "1000001235",
      "ShiptoPartyName": "XYZ Retail",
      "ShiptoPartyCity": "Boston",
      "OverallPickStatus": "C",
      "OverallPackStatus": "C",
      "OverallGMStatus": "C"
    },
    "Items": [
      {
        "Plant": "1710",
        "Delivery": "8000012346",
        "Item": "000010",
        "Material": "MAT10002",
        "Description": "Orange Juice",
        "Batch": "BATCH002",
        "DeliveryQty": 50.000,
        "PickedQty": 50.000,
        "PickStatus": "C",
        "UOM": "EA"
      }
    ]
  }
]
{
  "Header": {
    "Plant": "1710",
    "Delivery": "8000012345",
    "ShipPoint": "1710",
    "ShiptoParty": "1000001234",
    "ShiptoPartyName": "ABC Retail",
    "ShiptoPartyCity": "Atlanta",
    "OverallPickStatus": "A",
    "OverallPackStatus": "A",
    "OverallGMStatus": "A"
  },
  "Items": [
    {
      "Plant": "1710",
      "Delivery": "8000012345",
      "Item": "000010",
      "Material": "MAT10001",
      "Description": "Soft Drink 500ml",
      "Batch": "BATCH001",
      "DeliveryQty": 120.000,
      "PickedQty": 120.000,
      "PickStatus": "C",
      "UOM": "EA"
    }
  ]
}

Response fields

FieldDescription
DeliveryDelivery document number
StatusOverall processing status
MessageOverall processing message
TotalItemsNumber of items received
SuccessfulItemsNumber of items successfully processed
FailedItemsNumber of items failed
ItemResultsProcessing result for each delivery item
ItemResults[].ItemDelivery item number
ItemResults[].ProcessedOpen, Completed, or Error
ItemResults[].MessageSuccess or error message

Sample response

Bulk Response (Multiple Records)
Single Record Response
[
  {
    "Delivery": "8000012345",
    "Status": "Open",
    "Message": "Delivery uploaded successfully",
    "TotalItems": 1,
    "SuccessfulItems": 1,
    "FailedItems": 0,
    "ItemResults": [
      { "Item": "000010", "Processed": "Open", "Message": "Item uploaded successfully." }
    ]
  },
  {
    "Delivery": "8000012346",
    "Status": "Open",
    "Message": "Delivery uploaded successfully",
    "TotalItems": 1,
    "SuccessfulItems": 1,
    "FailedItems": 0,
    "ItemResults": [
      { "Item": "000010", "Processed": "Open", "Message": "Item uploaded successfully." }
    ]
  }
]
{
  "Delivery": "8000012345",
  "Status": "Open",
  "Message": "Delivery uploaded successfully",
  "TotalItems": 1,
  "SuccessfulItems": 1,
  "FailedItems": 0,
  "ItemResults": [
    { "Item": "000010", "Processed": "Open", "Message": "Item uploaded successfully." }
  ]
}

03

Material Master Upload API

Submits material master-related information required by Solve Cloudmunk — the material number, plant, base unit of measure, logistics execution quantity per pallet, and packaging product group. Requests support both single material objects and JSON arrays of multiple materials for bulk processing.

POST https://qa-odata.cloudmunk.com/api/MaterialMasterUpload TRY IT
Content-Type
application/json
Accept
application/json
Authentication
Basic Auth or OAuth (per landscape)

Sample request payload

Bulk Payload (Multiple Records)
Single Record
[
  {
    "Plant": "1710",
    "Date": "2026-09-05",
    "Time": "14:30:25",
    "Material": "2410",
    "Description": "Test Material Batch0001",
    "PalletQty": 48,
    "BaseUOM": "PC",
    "PackagingTypeCategory": "PMG1"
  },
  {
    "Plant": "1710",
    "Date": "2026-09-05",
    "Time": "12:30:25",
    "Material": "2411",
    "Description": "Test Material Batch0002",
    "PalletQty": 36,
    "BaseUOM": "PC",
    "PackagingTypeCategory": "PMG1"
  }
]
{
  "Plant": "1710",
  "Date": "2026-07-21",
  "Time": "14:30:25",
  "Material": "MAT10001",
  "Description": "Soft Drink 500ml",
  "PalletQty": 48,
  "CaseQty": 24,
  "BaseUOM": "EA",
  "PackagingTypeCategory": "P001"
}

Response

Bulk Response (Multiple Records)
Single Record Success
Error
[
  {
    "Material": "2410",
    "Plant": "1710",
    "Status": "Completed",
    "Message": "Material Master record sent successfully."
  },
  {
    "Material": "2411",
    "Plant": "1710",
    "Status": "Completed",
    "Message": "Material Master record sent successfully."
  }
]
{
  "Material": "MAT10001",
  "Plant": "1710",
  "Status": "Completed",
  "Message": "Material Master record sent successfully."
}
{
  "Material": "MAT10001",
  "Plant": "1710",
  "Status": "Error",
  "Message": "Material Master record could not be processed",
  "ErrorMessage": "The Plant field is required."
}

04

Inventory Details API

Submits inventory stock information for a material at a specific plant and storage location — batch-specific stock quantities, storage-bin information, and stock split across unrestricted-use, quality inspection, and blocked categories. Requests support both single inventory objects and JSON arrays of multiple inventory records for bulk batch uploads.

POST https://qa-odata.cloudmunk.com/api/InventoryUpload TRY IT
Content-Type
application/json
Accept
application/json
Authentication
Basic Auth or OAuth (per landscape)

Sample request payload

Bulk Payload (Multiple Records)
Single Record
[
  {
    "Material": "MAT10001",
    "Batch": "BATCH001",
    "Plant": "1710",
    "StorageLocation": "171A",
    "StorageBin": "BIN-A-001",
    "Unrestricted": 1250.000,
    "QualInspection": 50.000,
    "Blocked": 10.000,
    "ManufactureDate": "2026-07-01",
    "SLED": "2027-07-01"
  },
  {
    "Material": "MAT10002",
    "Batch": "BATCH002",
    "Plant": "1710",
    "StorageLocation": "171B",
    "StorageBin": "BIN-B-001",
    "Unrestricted": 500.000,
    "QualInspection": 0.000,
    "Blocked": 0.000,
    "ManufactureDate": "2026-07-05",
    "SLED": "2027-07-05"
  }
]
{
  "Material": "MAT10001",
  "Batch": "BATCH001",
  "Plant": "1710",
  "StorageLocation": "171A",
  "StorageBin": "BIN-A-001",
  "Unrestricted": 1250.000,
  "QualInspection": 50.000,
  "Blocked": 10.000,
  "ManufactureDate": "2026-07-01",
  "SLED": "2027-07-01"
}

Response

Bulk Response
Single Record Success
Error
[
  {
    "Material": "MAT10001",
    "Batch": "BATCH001",
    "Plant": "1710",
    "StorageLocation": "171A",
    "Status": "Completed",
    "Message": "Inventory record processed successfully."
  },
  {
    "Material": "MAT10002",
    "Batch": "BATCH002",
    "Plant": "1710",
    "StorageLocation": "171B",
    "Status": "Completed",
    "Message": "Inventory record processed successfully."
  }
]
{
  "Material": "MAT10001",
  "Batch": "BATCH001",
  "Plant": "1710",
  "StorageLocation": "171A",
  "Status": "Completed",
  "Message": "Inventory record processed successfully."
}
{
  "Material": "MAT10001",
  "Batch": "BATCH001",
  "Plant": "1710",
  "StorageLocation": "171A",
  "Status": "Error",
  "Message": "Inventory record could not be processed.",
  "ErrorMessage": "Invalid storage location or material."
}

05

Integration & Data Mapping

Data obtained from the customer system is extracted, transformed, and mapped to the request payload structure required by the corresponding Cloudmunk endpoint before transmission to Solve.

Delivery data → Delivery Upload API  ·  Material & Batch data → Material Master Upload API  ·  Stock data → Inventory Upload API

Delivery Details Mapping

Provides the delivery information required to populate both the Delivery Header and Delivery Item sections of the Delivery Upload API.

Header mapping

Payload fieldDescription
PlantPlant number
DeliveryDelivery number
ShipPointShipping point
ShiptoPartyShip-to party number
ShiptoPartyNameShip-to party name
ShiptoPartyCityShip-to party city
OverallPickStatusOverall picking status
OverallPackStatusOverall packing status
OverallGMStatusOverall goods movement status

Item mapping

Payload fieldDescription
PlantPlant number
DeliveryDelivery number
ItemDelivery item number
MaterialMaterial number
DescriptionMaterial description
BatchBatch number
DeliveryQtyDelivery quantity
UOMBase unit of measure
Product Master Mapping

Provides the product unit-of-measure and packaging information required to populate the Material Master Upload API.

Payload fieldDescription
MaterialMaterial number
DescriptionMaterial description
PalletQtyQuantity per pallet
CaseQtyQuantity per case
PackagingTypeCategoryPackaging product group
BaseUOMBase unit of measure
Batch Master Mapping

Provides batch dates required for inventory tracking and shelf-life management. Combined with stock information and mapped to the Inventory Upload API.

Payload fieldDescription
MaterialMaterial number
BatchBatch number
ManufactureDateDate of manufacture
SLEDShelf-life expiration date
Material Stock Mapping

Provides stock quantities by material, batch, plant, storage location, and inventory stock category.

Payload fieldDescription
MaterialMaterial number
DescriptionMaterial description
BatchBatch number
PlantPlant number
StorageLocationStorage location
UnrestrictedUnrestricted-use stock
QualInspectionQuality inspection stock
BlockedBlocked stock
Inventory Stock Mapping

The Inventory Upload API combines material, batch, description, and stock information into a single request payload structure.

Inventory payload fieldDescription
MaterialMaterial number
DescriptionMaterial description
BatchBatch number
PlantPlant number
StorageLocationStorage location
UnrestrictedUnrestricted-use stock
QualInspectionQuality inspection stock
BlockedBlocked stock
ManufactureDateDate of manufacture
SLEDShelf-life expiration date

07· Appendix

HTTP Status Codes

Standard response codes returned by the Cloudmunk endpoint APIs.

200 OKDelivery uploaded successfully.
201 CreatedDelivery created successfully (if applicable).
400 Bad RequestInvalid payload or mandatory fields missing.
401 UnauthorizedAuthentication failed.
403 ForbiddenUser is not authorized to access the service.
404 Not FoundOData service or endpoint not found.
409 ConflictDelivery already exists or duplicate request detected.
500 Internal Server ErrorUnexpected application or SAP backend error.