---
title: "POST /v1/{+parent}/attributes"
method: POST
path: "/v1/{+parent}/attributes"
tags: ["projects"]
---

# POST /v1/{+parent}/attributes

`POST /v1/{+parent}/attributes`

Create a user defined attribute. Certain pre defined attributes are already created by the API hub. These attributes will have type as `SYSTEM_DEFINED` and can be listed via ListAttributes method. Allowed values for the same can be updated via UpdateAttribute method.

## Path parameters

- `parent` string, required

## Query parameters

- `attributeId` string

## Request body

- GoogleCloudApihubV1Attribute — An attribute in the API Hub. An attribute is a name value pair which can be attached to different resources in the API hub based on the scope of the attribute. Attributes can either be pre-defined by the API Hub or created by users.
  - `allowedValues` GoogleCloudApihubV1AllowedValue[] — Optional. The list of allowed values when the attribute value is of type enum. This is required when the data_type of the attribute is ENUM. The maximum number of allowed values of an attribute will be 1000.
    - `id` string — Required. The ID of the allowed value. * If provided, the same will be used. The service will throw an error if the specified id is already used by another allowed value in the same attribute resource. * If not provided, a system generated id derived from the display name will be used. In this case, the service will handle conflict resolution by adding a system generated suffix in case of duplicates. This value should be 4-63 characters, and valid characters are /a-z-/.
    - `displayName` string — Required. The display name of the allowed value.
    - `description` string — Optional. The detailed description of the allowed value.
    - `immutable` boolean — Optional. When set to true, the allowed value cannot be updated or deleted by the user. It can only be true for System defined attributes.
  - `displayName` string — Required. The display name of the attribute.
  - `scope` 'SCOPE_UNSPECIFIED' | 'API' | 'VERSION' | 'SPEC' | 'API_OPERATION' | 'DEPLOYMENT' | 'DEPENDENCY' | 'DEFINITION' | 'EXTERNAL_API' | 'PLUGIN' — Required. The scope of the attribute. It represents the resource in the API Hub to which the attribute can be linked.
  - `cardinality` integer — Optional. The maximum number of values that the attribute can have when associated with an API Hub resource. Cardinality 1 would represent a single-valued attribute. It must not be less than 1 or greater than 20. If not specified, the cardinality would be set to 1 by default and represent a single-valued attribute.
  - `createTime` string, google-datetime — Output only. The time at which the attribute was created.
  - `updateTime` string, google-datetime — Output only. The time at which the attribute was last updated.
  - `definitionType` 'DEFINITION_TYPE_UNSPECIFIED' | 'SYSTEM_DEFINED' | 'USER_DEFINED' — Output only. The definition type of the attribute.
  - `description` string — Optional. The description of the attribute.
  - `mandatory` boolean — Output only. When mandatory is true, the attribute is mandatory for the resource specified in the scope. Only System defined attributes can be mandatory.
  - `name` string — Identifier. The name of the attribute in the API Hub. Format: `projects/{project}/locations/{location}/attributes/{attribute}`
  - `dataType` 'DATA_TYPE_UNSPECIFIED' | 'ENUM' | 'JSON' | 'STRING' | 'URI' — Required. The type of the data of the attribute.

## Response `200`

Successful response

---

[API](https://skmtc.dev/google/apis/apihub.md) · [All operations](https://skmtc.dev/google/apis/apihub/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/google/apihub/revisions/19473c7df886/schema)
