Howincloud — Intern Assessment API

Items CRUD. One isolated dataset per intern. Use yours, do not touch the others.

Your API URL

Shamil
https://test.howincloud.com/shamil/api
Shibili
https://test.howincloud.com/shibili/api
Milan
https://test.howincloud.com/milan/api

Endpoints

MethodPathReturns
GET/items200 — array of all items
GET/items/:id200 — one item, or 404
POST/items201 — new item with id, or 400
PUT/items/:id200 — updated item, or 404 / 400
DELETE/items/:id204 — no content, or 404

Base URL is https://test.howincloud.com/<your-name>/api. So your full list endpoint is for example https://test.howincloud.com/shamil/api/items.

Item shape

{
  "id": 1,
  "name": "Chicken Biriyani",
  "price": 220,
  "image": "https://images.unsplash.com/photo-...",
  "description": "Aromatic basmati rice ..."
}

On POST and PUT, send name, price, image and optionally description. The server assigns the id. image is a URL string — no file uploads.

Sample calls

List all items

fetch('https://test.howincloud.com/shamil/api/items')
  .then(r => r.json())
  .then(items => console.log(items));

Create an item

fetch('https://test.howincloud.com/shamil/api/items', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'Paneer Tikka',
    price: 220,
    image: 'https://example.com/paneer.jpg',
    description: 'Smoky grilled paneer cubes'
  })
}).then(r => r.json()).then(console.log);

Update an item

fetch('https://test.howincloud.com/shamil/api/items/3', {
  method: 'PUT',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'Margherita Pizza',
    price: 280,
    image: 'https://example.com/pizza.jpg',
    description: 'Updated price'
  })
}).then(r => r.json()).then(console.log);

Delete an item

fetch('https://test.howincloud.com/shamil/api/items/3', { method: 'DELETE' })
  .then(r => console.log(r.status)); // 204 on success

Status codes

200OK — data returned
201Created — new item saved (POST)
204No Content — deleted (DELETE)
400Bad Request — missing or invalid fields
404Not Found — bad URL or id doesn't exist
500Server error — tell your lead if you see this

Rules

Filtering, searching, sorting and any other list operations must be done client-side in React. The API only does CRUD. All filtering happens in the browser using .filter() / .map(), never by re-fetching.

Each intern has an isolated dataset. Calls to /shamil/api/... do not affect /shibili/api/... or /milan/api/.... The data persists across server restarts.