# Products & Stock

There are three basic product ranges on the website with those being **Datacenter Proxies**, **Static Residential Proxies** and **Residential Bandwidth**.

However, these three product ranges have a several variations meaning our catalogue has more than three different products and even more prices in order to represent different proxy locations and payment cycles.

{% hint style="info" %}
If stock = -1 then stock is unlimited. This is the case for Residential Bandwidth.
{% endhint %}

### **Product Stock API**

This API is used to display all product information including:

```
Stock
Type
Location
Prices
Pricing Model
Active or Not
Visible or Not
Image
```

#### Products vs Product Groups

As mentioned, their are three product ranges but many different products. To help display the products correctly, all products of the same range are show in product groups, for example, Static Residential Proxies has four different regions with their each product object type as below:

```
ISP_US #ID of prod_OPavByPppOW0U9
ISP_GB #ID of prod_OPavByPppOW0U10
ISP_DE #ID of prod_OPavByPppOW0U11
ISP_FR #ID of prod_OPavByPppOW0U12
```

In order to easily show these are in the same range, the API returns:

<pre><code>"product_groups": [
    {
        "product_group_creation_datetime": "Mon, 10 Jul 2023 00:00:00 GMT",
        "product_group_id": 1,
        "product_group_last_update_datetime": "Mon, 10 Jul 2023 00:00:00 GMT",
        "product_group_name": "ISP",
        "products": [
<strong>            "prod_OPavByPppOW0U9",
</strong><strong>            "prod_OPavByPppOW0U10",
</strong>            "prod_OPavByPppOW0U11",
            "prod_OPavByPppOW0U12"
        ]
    }
]
</code></pre>

#### Product Stock API: With Customer JWT / Without Customer JWT

The Product Stock API route can be accessed with authentication or without, however, if a customer is logged in then always supply the JWT token to the route as **some products have different stock depending on the customer.**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://internal.developer.documentation.private.user.pingproxies.com/checkout-and-payments/products-and-stock.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
