Skip to main content

Quickstart Guide

Get up and running with the Olympus Cloud REST API in under 10 minutes.

Overview

StepActionTime
1Register or log in2 min
2Browse a restaurant's menu1 min
3Create your first order2 min
4Check order status1 min

Prerequisites

  • A terminal with curl and jq installed
  • Access to the dev environment (dev.api.olympuscloud.ai)

API Base URLs

EnvironmentURL
Developmenthttps://dev.api.olympuscloud.ai/v1
Staginghttps://staging.api.olympuscloud.ai/v1
Productionhttps://api.olympuscloud.ai/v1

All examples below use the dev environment.


Step 1: Authenticate

Olympus Cloud uses JWT authentication. Log in with email/password to get an access token.

Option A: Register a New Account

curl -s -X POST https://dev.api.olympuscloud.ai/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"tenant_slug": "demo-restaurant",
"email": "newuser@example.com",
"password": "SecurePassword123!",
"first_name": "Jane",
"last_name": "Smith"
}' | jq .

Response:

{
"user_id": "550e8400-e29b-41d4-a716-...",
"tenant_id": "550e8400-e29b-41d4-a716-446655449100",
"email": "newuser@example.com",
"email_verification_required": true
}

Option B: Log In with Demo Credentials

Use the pre-seeded demo manager account:

TOKEN=$(curl -s -X POST https://dev.api.olympuscloud.ai/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "manager@demo-restaurant.com",
"password": "DevPassword123!"
}' | jq -r '.status.access_token')

echo "Token: ${TOKEN:0:20}..."

The login response includes a tagged union. On success, the status.type is "success" and includes:

  • access_token — JWT for API requests (1-hour lifetime)
  • refresh_token — For extending your session
  • user — Your user profile with id, tenant_id, email, and roles

Option C: Staff PIN Login (POS Terminals)

For restaurant POS devices, use PIN-based quick login:

TOKEN=$(curl -s -X POST https://dev.api.olympuscloud.ai/v1/auth/login/pin \
-H "Content-Type: application/json" \
-d '{
"identifier": "mgr01",
"pin": "123456",
"tenant_slug": "demo-restaurant"
}' | jq -r '.status.access_token')

Step 2: Browse the Menu

Restaurant menus are publicly accessible — no authentication required:

# Get the full menu for the Demo Restaurant Tampa location
curl -s https://dev.api.olympuscloud.ai/v1/restaurants/550e8400-e29b-41d4-a716-446655449110/menu | jq .

You can also browse specific parts:

# Menu categories
curl -s https://dev.api.olympuscloud.ai/v1/restaurants/550e8400-e29b-41d4-a716-446655449110/menu/categories | jq .

# All menu items
curl -s https://dev.api.olympuscloud.ai/v1/restaurants/550e8400-e29b-41d4-a716-446655449110/menu/items | jq .

Step 3: Create an Order

Orders require authentication. Use the $TOKEN from Step 1:

curl -s -X POST https://dev.api.olympuscloud.ai/v1/commerce/orders \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_id": "550e8400-e29b-41d4-a716-446655449110",
"source": "pos",
"currency": "USD",
"items": [
{
"menu_item_id": "ITEM_UUID_FROM_MENU",
"name": "Margherita Pizza",
"quantity": 2,
"unit_price": 14.99,
"notes": "No onions"
}
]
}' | jq .

Replace ITEM_UUID_FROM_MENU with a real menu item ID from Step 2. The name and unit_price fields are required for each item.


Step 4: Check Order Status

curl -s https://dev.api.olympuscloud.ai/v1/commerce/orders/ORDER_UUID \
-H "Authorization: Bearer $TOKEN" | jq .

Demo Accounts

These accounts are pre-seeded in the dev environment:

RoleEmailPasswordPIN
Managermanager@demo-restaurant.comDevPassword123!123456
Chefchef@demo-restaurant.comDevPassword123!234567
Serverstaff@demo-restaurant.comDevPassword123!345678
Bartenderbartender@demo-restaurant.comDevPassword123!456789
Hosthost@demo-restaurant.comDevPassword123!567890
Cashiercashier@demo-restaurant.comDevPassword123!678901

What's Next?

GuideDescription
AuthenticationJWT auth flow, refresh tokens, SSO
First RequestRequest/response format, pagination, errors
REST API ExamplesFull examples in curl, Python, JS, and Go
API ReferenceComplete endpoint documentation