๐Ÿ“– Introduction

Welcome to the aPizza.space API! This API offers an interactive and dynamic environment for developers to explore, test, and learn how to integrate APIs into their front-end applications. Whether you are new to front-end development or honing your skills with a new framework, this API provides a perfect sandbox to practice making HTTP requests. You can consume real-world data, including recipes, ingredients, kitchenware, and more, allowing you to simulate practical use cases like creating, updating, and retrieving data. With endpoints that cover a wide variety of food-related data, including recipe types, regions, countries, and nutrition facts, you can experiment with different data formats and HTTP methods. This API not only provides the opportunity to enhance your understanding of APIs but also enables you to test and troubleshoot requests in a controlled, hands-on environment. Perfect for developers learning how to manage state, handle responses, and build robust applications with real-time data. Whether you're testing a new front-end framework, practicing your HTTP client skills, or building your next project, aPizza.space is your go-to resource for practicing API consumption in an engaging and accessible way. So, go ahead, make requests, build your skills, and get ready to tackle real-world challenges!

๐Ÿš€ Getting Started

APIzza gives you a fun, hands-on way to explore how real APIs work. Whether you're just starting out or trying a new front-end framework, this API sandbox lets you practice making all four major HTTP request types: GET, POST, PUT, and DELETE. ๐Ÿ• GET requests are used to fetch data from the database. Want to get all recipes? Use something like /recipes/. Need one specific item? Add an ID, like /recipes/1. Just keep in mind, not every endpoint supports fetching a single itemโ€”check the documentation for details! POST is for adding new data. You can insert a new row into a table, but only if that table allows itโ€”again, the docs are your guide. PUT lets you update existing records. Youโ€™ll need the ID of the item plus the new data you want to send. Finally, DELETE removes a recordโ€”but not always. Some rows are "private" and canโ€™t be deleted. These were added by me, the admin, and are protected from deletion. So if a delete request doesnโ€™t work, donโ€™t worryโ€”itโ€™s likely one of those. There are also a few constraints in place, especially in the tblRecipes table. If a related foreign key gets deleted or updated, the database is set to do nothingโ€”this helps avoid breaking relationships between tables. Even though the database is pretty simple, if you ever need a special view or functionality, just let me know! Iโ€™m happy to create a stored procedure if it makes sense. At the end of the day, this is your playground. Use the documentation as a guide, experiment with tools like Postman, and most importantlyโ€”start connecting this API to your own frontend projects. Have fun and keep building! ๐Ÿ’ป๐Ÿด

๐Ÿ”— Base URL

The base URL serves as the root endpoint for all API requests. When making requests to APIzza, please ensure you use the following URL:
https://apizza.space or https://www.apizza.space.

๐Ÿ” Authentication

APIzza is an openly accessible API that does not require authentication for data retrieval. As such, the available operations are not limited to data retrieval via GET requests. If you identify any inaccuracies in the data, please contact the administrator via email.

๐Ÿ“‘ JSON Schema

APIzza is designed to help you practice sending and receiving data using all four common HTTP methods: GET, POST, PUT, and DELETE. Each endpoint has its own rules, and depending on the resource, you may be able to retrieve all records, add new entries, update existing ones, or delete them. The examples below demonstrate how you can interact with the API. Each resource includes the available methods, example URLs, and sample JSON bodies where necessary. You can use this guide to test the API with tools like Postman or integrate it with any frontend framework you're learning โ€” such as Angular, React, or Vue โ€” to practice building full-stack features.

๐Ÿ“‹ Recipe Types
{
  "method": "GET",
  "endpoint": "/recipetypes/"
}
๐Ÿณ Kitchenware
{
  "GET": "/kitchenware/",
  "POST": {
    "endpoint": "/kitchenware/",
    "body": {
      "created_at": "2025-04-08T05:55:59+00:00",
      "kitchenware": "Air Fryer",
      "recipeId": 1
    }
  },
  "PUT": {
    "endpoint": "/kitchenware/{id}",
    "body": {
      "created_at": "2025-04-08 07:19:00+00",
      "kitchenware": "two pair of plastic gloves",
      "recipeId": "1"
    }
  },
  "DELETE": "/kitchenware/{id}"
}
๐Ÿฅฆ Nutrifacts
{
  "GET": "/nutrifacts/",
  "POST": {
    "endpoint": "/nutrifacts/",
    "body": {
      "created_at": "2025-04-08T20:32:00+00:00",
      "calories": "513 kcal",
      "fat": "42g",
      "protein": "31g",
      "recipeId": "1"
    }
  },
  "PUT": {
    "endpoint": "/nutrifacts/{id}",
    "body": {
      "created_at": "2025-04-08T20:32:00+00:00",
      "calories": "513 kcal",
      "fat": "42g",
      "protein": "31g",
      "recipeId": "1"
    }
  },
  "DELETE": "/nutrifacts/{id}"
}
๐Ÿ“‹ Directions
{
  "GET": "/directions/",
  "POST": {
    "endpoint": "/directions/",
    "body": {
      "direction": "Cut the wings apart if they aren't separated...",
      "stepNumber": 1,
      "recipeId": 1
    }
  },
  "PUT": {
    "endpoint": "/directions/{id}",
    "body": {
      "direction": "Cut the wings apart if they aren't separated...",
      "stepNumber": 1,
      "recipeId": 1
    }
  },
  "DELETE": "/directions/{id}"
}
๐Ÿ… Ingredients
{
  "GET": "/ingredients/",
  "POST": {
    "endpoint": "/ingredients/",
    "body": {
      "ingredient": "chicken wings",
      "quantity": "2 pounds",
      "recipeId": 1
    }
  },
  "PUT": {
    "endpoint": "/ingredients/{id}",
    "body": {
      "ingredient": "chicken wings",
      "quantity": "2 pounds",
      "recipeId": 1
    }
  },
  "DELETE": "/ingredients/{id}"
}
๐ŸŒ Regions
{
  "GET": "/regions/",
  "POST": {
    "endpoint": "/regions/",
    "body": {
      "region": "far eastern"
    }
  },
  "PUT": {
    "endpoint": "/regions/{id}",
    "body": {
      "region": "new value"
    }
  },
  "DELETE": "/regions/{id}"
}
๐ŸŒŽ Countries
{
  "GET": "/countries/",
  "POST": {
    "endpoint": "/countries/",
    "body": {
      "country": "Canada",
      "region": 4
    }
  },
  "PUT": {
    "endpoint": "/countries/{id}",
    "body": {
      "country": "new country name",
      "region": 3
    }
  },
  "DELETE": "/countries/{id}"
}
๐Ÿ• Recipes
{
  "GET": "/recipes/",
  "GET_ID": "/recipes/{id}",
  "POST": {
    "endpoint": "/recipes/",
    "body": {
      "name": "Garlic Butter Pasta",
      "image": "https://littlesunnykitchen.com/wp-content/uploads/Garlic-Butter-Pasta-1-360x360.jpg",
      "servings": "1",
      "country": "2",
      "region": "3",
      "type": "2"
    }
  },
  "PUT": {
    "endpoint": "/recipes/3",
    "body": {
      "name": "Garlic Butter Pasta",
      "image": "https://littlesunnykitchen.com/wp-content/uploads/Garlic-Butter-Pasta-1-360x360.jpg",
      "servings": "1",
      "country": "2",
      "region": "3",
      "type": "2"
    }
  },
  "DELETE": "/recipes/{id}"
}

๐Ÿ” Searching

Searching lets you explore the contents of each table in the API. You can perform a GET request to fetch all the rows from a tableโ€”just type the desired endpoint and hit the request button! For example, if you want to retrieve all countries, youโ€™d type:

/countries

You can also retrieve a single recipe by providing its ID, like this:

/recipes/1

Just remember: always start your input with a forward slash (/). This format ensures your request is routed correctly. Whether you're exploring countries, ingredients, or recipes, the API is here to help you practice and experiment with real data!

Database Structure

๐Ÿฝ Recipe Types

Learn about different recipe types in the API.

{
  "id": "bigint",
  "type": "varchar"
}

๐Ÿ”ช Kitchenware

List of kitchenware tools available in the API.

{
  "id": "bigint",
  "created_at": "timestamp with time zone",
  "kitchenware": "varchar",
  "recipeId": "bigint"
}

๐Ÿฅฆ Nutrition Facts

Details on nutritional information for each recipe.

{
  "id": "bigint",
  "created_at": "timestamp with time zone",
  "calories": "varchar",
  "fat": "varchar",
  "protein": "varchar",
  "recipeId": "varchar"
}

๐Ÿ“ Directions

Cooking directions for each recipe.

{
  "id": "bigint",
  "direction": "varchar",
  "stepNumber": "bigint",
  "recipeId": "bigint"
}

๐Ÿ… Ingredients

Ingredients list for recipes available in the API.

{
          "id": "bigint",
          "ingredient": "varchar",
          "quantity": "varchar",
          "recipeId": "bigint"
          }

๐Ÿ—บ๏ธ Regions

Different regions available in the API.

{
          "id": "bigint",
          "region": "varchar",
          "private": "boolean"
          }

๐ŸŒ Countries

Information about countries included in the API.

{
            "id": "bigint",
            "country": "varchar",
            "region": "bigint",
            "private": "boolean"
            }

๐Ÿ• Recipes

Explore all the available recipes from the API.

{
            "id": "bigint",
            "name": "varchar",
            "country": "bigint (nullable)",
            "image": "varchar",
            "region": "bigint (nullable)",
            "servings": "bigint",
            "type": "bigint",
            "private": "boolean (nullable)"
            }