# Get Product

Returns a single Product resource by its identifier.
            
## Authentication
            
Requires a valid API key in the X-API-KEY header.
            
## Headers
            
### Accept-Language
            
Indicates the preferred natural language and locale for localized content.
- omitted / null: content in the tenant's default culture.
- culture-code (e.g. en-US, es): content localized in the specified culture.
- * and q-factor weighting are currently not supported.
            
## OData Query Support
            
### $select
            
Comma-separated list of root-resource property names to include in the response.
See /Products/$metadata for the available properties.
Selecting properties of embedded resources is not supported.
            
Example: $select=prod_description,prod_tags
            
### $expand
            
Comma-separated list of embedded collections to include (e.g. Variants).
By default, embedded collections are not included.
Only embedded collections (not embedded resources) are supported.
            
Example: $expand=Variants
            
## Response
            
200 OK — EntityRepresentation with the Product resource.
            
## Error Responses
            
- 400 Bad Request — Invalid OData expression (returns ValidationFailureRepresentation).
- 401 Unauthorized — Missing or invalid API key.
- 404 Not Found — Product with the given identifier does not exist.
- 500 Internal Server Error — Unexpected technical error.
            
## Example
            
Request:
http
GET /Products(456)?$select=prod_description,prod_tags&$expand=Variants HTTP/1.1
X-API-KEY: your-api-key-here
Accept-Language: en-US

            
Response:
http
HTTP/1.1 200 OK
Content-Type: application/json

Endpoint: GET /Products({productIdentifier})
Version: 2.0.0

## Header parameters:

  - `X-API-KEY` (string)
    Tenant's API key (required)

  - `Accept-Language` (string)
    Preferred localization culture (Accept-Language header)

## Path parameters:

  - `productIdentifier` (integer, required)
    Product resource identifier

## Query parameters:

  - `$select` (string)

  - `$expand` (string)

## Response 200 fields (application/json):

  - `@readLink` (string,null)

  - `@editLink` (string,null)

  - `@etag` (string,null)

  - `@navigationLinks` (array,null)

  - `@navigationLinks.uri` (string,null)

  - `@associationLinks` (array,null)

  - `@associationLinks.uri` (string,null)

  - `@context` (string,null)

  - `value` (any,null)

## Response 400 fields (application/json):

  - `validationFailures` (object,null)
    Example: {"Layout":[{"PropertyName":"Layout","ErrorMessage":"The layout must contain exactly the attributes of the stored layout. Missing: tags. Unknown: extra_field.","AttemptedValue":null}]}

## Response 401 fields (application/json):

  - `type` (string,null)

  - `title` (string,null)

  - `status` (integer,null)

  - `detail` (string,null)

  - `instance` (string,null)

## Response 500 fields (application/json):

  - `error` (string,null)

  - `details` (any,null)


