# Get Attribute Set

Returns a single attribute set identified by id. Accepted values:
- **default** (case-insensitive) — retrieves the tenant's default attribute set.
- **Positive integer** — retrieves the attribute set with that numeric ID.

Any other value is rejected with **400 Bad Request**.

The response includes the attribute set name and its form layout configuration for Products and Variants **(ProductLayout, VariantLayout)**. When the set has no Variant layout configured, VariantLayout and VariantAttributeIds are omitted from the response.

See also: A legacy OData-style version of this endpoint is available at GET /AttributeSets({attributeSetIdentifier}).

## Authentication

Requires a valid API key in the **X-API-KEY** header.

## Response

**200 OK** — The requested attribute set with its layout configuration.

## Error Responses

- **400 Bad Request** — id is not default or a valid positive integer.
- **401 Unauthorized** — Missing or invalid tenant identifier.
- **404 Not Found** — No attribute set with the given identifier exists for this tenant.
- **500 Internal Server Error** — Unexpected technical error.

## Example

**Request:**
```
GET /v2/AttributeSets(1) HTTP/1.1
X-API-KEY: your-api-key-here
```

**Response:**
```
HTTP/1.1 200 OK
Content-Type: application/json
```

## Endpoint: GET /v2/AttributeSets({id})
Version: 2.0.0

## Path parameters:

- `id` (string, required)
    Attribute set identifier: default or a positive integer.

## 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)
