# Repositories

Repositories contain container images and other artifacts

This tag groups all operations for repositories.

## Retrieve all Repositories

> This endpoint enables retrieving all Repositories using\
> pagination and optional filters.<br>

```json
{"openapi":"3.0.3","info":{"title":"Container Registry service","version":"1.2.2"},"tags":[{"name":"Repositories","description":"Repositories contain container images and other artifacts\n\nThis tag groups all operations for repositories.\n"}],"servers":[{"url":"https://api.ionos.com/containerregistries","description":"Production"}],"security":[{"tokenAuth":[]}],"components":{"securitySchemes":{"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        "}},"parameters":{"paginationOffset":{"name":"offset","in":"query","description":"The first element (of the total list of elements) to include in the response. Use this parameter together with the limit for pagination.","required":false,"schema":{"type":"integer","format":"int32","default":0,"minimum":0}},"paginationLimit":{"name":"limit","in":"query","description":"The maximum number of elements to return. Use this parameter together with the offset for pagination.","required":false,"schema":{"type":"integer","format":"int32","default":100,"minimum":1,"maximum":1000}},"name":{"name":"filter.name","in":"query","description":"Filter resources by name.","required":false,"schema":{"type":"string"}},"vulnerabilitySeverity":{"name":"filter.vulnerabilitySeverity","in":"query","description":"Filter resources by vulnerability severity. Supports comma-separated values (e.g., \"medium,high,critical\").","required":false,"schema":{"$ref":"#/components/schemas/VulnerabilitySeverity"}}},"schemas":{"VulnerabilitySeverity":{"type":"string","description":"The CVSS vulnerability severity rating"},"RepositoryReadList":{"required":["id","type","href","offset","limit","_links"],"type":"object","properties":{"id":{"type":"string","enum":["repositories"]},"type":{"type":"string","enum":["collection"]},"href":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/RepositoryRead"}},"offset":{"$ref":"#/components/schemas/Offset"},"limit":{"$ref":"#/components/schemas/Limit"},"_links":{"$ref":"#/components/schemas/Links"}}},"RepositoryRead":{"required":["id","type","href","metadata","properties"],"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["repository"]},"href":{"type":"string"},"metadata":{"$ref":"#/components/schemas/RepositoryMetadata"},"properties":{"$ref":"#/components/schemas/Repository"}}},"RepositoryMetadata":{"allOf":[{"$ref":"#/components/schemas/Metadata"},{"required":["artifactCount","pullCount","pushCount"],"type":"object","properties":{"artifactCount":{"type":"integer","format":"int64"},"pullCount":{"type":"integer","format":"int64"},"pushCount":{"type":"integer","format":"int64"},"lastPulledAt":{"type":"string","format":"date-time"},"lastPushedAt":{"type":"string","format":"date-time"},"lastSeverity":{"description":"The maximum vulnerability severity of the artifact last pushed in the repository, if any","allOf":[{"$ref":"#/components/schemas/VulnerabilitySeverity"}]}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}},"Repository":{"required":["name"],"type":"object","properties":{"name":{"type":"string"}}},"Offset":{"description":"The offset specified in the request (if none was specified, the default\noffset is 0).\n","type":"integer","minimum":0,"readOnly":true},"Limit":{"description":"The limit specified in the request (if none was specified, use the\nendpoint's default pagination limit).\n","type":"integer","minimum":0,"readOnly":true},"Links":{"description":"URLs to navigate the different pages. As of now we always only return a\nsingle page.\n","type":"object","properties":{"prev":{"description":"URL (with offset and limit parameters) of the previous page; only\npresent if offset is greater than 0.\n","type":"string","format":"uri","readOnly":true},"self":{"description":"URL (with offset and limit parameters) of the current page.\n","type":"string","format":"uri","readOnly":true},"next":{"description":"URL (with offset and limit parameters) of the next page; only\npresent if offset + limit is less than the total number of elements.\n","type":"string","format":"uri","readOnly":true}}},"Error":{"description":"The Error object is used to represent an error response from the API.\n","type":"object","properties":{"httpStatus":{"type":"integer","description":"The HTTP status code of the operation."},"messages":{"type":"array","description":"A list of error messages.\n","items":{"type":"object","properties":{"errorCode":{"type":"string","description":"Application internal error code\n"},"message":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem.\n"}}}}}}},"responses":{"BadRequest":{"description":"### Bad Request\nThe request send to the API was malformed.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"### Unauthorized\nThe request is missing authorization information or the authorization information provided are expired.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotAllowed":{"description":"### Not Allowed\nThe user issuing the request does not have the needed permissions.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"TooManyRequests":{"description":"### Too Many Requests\nThe user has sent too many requests in a given amount of time.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalError":{"description":"### Internal Server Error\nAn internal error occurred. We apologize for the inconvenience!\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ServiceUnavailable":{"description":"### Service Unavailable\nThe server is currently unable to handle the request due to a temporary overloading or maintenance of the server.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"UnexpectedError":{"description":"### Unexpected Internal Server Error\nAn unexpected internal error occurred. We apologize for the inconvenience!\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/registries/{registryId}/repositories":{"get":{"operationId":"registriesRepositoriesGet","summary":"Retrieve all Repositories","description":"This endpoint enables retrieving all Repositories using\npagination and optional filters.\n","parameters":[{"name":"registryId","in":"path","schema":{"type":"string","format":"uuid"},"required":true,"description":"The ID (UUID) of the Registry."},{"$ref":"#/components/parameters/paginationOffset"},{"$ref":"#/components/parameters/paginationLimit"},{"$ref":"#/components/parameters/name"},{"$ref":"#/components/parameters/vulnerabilitySeverity"},{"name":"orderBy","in":"query","description":"The field to order the results by. If not provided, the results will be ordered by the default field.","schema":{"type":"string","default":"-lastPush","enum":["-lastPush","-lastPull","-artifactCount","-pullCount","-pushCount","name","lastPush","lastPull","artifactCount","pullCount","pushCount"]}}],"tags":["Repositories"],"responses":{"200":{"description":"Returned all requested Repositories successfully.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositoryReadList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotAllowed"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"default":{"$ref":"#/components/responses/UnexpectedError"}}}}}}
```

## Retrieve Repository

> Returns the Repository by Name.

```json
{"openapi":"3.0.3","info":{"title":"Container Registry service","version":"1.2.2"},"tags":[{"name":"Repositories","description":"Repositories contain container images and other artifacts\n\nThis tag groups all operations for repositories.\n"}],"servers":[{"url":"https://api.ionos.com/containerregistries","description":"Production"}],"security":[{"tokenAuth":[]}],"components":{"securitySchemes":{"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":{"RepositoryRead":{"required":["id","type","href","metadata","properties"],"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["repository"]},"href":{"type":"string"},"metadata":{"$ref":"#/components/schemas/RepositoryMetadata"},"properties":{"$ref":"#/components/schemas/Repository"}}},"RepositoryMetadata":{"allOf":[{"$ref":"#/components/schemas/Metadata"},{"required":["artifactCount","pullCount","pushCount"],"type":"object","properties":{"artifactCount":{"type":"integer","format":"int64"},"pullCount":{"type":"integer","format":"int64"},"pushCount":{"type":"integer","format":"int64"},"lastPulledAt":{"type":"string","format":"date-time"},"lastPushedAt":{"type":"string","format":"date-time"},"lastSeverity":{"description":"The maximum vulnerability severity of the artifact last pushed in the repository, if any","allOf":[{"$ref":"#/components/schemas/VulnerabilitySeverity"}]}}}]},"Metadata":{"type":"object","description":"Metadata of the resource.","properties":{"createdDate":{"type":"string","format":"date-time","description":"The ISO 8601 creation timestamp.","readOnly":true},"createdBy":{"type":"string","description":"Unique name of the identity that created the resource.","readOnly":true},"createdByUserId":{"type":"string","description":"Unique id of the identity that created the resource.","readOnly":true},"lastModifiedDate":{"type":"string","format":"date-time","description":"The ISO 8601 modified timestamp.","readOnly":true},"lastModifiedBy":{"type":"string","description":"Unique name of the identity that last modified the resource.","readOnly":true},"lastModifiedByUserId":{"type":"string","description":"Unique id of the identity that last modified the resource.","readOnly":true},"resourceURN":{"type":"string","description":"Unique name of the resource.","readOnly":true}}},"VulnerabilitySeverity":{"type":"string","description":"The CVSS vulnerability severity rating"},"Repository":{"required":["name"],"type":"object","properties":{"name":{"type":"string"}}},"Error":{"description":"The Error object is used to represent an error response from the API.\n","type":"object","properties":{"httpStatus":{"type":"integer","description":"The HTTP status code of the operation."},"messages":{"type":"array","description":"A list of error messages.\n","items":{"type":"object","properties":{"errorCode":{"type":"string","description":"Application internal error code\n"},"message":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem.\n"}}}}}}},"responses":{"BadRequest":{"description":"### Bad Request\nThe request send to the API was malformed.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"### Unauthorized\nThe request is missing authorization information or the authorization information provided are expired.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotAllowed":{"description":"### Not Allowed\nThe user issuing the request does not have the needed permissions.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"### Not Found\nThe resource that was requested could not be found.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"TooManyRequests":{"description":"### Too Many Requests\nThe user has sent too many requests in a given amount of time.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalError":{"description":"### Internal Server Error\nAn internal error occurred. We apologize for the inconvenience!\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ServiceUnavailable":{"description":"### Service Unavailable\nThe server is currently unable to handle the request due to a temporary overloading or maintenance of the server.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"UnexpectedError":{"description":"### Unexpected Internal Server Error\nAn unexpected internal error occurred. We apologize for the inconvenience!\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/registries/{registryId}/repositories/{repositoryName}":{"get":{"operationId":"registriesRepositoriesFindByName","summary":"Retrieve Repository","tags":["Repositories"],"description":"Returns the Repository by Name.","parameters":[{"name":"registryId","in":"path","schema":{"type":"string","format":"uuid"},"required":true,"description":"The ID (UUID) of the Registry."},{"name":"repositoryName","in":"path","schema":{"type":"string","maxLength":256},"required":true,"description":"The Name of the Repository."}],"responses":{"200":{"description":"Getting Repository was successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositoryRead"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotAllowed"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"default":{"$ref":"#/components/responses/UnexpectedError"}}}}}}
```

## Delete repository

> Delete all repository contents\
> \
> &#x9;	The registry V2 API allows manifests and blobs to be deleted individually but it is not possible to remove an entire repository.\
> &#x9;	This operation is provided for convenience

```json
{"openapi":"3.0.3","info":{"title":"Container Registry service","version":"1.2.2"},"tags":[{"name":"Repositories","description":"Repositories contain container images and other artifacts\n\nThis tag groups all operations for repositories.\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        "}}},"paths":{"/registries/{registryId}/repositories/{repositoryName}":{"delete":{"tags":["Repositories"],"summary":"Delete repository","description":"Delete all repository contents\n\n\t\tThe registry V2 API allows manifests and blobs to be deleted individually but it is not possible to remove an entire repository.\n\t\tThis operation is provided for convenience","operationId":"registriesRepositoriesDelete","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"}},{"name":"repositoryName","in":"path","description":"The name of the repository","required":true,"schema":{"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*$","type":"string","description":"The name of the repository"}}],"responses":{"204":{"description":"No Content"}}}}}}
```
