Get and Update Orders
The Ordering API enables order retrieval, status updates operations.
Note: All requests require an
X-API-Key
header with your API key.
1. Get Orders
Service Call: OrderService.GetOrders
Retrieve paginated orders with optional status filtering and date range.
Examples
- Java
- Python
- .NET
- PHP
import com.google.protobuf.Timestamp;
import com.kodypay.grpc.ordering.v1.GetOrdersRequest;
import com.kodypay.grpc.ordering.v1.OrderServiceGrpc;
import com.kodypay.grpc.ordering.v1.OrderStatus;
import io.grpc.ManagedChannelBuilder;
import io.grpc.Metadata;
import java.time.Instant;
import java.util.List;
public class GetOrdersExample {
public static void main(String[] args) {
Metadata metadata = new Metadata();
metadata.put(Metadata.Key.of("X-API-Key", Metadata.ASCII_STRING_MARSHALLER), API_KEY);
var channel = ManagedChannelBuilder.forAddress("grpc-staging.kodypay.com", 443)
.useTransportSecurity().build();
var client = OrderServiceGrpc.newBlockingStub(channel)
.withInterceptors(newAttachHeadersInterceptor(metadata));
GetOrdersRequest request = GetOrdersRequest.newBuilder()
.setStoreId("STORE_123")
.addAllStatusIn(List.of(OrderStatus.COMPLETED))
.setAfterDate(Timestamp.newBuilder().setSeconds(Instant.now().minus(7, DAYS).getEpochSecond()))
.setPageSize(50)
.build();
var response = client.getOrders(request);
response.getOrdersList().forEach(order -> {
System.out.println("Order ID: " + order.getOrderId());
System.out.println("Total: " + order.getTotalAmount());
});
}
}
import grpc
from datetime import datetime, timedelta
import kody_clientsdk_python.ordering.v1.order_pb2 as kody_model
import kody_clientsdk_python.ordering.v1.order_pb2_grpc as kody_client
def get_orders():
# TODO: Replace this with the testing or live environment
address = "grpc-staging.kodypay.com"
# TODO: Replace this with your Store ID
store_id = "STORE_ID"
# TODO: Replace this with your API key
api_key = "API_KEY"
with grpc.secure_channel(target=address, credentials=grpc.ssl_channel_credentials()) as channel:
client = kody_client.OrderServiceStub(channel)
after_time = kody_model.google_dot_protobuf_dot_timestamp__pb2.Timestamp()
after_time.FromDatetime(datetime.utcnow() - timedelta(days=100))
request = kody_model.GetOrdersRequest(
store_id=store_id,
status_in=[kody_model.OrderStatus.COMPLETED],
after_date=after_time,
page_size=50
)
response = client.GetOrders(request, metadata=[("x-api-key", api_key)])
for order in response.orders:
print(f"Order {order.order_id} - {order.total_amount}")
if __name__ == "__main__":
get_orders()
var channel = GrpcChannel.ForAddress("https://grpc-staging.kodypay.com");
var client = new OrderService.OrderServiceClient(channel);
var request = new GetOrdersRequest {
StoreId = "STORE_123",
StatusIn = { OrderStatus.Completed },
AfterDate = Timestamp.FromDateTime(DateTime.UtcNow.AddDays(-7)),
PageSize = 50
};
var response = await client.GetOrdersAsync(request, new Metadata {
{ "X-API-Key", "API_KEY" }
});
foreach (var order in response.Orders) {
Console.WriteLine($"Order {order.OrderId} - {order.TotalAmount}");
}
use Com\Kodypay\Grpc\Ordering\V1\OrderServiceClient;
use Grpc\ChannelCredentials;
use Ramsey\Uuid\Uuid;
$api_key = ''; // Put your API key
$client = new OrderServiceClient('grpc-staging.kodypay.com:443', ['credentials' => ChannelCredentials::createSsl()]);
$metadata = ['X-API-Key' => [$api_key]];
$request = new \Com\Kodypay\Grpc\Ordering\V1\GetOrdersRequest();
$request->setStoreId('STORE_123');
$request->setStatusIn([\Com\Kodypay\Grpc\Ordering\V1\OrderStatus::COMPLETED]);
$request->setAfterDate((new \Google\Protobuf\Timestamp())->setSeconds(time() - 604800));
$request->setPageSize(50);
list($response, $status) = $client->GetOrders($request, $metadata)->wait();
foreach ($response->getOrders() as $order) {
echo "Order " . $order->getOrderId() . " - " . $order->getTotalAmount() . PHP_EOL;
}
2. Update Order Status
Service Call: OrderService.UpdateOrderStatus
Change order workflow status (e.g., from PENDING to COMPLETED).
Examples
- Java
- Python
- .NET
- PHP
UpdateOrderStatusRequest request = UpdateOrderStatusRequest.newBuilder()
.setStoreId("STORE_123")
.setOrderId("ORDER_456")
.setNewStatus(OrderStatus.COMPLETED)
.setIdempotencyUuid(UUID.randomUUID().toString())
.build();
var response = client.updateOrderStatus(request);
request = client.UpdateOrderStatusRequest(
store_id="STORE_123",
order_id="ORDER_456",
new_status=order_pb2.OrderStatus.COMPLETED,
idempotency_uuid=str(uuid.uuid4())
)
response = client.UpdateOrderStatus(request, metadata=metadata)
var request = new UpdateOrderStatusRequest {
StoreId = "STORE_123",
OrderId = "ORDER_456",
NewStatus = OrderStatus.Completed,
IdempotencyUuid = Guid.NewGuid().ToString()
};
var response = await client.UpdateOrderStatusAsync(request);
$request = new \Com\Kodypay\Grpc\Ordering\V1\UpdateOrderStatusRequest();
$request->setStoreId('STORE_123');
$request->setOrderId('ORDER_456');
$request->setNewStatus(\Com\Kodypay\Grpc\Ordering\V1\OrderStatus::COMPLETED);
$request->setIdempotencyUuid(uuid_create(UUID_TYPE_RANDOM));
$response = $client->UpdateOrderStatus($request, $metadata);