# Registries

Manage container registries for storage of docker images and OCI compliant artifacts. This operation is restricted to contract owner, admin, and users with 'accessAndManageRegistries' and Share/Edit access permissions for the data center hosting the registry.

This tag groups all operations for registries.

## List all container registries

> List all managed container registries for your account

```json
{"openapi":"3.0.3","info":{"title":"Container Registry service","version":"1.2.2"},"tags":[{"name":"Registries","description":"Manage container registries for storage of docker images and OCI compliant artifacts. This operation is restricted to contract owner, admin, and users with 'accessAndManageRegistries' and Share/Edit access permissions for the data center hosting the registry.\n\nThis tag groups all operations for registries.\n"}],"servers":[{"url":"https://api.ionos.com/containerregistries","description":"Production"}],"security":[{"basicAuth":[]},{"tokenAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic","description":"You will need to base64 encode the string containing your credentials. Separate your username and password with a colon, i.e., username:password and send it as 'Authorization' request header. More details: https://en.wikipedia.org/wiki/Basic_access_authentication"},"tokenAuth":{"type":"apiKey","name":"Authorization","in":"header","description":"Please provide header value as 'Bearer' and don't forget to add 'Bearer' HTTP Authorization Scheme before the token        "}},"schemas":{"RegistriesResponse":{"required":["pagination","_links"],"type":"object","properties":{"_links":{"$ref":"#/components/schemas/PaginationLinks"},"href":{"type":"string"},"id":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/RegistryResponse"},"nullable":true},"pagination":{"$ref":"#/components/schemas/RegistryPagination"},"type":{"type":"string"}}},"PaginationLinks":{"required":["next","self","previous"],"type":"object","properties":{"next":{"type":"string"},"previous":{"type":"string"},"self":{"type":"string"}}},"RegistryResponse":{"required":["metadata","properties"],"type":"object","properties":{"href":{"type":"string"},"id":{"type":"string","format":"uuid"},"metadata":{"$ref":"#/components/schemas/ApiResourceMetadata"},"properties":{"$ref":"#/components/schemas/RegistryProperties"},"type":{"type":"string"}}},"ApiResourceMetadata":{"title":"Metadata","required":["createdBy","createdByUserId","createdDate","state"],"type":"object","properties":{"createdBy":{"type":"string"},"createdByUserId":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"lastModifiedBy":{"type":"string"},"lastModifiedByUserId":{"type":"string"},"lastModifiedDate":{"type":"string","format":"date-time","nullable":true},"state":{"type":"string"}},"nullable":true},"RegistryProperties":{"required":["name","location"],"type":"object","properties":{"garbageCollectionSchedule":{"$ref":"#/components/schemas/WeeklySchedule"},"hostname":{"type":"string"},"location":{"type":"string"},"name":{"pattern":"^[a-z][-a-z0-9]{1,61}[a-z0-9]$","type":"string"},"storageUsage":{"$ref":"#/components/schemas/StorageUsage"},"features":{"$ref":"#/components/schemas/RegistryFeatures"},"apiSubnetAllowList":{"$ref":"#/components/schemas/APISubnetAllowList"}},"nullable":true},"WeeklySchedule":{"required":["days","time"],"type":"object","properties":{"days":{"type":"array","items":{"$ref":"#/components/schemas/Day"},"nullable":true},"time":{"type":"string","description":"UTC time of day e.g. 01:00:00 - as defined by partial-time - RFC3339","format":"time"}},"nullable":true},"Day":{"enum":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],"type":"string"},"StorageUsage":{"required":["bytes"],"type":"object","properties":{"bytes":{"type":"integer","nullable":true,"format":"int64"},"updatedAt":{"type":"string","format":"date-time","nullable":true}},"nullable":true},"RegistryFeatures":{"type":"object","properties":{"vulnerabilityScanning":{"$ref":"#/components/schemas/FeatureVulnerabilityScanning"}},"description":"Optional registry features.  __Note__: some may incur additional charges - see individual feature descriptions for details"},"FeatureVulnerabilityScanning":{"description":"Vulnerability scanning for images.  __Note__: this is a paid add-on","allOf":[{"$ref":"#/components/schemas/Feature"}]},"Feature":{"type":"object","description":"An optional registry feature","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true},"properties":{"type":"object"}}},"APISubnetAllowList":{"type":"array","description":"Subnets and IPs that are allowed to access the registry API, supports IPv4 and IPv6.\nMaximum of 25 items may be specified.\nIf no CIDR is given /32 and /128 are assumed for IPv4 and IPv6 respectively.\n0.0.0.0/0 can be used to deny all traffic.\n__Note__: If this list is empty or not set, there are no restrictions.\n","items":{"type":"string","pattern":"(^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(/([0-9]|[1-2][0-9]|3[0-2]))?$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))(/([0-9]|[0-9][0-9]|1[0-1][0-9]|12[0-8]))?$)"},"minItems":0,"maxItems":25,"nullable":true},"RegistryPagination":{"required":["limit","token"],"type":"object","properties":{"limit":{"type":"integer","description":"The maximum number of elements to return (used together with pagination.token for pagination)"},"token":{"type":"string","description":"An opaque token used to iterate the set of results (used together with limit for pagination)"}}},"ApiErrorResponse":{"required":["httpStatus","messages"],"type":"object","properties":{"httpStatus":{"type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ApiErrorMessage"},"nullable":true}}},"ApiErrorMessage":{"required":["errorCode","message"],"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/registries":{"get":{"tags":["Registries"],"summary":"List all container registries","description":"List all managed container registries for your account","operationId":"registriesGet","parameters":[{"name":"filter.name","in":"query","description":"The registry name to search for","schema":{"type":"string","description":"The registry name to search for"}},{"name":"limit","in":"query","description":"The maximum number of elements to return (used together with pagination.token for pagination)","schema":{"type":"string","description":"The maximum number of elements to return (used together with pagination.token for pagination)","default":"100"}},{"name":"pagination.token","in":"query","description":"An opaque token used to iterate the set of results (used together with limit for pagination)","schema":{"type":"string","description":"An opaque token used to iterate the set of results (used together with limit for pagination)"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistriesResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## Create container registry

> Create a registry to hold container images or OCI compliant artifacts\
> \- "name" must have passed validation\
> \- "location" must be one of the available location IDs\
> \- "garbageCollectionSchedule" time and days of the week for runs\
> \- "features": "vulnerabilityScanning" default is enabled

```json
{"openapi":"3.0.3","info":{"title":"Container Registry service","version":"1.2.2"},"tags":[{"name":"Registries","description":"Manage container registries for storage of docker images and OCI compliant artifacts. This operation is restricted to contract owner, admin, and users with 'accessAndManageRegistries' and Share/Edit access permissions for the data center hosting the registry.\n\nThis tag groups all operations for registries.\n"}],"servers":[{"url":"https://api.ionos.com/containerregistries","description":"Production"}],"security":[{"basicAuth":[]},{"tokenAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic","description":"You will need to base64 encode the string containing your credentials. Separate your username and password with a colon, i.e., username:password and send it as 'Authorization' request header. More details: https://en.wikipedia.org/wiki/Basic_access_authentication"},"tokenAuth":{"type":"apiKey","name":"Authorization","in":"header","description":"Please provide header value as 'Bearer' and don't forget to add 'Bearer' HTTP Authorization Scheme before the token        "}},"schemas":{"PostRegistryInput":{"required":["properties"],"type":"object","properties":{"properties":{"$ref":"#/components/schemas/PostRegistryProperties"}}},"PostRegistryProperties":{"required":["name","location"],"type":"object","properties":{"garbageCollectionSchedule":{"$ref":"#/components/schemas/WeeklySchedule"},"location":{"type":"string"},"name":{"pattern":"^[a-z][-a-z0-9]{1,61}[a-z0-9]$","type":"string"},"features":{"$ref":"#/components/schemas/RegistryFeatures"},"apiSubnetAllowList":{"$ref":"#/components/schemas/APISubnetAllowList"}}},"WeeklySchedule":{"required":["days","time"],"type":"object","properties":{"days":{"type":"array","items":{"$ref":"#/components/schemas/Day"},"nullable":true},"time":{"type":"string","description":"UTC time of day e.g. 01:00:00 - as defined by partial-time - RFC3339","format":"time"}},"nullable":true},"Day":{"enum":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],"type":"string"},"RegistryFeatures":{"type":"object","properties":{"vulnerabilityScanning":{"$ref":"#/components/schemas/FeatureVulnerabilityScanning"}},"description":"Optional registry features.  __Note__: some may incur additional charges - see individual feature descriptions for details"},"FeatureVulnerabilityScanning":{"description":"Vulnerability scanning for images.  __Note__: this is a paid add-on","allOf":[{"$ref":"#/components/schemas/Feature"}]},"Feature":{"type":"object","description":"An optional registry feature","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true},"properties":{"type":"object"}}},"APISubnetAllowList":{"type":"array","description":"Subnets and IPs that are allowed to access the registry API, supports IPv4 and IPv6.\nMaximum of 25 items may be specified.\nIf no CIDR is given /32 and /128 are assumed for IPv4 and IPv6 respectively.\n0.0.0.0/0 can be used to deny all traffic.\n__Note__: If this list is empty or not set, there are no restrictions.\n","items":{"type":"string","pattern":"(^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(/([0-9]|[1-2][0-9]|3[0-2]))?$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))(/([0-9]|[0-9][0-9]|1[0-1][0-9]|12[0-8]))?$)"},"minItems":0,"maxItems":25,"nullable":true},"PostRegistryOutput":{"required":["metadata","properties"],"type":"object","properties":{"href":{"type":"string"},"id":{"type":"string","format":"uuid"},"metadata":{"$ref":"#/components/schemas/ApiResourceMetadata"},"properties":{"$ref":"#/components/schemas/RegistryProperties"},"type":{"type":"string"}}},"ApiResourceMetadata":{"title":"Metadata","required":["createdBy","createdByUserId","createdDate","state"],"type":"object","properties":{"createdBy":{"type":"string"},"createdByUserId":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"lastModifiedBy":{"type":"string"},"lastModifiedByUserId":{"type":"string"},"lastModifiedDate":{"type":"string","format":"date-time","nullable":true},"state":{"type":"string"}},"nullable":true},"RegistryProperties":{"required":["name","location"],"type":"object","properties":{"garbageCollectionSchedule":{"$ref":"#/components/schemas/WeeklySchedule"},"hostname":{"type":"string"},"location":{"type":"string"},"name":{"pattern":"^[a-z][-a-z0-9]{1,61}[a-z0-9]$","type":"string"},"storageUsage":{"$ref":"#/components/schemas/StorageUsage"},"features":{"$ref":"#/components/schemas/RegistryFeatures"},"apiSubnetAllowList":{"$ref":"#/components/schemas/APISubnetAllowList"}},"nullable":true},"StorageUsage":{"required":["bytes"],"type":"object","properties":{"bytes":{"type":"integer","nullable":true,"format":"int64"},"updatedAt":{"type":"string","format":"date-time","nullable":true}},"nullable":true},"ApiErrorResponse":{"required":["httpStatus","messages"],"type":"object","properties":{"httpStatus":{"type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ApiErrorMessage"},"nullable":true}}},"ApiErrorMessage":{"required":["errorCode","message"],"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/registries":{"post":{"tags":["Registries"],"summary":"Create container registry","description":"Create a registry to hold container images or OCI compliant artifacts\n- \"name\" must have passed validation\n- \"location\" must be one of the available location IDs\n- \"garbageCollectionSchedule\" time and days of the week for runs\n- \"features\": \"vulnerabilityScanning\" default is enabled","operationId":"registriesPost","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostRegistryInput"}}},"required":true},"responses":{"201":{"description":"The created container registry is returned with 'metadata.status' set to \"BUSY\".","headers":{"Location":{"style":"simple","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostRegistryOutput"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## Get a registry

> Get all information for a specific container registry

```json
{"openapi":"3.0.3","info":{"title":"Container Registry service","version":"1.2.2"},"tags":[{"name":"Registries","description":"Manage container registries for storage of docker images and OCI compliant artifacts. This operation is restricted to contract owner, admin, and users with 'accessAndManageRegistries' and Share/Edit access permissions for the data center hosting the registry.\n\nThis tag groups all operations for registries.\n"}],"servers":[{"url":"https://api.ionos.com/containerregistries","description":"Production"}],"security":[{"basicAuth":[]},{"tokenAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic","description":"You will need to base64 encode the string containing your credentials. Separate your username and password with a colon, i.e., username:password and send it as 'Authorization' request header. More details: https://en.wikipedia.org/wiki/Basic_access_authentication"},"tokenAuth":{"type":"apiKey","name":"Authorization","in":"header","description":"Please provide header value as 'Bearer' and don't forget to add 'Bearer' HTTP Authorization Scheme before the token        "}},"schemas":{"RegistryResponse":{"required":["metadata","properties"],"type":"object","properties":{"href":{"type":"string"},"id":{"type":"string","format":"uuid"},"metadata":{"$ref":"#/components/schemas/ApiResourceMetadata"},"properties":{"$ref":"#/components/schemas/RegistryProperties"},"type":{"type":"string"}}},"ApiResourceMetadata":{"title":"Metadata","required":["createdBy","createdByUserId","createdDate","state"],"type":"object","properties":{"createdBy":{"type":"string"},"createdByUserId":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"lastModifiedBy":{"type":"string"},"lastModifiedByUserId":{"type":"string"},"lastModifiedDate":{"type":"string","format":"date-time","nullable":true},"state":{"type":"string"}},"nullable":true},"RegistryProperties":{"required":["name","location"],"type":"object","properties":{"garbageCollectionSchedule":{"$ref":"#/components/schemas/WeeklySchedule"},"hostname":{"type":"string"},"location":{"type":"string"},"name":{"pattern":"^[a-z][-a-z0-9]{1,61}[a-z0-9]$","type":"string"},"storageUsage":{"$ref":"#/components/schemas/StorageUsage"},"features":{"$ref":"#/components/schemas/RegistryFeatures"},"apiSubnetAllowList":{"$ref":"#/components/schemas/APISubnetAllowList"}},"nullable":true},"WeeklySchedule":{"required":["days","time"],"type":"object","properties":{"days":{"type":"array","items":{"$ref":"#/components/schemas/Day"},"nullable":true},"time":{"type":"string","description":"UTC time of day e.g. 01:00:00 - as defined by partial-time - RFC3339","format":"time"}},"nullable":true},"Day":{"enum":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],"type":"string"},"StorageUsage":{"required":["bytes"],"type":"object","properties":{"bytes":{"type":"integer","nullable":true,"format":"int64"},"updatedAt":{"type":"string","format":"date-time","nullable":true}},"nullable":true},"RegistryFeatures":{"type":"object","properties":{"vulnerabilityScanning":{"$ref":"#/components/schemas/FeatureVulnerabilityScanning"}},"description":"Optional registry features.  __Note__: some may incur additional charges - see individual feature descriptions for details"},"FeatureVulnerabilityScanning":{"description":"Vulnerability scanning for images.  __Note__: this is a paid add-on","allOf":[{"$ref":"#/components/schemas/Feature"}]},"Feature":{"type":"object","description":"An optional registry feature","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true},"properties":{"type":"object"}}},"APISubnetAllowList":{"type":"array","description":"Subnets and IPs that are allowed to access the registry API, supports IPv4 and IPv6.\nMaximum of 25 items may be specified.\nIf no CIDR is given /32 and /128 are assumed for IPv4 and IPv6 respectively.\n0.0.0.0/0 can be used to deny all traffic.\n__Note__: If this list is empty or not set, there are no restrictions.\n","items":{"type":"string","pattern":"(^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(/([0-9]|[1-2][0-9]|3[0-2]))?$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))(/([0-9]|[0-9][0-9]|1[0-1][0-9]|12[0-8]))?$)"},"minItems":0,"maxItems":25,"nullable":true},"ApiErrorResponse":{"required":["httpStatus","messages"],"type":"object","properties":{"httpStatus":{"type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ApiErrorMessage"},"nullable":true}}},"ApiErrorMessage":{"required":["errorCode","message"],"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/registries/{registryId}":{"get":{"tags":["Registries"],"summary":"Get a registry","description":"Get all information for a specific container registry","operationId":"registriesFindById","parameters":[{"name":"registryId","in":"path","description":"The unique ID of the registry","required":true,"schema":{"pattern":"^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$","type":"string","format":"uuid","description":"The unique ID of the registry"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## Create or replace a container registry

> Create/replace a registry to hold container images or OCI compliant\
> artifacts\
> \*\*On create\*\*\
> \- "name" must have passed validation\
> \- "location" must be one of the available location IDs\
> \*\*On update\*\*\
> \- "name" cannot be changed\
> \- "location" cannot be changed\
> \*\*On create or update\*\*\
> \- "garbageCollectionSchedule": time and days of the week for runs<br>

```json
{"openapi":"3.0.3","info":{"title":"Container Registry service","version":"1.2.2"},"tags":[{"name":"Registries","description":"Manage container registries for storage of docker images and OCI compliant artifacts. This operation is restricted to contract owner, admin, and users with 'accessAndManageRegistries' and Share/Edit access permissions for the data center hosting the registry.\n\nThis tag groups all operations for registries.\n"}],"servers":[{"url":"https://api.ionos.com/containerregistries","description":"Production"}],"security":[{"basicAuth":[]},{"tokenAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic","description":"You will need to base64 encode the string containing your credentials. Separate your username and password with a colon, i.e., username:password and send it as 'Authorization' request header. More details: https://en.wikipedia.org/wiki/Basic_access_authentication"},"tokenAuth":{"type":"apiKey","name":"Authorization","in":"header","description":"Please provide header value as 'Bearer' and don't forget to add 'Bearer' HTTP Authorization Scheme before the token        "}},"schemas":{"PutRegistryInput":{"required":["properties"],"type":"object","properties":{"properties":{"$ref":"#/components/schemas/PostRegistryProperties"}}},"PostRegistryProperties":{"required":["name","location"],"type":"object","properties":{"garbageCollectionSchedule":{"$ref":"#/components/schemas/WeeklySchedule"},"location":{"type":"string"},"name":{"pattern":"^[a-z][-a-z0-9]{1,61}[a-z0-9]$","type":"string"},"features":{"$ref":"#/components/schemas/RegistryFeatures"},"apiSubnetAllowList":{"$ref":"#/components/schemas/APISubnetAllowList"}}},"WeeklySchedule":{"required":["days","time"],"type":"object","properties":{"days":{"type":"array","items":{"$ref":"#/components/schemas/Day"},"nullable":true},"time":{"type":"string","description":"UTC time of day e.g. 01:00:00 - as defined by partial-time - RFC3339","format":"time"}},"nullable":true},"Day":{"enum":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],"type":"string"},"RegistryFeatures":{"type":"object","properties":{"vulnerabilityScanning":{"$ref":"#/components/schemas/FeatureVulnerabilityScanning"}},"description":"Optional registry features.  __Note__: some may incur additional charges - see individual feature descriptions for details"},"FeatureVulnerabilityScanning":{"description":"Vulnerability scanning for images.  __Note__: this is a paid add-on","allOf":[{"$ref":"#/components/schemas/Feature"}]},"Feature":{"type":"object","description":"An optional registry feature","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true},"properties":{"type":"object"}}},"APISubnetAllowList":{"type":"array","description":"Subnets and IPs that are allowed to access the registry API, supports IPv4 and IPv6.\nMaximum of 25 items may be specified.\nIf no CIDR is given /32 and /128 are assumed for IPv4 and IPv6 respectively.\n0.0.0.0/0 can be used to deny all traffic.\n__Note__: If this list is empty or not set, there are no restrictions.\n","items":{"type":"string","pattern":"(^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(/([0-9]|[1-2][0-9]|3[0-2]))?$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))(/([0-9]|[0-9][0-9]|1[0-1][0-9]|12[0-8]))?$)"},"minItems":0,"maxItems":25,"nullable":true},"PutRegistryOutput":{"required":["metadata","properties"],"type":"object","properties":{"href":{"type":"string"},"id":{"type":"string","format":"uuid"},"metadata":{"$ref":"#/components/schemas/ApiResourceMetadata"},"properties":{"$ref":"#/components/schemas/RegistryProperties"},"type":{"type":"string"}}},"ApiResourceMetadata":{"title":"Metadata","required":["createdBy","createdByUserId","createdDate","state"],"type":"object","properties":{"createdBy":{"type":"string"},"createdByUserId":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"lastModifiedBy":{"type":"string"},"lastModifiedByUserId":{"type":"string"},"lastModifiedDate":{"type":"string","format":"date-time","nullable":true},"state":{"type":"string"}},"nullable":true},"RegistryProperties":{"required":["name","location"],"type":"object","properties":{"garbageCollectionSchedule":{"$ref":"#/components/schemas/WeeklySchedule"},"hostname":{"type":"string"},"location":{"type":"string"},"name":{"pattern":"^[a-z][-a-z0-9]{1,61}[a-z0-9]$","type":"string"},"storageUsage":{"$ref":"#/components/schemas/StorageUsage"},"features":{"$ref":"#/components/schemas/RegistryFeatures"},"apiSubnetAllowList":{"$ref":"#/components/schemas/APISubnetAllowList"}},"nullable":true},"StorageUsage":{"required":["bytes"],"type":"object","properties":{"bytes":{"type":"integer","nullable":true,"format":"int64"},"updatedAt":{"type":"string","format":"date-time","nullable":true}},"nullable":true},"ApiErrorResponse":{"required":["httpStatus","messages"],"type":"object","properties":{"httpStatus":{"type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ApiErrorMessage"},"nullable":true}}},"ApiErrorMessage":{"required":["errorCode","message"],"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/registries/{registryId}":{"put":{"tags":["Registries"],"summary":"Create or replace a container registry","description":"Create/replace a registry to hold container images or OCI compliant\nartifacts\n**On create**\n- \"name\" must have passed validation\n- \"location\" must be one of the available location IDs\n**On update**\n- \"name\" cannot be changed\n- \"location\" cannot be changed\n**On create or update**\n- \"garbageCollectionSchedule\": time and days of the week for runs\n","operationId":"registriesPut","parameters":[{"name":"registryId","in":"path","description":"The unique ID of the registry","required":true,"schema":{"pattern":"^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$","type":"string","format":"uuid","description":"The unique ID of the registry"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutRegistryInput"}}},"required":true},"responses":{"201":{"description":"The created container registry is returned with 'metadata.status' set to \"BUSY\".","headers":{"Location":{"style":"simple","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutRegistryOutput"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## DELETE /registries/{registryId}

> Delete registry

```json
{"openapi":"3.0.3","info":{"title":"Container Registry service","version":"1.2.2"},"tags":[{"name":"Registries","description":"Manage container registries for storage of docker images and OCI compliant artifacts. This operation is restricted to contract owner, admin, and users with 'accessAndManageRegistries' and Share/Edit access permissions for the data center hosting the registry.\n\nThis tag groups all operations for registries.\n"}],"servers":[{"url":"https://api.ionos.com/containerregistries","description":"Production"}],"security":[{"basicAuth":[]},{"tokenAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic","description":"You will need to base64 encode the string containing your credentials. Separate your username and password with a colon, i.e., username:password and send it as 'Authorization' request header. More details: https://en.wikipedia.org/wiki/Basic_access_authentication"},"tokenAuth":{"type":"apiKey","name":"Authorization","in":"header","description":"Please provide header value as 'Bearer' and don't forget to add 'Bearer' HTTP Authorization Scheme before the token        "}},"schemas":{"ApiErrorResponse":{"required":["httpStatus","messages"],"type":"object","properties":{"httpStatus":{"type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ApiErrorMessage"},"nullable":true}}},"ApiErrorMessage":{"required":["errorCode","message"],"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/registries/{registryId}":{"delete":{"tags":["Registries"],"summary":"Delete registry","description":"","operationId":"registriesDelete","parameters":[{"name":"registryId","in":"path","description":"The unique ID of the registry","required":true,"schema":{"pattern":"^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$","type":"string","format":"uuid","description":"The unique ID of the registry"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## Update the properties of a registry

> Update the properties of a registry\
> \- "garbageCollectionSchedule" time and days of the week for runs

```json
{"openapi":"3.0.3","info":{"title":"Container Registry service","version":"1.2.2"},"tags":[{"name":"Registries","description":"Manage container registries for storage of docker images and OCI compliant artifacts. This operation is restricted to contract owner, admin, and users with 'accessAndManageRegistries' and Share/Edit access permissions for the data center hosting the registry.\n\nThis tag groups all operations for registries.\n"}],"servers":[{"url":"https://api.ionos.com/containerregistries","description":"Production"}],"security":[{"basicAuth":[]},{"tokenAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic","description":"You will need to base64 encode the string containing your credentials. Separate your username and password with a colon, i.e., username:password and send it as 'Authorization' request header. More details: https://en.wikipedia.org/wiki/Basic_access_authentication"},"tokenAuth":{"type":"apiKey","name":"Authorization","in":"header","description":"Please provide header value as 'Bearer' and don't forget to add 'Bearer' HTTP Authorization Scheme before the token        "}},"schemas":{"PatchRegistryInput":{"type":"object","properties":{"garbageCollectionSchedule":{"$ref":"#/components/schemas/WeeklySchedule"},"features":{"$ref":"#/components/schemas/RegistryFeatures"},"apiSubnetAllowList":{"$ref":"#/components/schemas/APISubnetAllowList"}}},"WeeklySchedule":{"required":["days","time"],"type":"object","properties":{"days":{"type":"array","items":{"$ref":"#/components/schemas/Day"},"nullable":true},"time":{"type":"string","description":"UTC time of day e.g. 01:00:00 - as defined by partial-time - RFC3339","format":"time"}},"nullable":true},"Day":{"enum":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],"type":"string"},"RegistryFeatures":{"type":"object","properties":{"vulnerabilityScanning":{"$ref":"#/components/schemas/FeatureVulnerabilityScanning"}},"description":"Optional registry features.  __Note__: some may incur additional charges - see individual feature descriptions for details"},"FeatureVulnerabilityScanning":{"description":"Vulnerability scanning for images.  __Note__: this is a paid add-on","allOf":[{"$ref":"#/components/schemas/Feature"}]},"Feature":{"type":"object","description":"An optional registry feature","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":true},"properties":{"type":"object"}}},"APISubnetAllowList":{"type":"array","description":"Subnets and IPs that are allowed to access the registry API, supports IPv4 and IPv6.\nMaximum of 25 items may be specified.\nIf no CIDR is given /32 and /128 are assumed for IPv4 and IPv6 respectively.\n0.0.0.0/0 can be used to deny all traffic.\n__Note__: If this list is empty or not set, there are no restrictions.\n","items":{"type":"string","pattern":"(^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(/([0-9]|[1-2][0-9]|3[0-2]))?$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))(/([0-9]|[0-9][0-9]|1[0-1][0-9]|12[0-8]))?$)"},"minItems":0,"maxItems":25,"nullable":true},"RegistryResponse":{"required":["metadata","properties"],"type":"object","properties":{"href":{"type":"string"},"id":{"type":"string","format":"uuid"},"metadata":{"$ref":"#/components/schemas/ApiResourceMetadata"},"properties":{"$ref":"#/components/schemas/RegistryProperties"},"type":{"type":"string"}}},"ApiResourceMetadata":{"title":"Metadata","required":["createdBy","createdByUserId","createdDate","state"],"type":"object","properties":{"createdBy":{"type":"string"},"createdByUserId":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"lastModifiedBy":{"type":"string"},"lastModifiedByUserId":{"type":"string"},"lastModifiedDate":{"type":"string","format":"date-time","nullable":true},"state":{"type":"string"}},"nullable":true},"RegistryProperties":{"required":["name","location"],"type":"object","properties":{"garbageCollectionSchedule":{"$ref":"#/components/schemas/WeeklySchedule"},"hostname":{"type":"string"},"location":{"type":"string"},"name":{"pattern":"^[a-z][-a-z0-9]{1,61}[a-z0-9]$","type":"string"},"storageUsage":{"$ref":"#/components/schemas/StorageUsage"},"features":{"$ref":"#/components/schemas/RegistryFeatures"},"apiSubnetAllowList":{"$ref":"#/components/schemas/APISubnetAllowList"}},"nullable":true},"StorageUsage":{"required":["bytes"],"type":"object","properties":{"bytes":{"type":"integer","nullable":true,"format":"int64"},"updatedAt":{"type":"string","format":"date-time","nullable":true}},"nullable":true},"ApiErrorResponse":{"required":["httpStatus","messages"],"type":"object","properties":{"httpStatus":{"type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ApiErrorMessage"},"nullable":true}}},"ApiErrorMessage":{"required":["errorCode","message"],"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/registries/{registryId}":{"patch":{"tags":["Registries"],"summary":"Update the properties of a registry","description":"Update the properties of a registry\n- \"garbageCollectionSchedule\" time and days of the week for runs","operationId":"registriesPatch","parameters":[{"name":"registryId","in":"path","description":"The unique ID of the registry","required":true,"schema":{"pattern":"^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$","type":"string","format":"uuid","description":"The unique ID of the registry"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchRegistryInput"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```
