// Metadata created by nebel

[id="registry-artifact-metadata_{context}"]
= {registry} artifact metadata

[role="_abstract"]
When an artifact is added to {registry}, a set of metadata properties is created and stored along with the artifact content. This metadata consists of system-generated or user-generated properties that are read-only, and editable properties that you can update after the artifact is created.

.{registry} system-generated metadata
[.table-expandable,width="100%",cols="1,1,2",options="header"]
|===
|Property
|Type
|Description
|`contentId`
|integer
|Unique identifier of artifact content in {registry}. The same content ID can be shared by multiple artifact versions when artifact versions have identical content. For example, a content ID of `4` can be used by multiple artifact versions with the same content. 
|`createdBy`
|string
|The name of the user who created the artifact.
|`createdOn`
|date
|The date and time when the artifact was created, for example, `2023-10-11T14:15:28Z`.
|`globalId`
|integer
|Globally unique identifier of an artifact version in {registry}. For example, a global ID of `1` is assigned to the first artifact version created in {registry}.
|`modifiedBy`
|string
|The name of the user who modified the artifact.
|`modifiedOn`
|date
|The date and time at which the artifact was modified, for example, `2023-10-11T14:15:28Z`.
|`type`
|ArtifactType
|The supported artifact type, for example, `AVRO`, `OPENAPI`, or `PROTOBUF`. 
|===


.{registry} user-provided or system-generated metadata
[.table-expandable,width="100%",cols="1,1,2",options="header"]
|===
|Property
|Type
|Description
|`groupId`
|string
|Unique identifier of an artifact group in {registry}, for example, `development` or `production`. When creating an artifact by using the {registry} web console, if you do not provide a group ID, this is set to `default`. You must provide a group ID when using the Apicurio Registry REST API, Java client, or Maven plug-in. 
|`id`
|string
|Unique identifier of an artifact in {registry}. You can provide an artifact ID or use the UUID generated by {registry}, for example, `8d168cad-1865-4e6c-bb7e-04e8be005bea`. Different versions of an artifact use the same artifact ID, but have different global IDs. 
|`references`
|array of ArtifactReference
|Optional set of artifact references contained in the artifact, which you can provide when creating the artifact. The following simple example shows a single artifact reference: `[{"groupId":"my-group","artifactId":"ItemId","version":"1","name":"com.example.common.ItemId"}]`.
|`version`
|integer
|The latest version of the artifact. You can use the generated version, for example, `3`, or provide a version by using the {registry} REST API or Maven plug-in, for example, `2.1.6`. 
|===


.{registry} editable metadata
[.table-expandable,width="100%",cols="1,1,2",options="header"]
|===
|Property
|Type
|Description
|`description`
|string
|Optional meaningful description of the artifact, for example, `This is a simple OpenAPI for testing`. You can provide a description, or it can be automatically discovered from the `info` section of OpenAPI and AsyncAPI artifacts, if already provided.
|`labels`
|array of string
|Optional comma-separated list of labels used to filter and search for the artifact, for example, `test,protobuf`. Provided by the user. 
|`name`
|string
|Optional human-readable name of the artifact, for example, `My first Avro schema`. You can provide a description, or it can be  automatically discovered from the `info` section of OpenAPI and AsyncAPI artifacts, if the `title` field has a value.
|`properties`
| map
|Optional list of user-defined name-value pairs associated with the artifact. The name and value must be strings, for example, `my-key` and `my-value`.
|`state`
|ArtifactState
|The latest state of the artifact: `ENABLED`, `DISABLED`, or `DEPRECATED`. Defaults to `ENABLED`. 
|===

.Updating artifact metadata
* You can use the {registry} REST API or web console to update the set of editable metadata properties.
* You can update the `state` property only by using the {registry} REST API.

[role="_additional-resources"]
.Additional resources
For more details, see the `/artifacts/\{artifactId\}/meta` endpoint in the {registry-rest-api}.
