Conversation
OpenAPI Changes ReportGenerated at: Fri, 20 Jun 2025 01:03:35 EST General Summary
Details by CommitCommit 1: Original: /home/gfz/git/magaluCloud/magalu/specs/container-registry.openapi.yaml. Modified: /home/gfz/git/magaluCloud/magalu/specs/tmp/container-registry.openapi.yamlCommit Information:
Statistics:
Visual Diff: Click to expand diff--- Original
+++ Modified
@@ -11,31 +11,27 @@
url: https://www.apache.org/licenses/LICENSE-2.0.html
version: 0.1.0
servers:
- - url: https://api-mcr.pre-prod.br-ne-1.jaxyendy.com
- description: "NE-1 pre-prod"
- - url: https://api-mcr.team-integration.br-ne-1.jaxyendy.com
- description: "NE-1 team-integration"
- - url: https://api-mcr.br-ne-1.jaxyendy.com
- description: "NE-1 prod"
- - url: https://api-mcr.pre-prod.br-se-1.jaxyendy.com
- description: "SE1 pre-prod"
- - url: https://api-mcr.team-integration.br-se-1.jaxyendy.com
- description: "SE1 team-integration"
- - url: https://api-mcr.br-se-1.jaxyendy.com
- description: "SE1 prod"
+ - url: https://api-mcr.csre-plat-preprod.1.yel.se1.br.jaxyendy.com
+ description: "SE1-YEL pre-prod"
+ - url: https://api-mcr.csre-plat-prod.1.yel.se1.br.jaxyendy.com
+ description: "SE1-YEL prod"
+ - url: https://api-mcr.csre-plat-preprod.1.yel.ne1.br.jaxyendy.com
+ description: "NE1-YEL pre-prod"
+ - url: https://api-mcr.csre-plat-prod.1.yel.ne1.br.jaxyendy.com
+ description: "NE1-YEL prod"
paths:
/v0/credentials:
get:
tags:
- credentials
summary: Get credentials for container registry
- description: Return container registry user's authentication credentials.
+ description: Return container registry user's authentication credentials.
operationId: getCredentials
security:
- BearerAuth:
- - mcr.read
- - OAuth2:
- - mcr.read
+ - mcr.read
+ - OAuth2:
+ - mcr.read
responses:
'200':
description: Successful operation
@@ -60,13 +56,13 @@
tags:
- credentials
summary: Reset password
- description: Reset container registry user's password.
+ description: Reset container registry user's password.
operationId: resetPassword
security:
- BearerAuth:
- - mcr.write
- - OAuth2:
- - mcr.write
+ - mcr.write
+ - OAuth2:
+ - mcr.write
responses:
'200':
description: Successful operation
@@ -88,14 +84,14 @@
post:
tags:
- registries
- summary: Create a container registry
+ summary: Create a container registry
description: Creates a container registry in Magalu Cloud.
operationId: createRegistry
security:
- BearerAuth:
- - mcr.write
- - OAuth2:
- - mcr.write
+ - mcr.write
+ - OAuth2:
+ - mcr.write
requestBody:
content:
application/json:
@@ -124,37 +120,37 @@
tags:
- registries
summary: List all container registries
- description: List user's container registries.
+ description: List user's container registries.
operationId: getRegistries
security:
- BearerAuth:
- - mcr.read
- - OAuth2:
- - mcr.read
+ - mcr.read
+ - OAuth2:
+ - mcr.read
parameters:
- - name: _limit
- in: query
- required: false
- schema:
- minimum: 1
- title: "Limit"
- type: integer
- description: Limit
- - name: _offset
- in: query
- required: false
- schema:
- minimum: 0
- type: integer
- description: Offset
- - name: _sort
- in: query
- required: false
- schema:
- default: created_at:asc
- pattern: (^[\w-]+:(asc|desc)(,[\w-]+:(asc|desc))*)?$
- type: string
- description: Fields to use as reference to sort.
+ - name: _limit
+ in: query
+ required: false
+ schema:
+ minimum: 1
+ title: "Limit"
+ type: integer
+ description: Limit
+ - name: _offset
+ in: query
+ required: false
+ schema:
+ minimum: 0
+ type: integer
+ description: Offset
+ - name: _sort
+ in: query
+ required: false
+ schema:
+ default: created_at:asc
+ pattern: (^[\w-]+:(asc|desc)(,[\w-]+:(asc|desc))*)?$
+ type: string
+ description: Fields to use as reference to sort.
responses:
'200':
description: Successful operation
@@ -167,7 +163,7 @@
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
- $ref: '#/components/responses/ForbiddenError'
+ $ref: '#/components/responses/ForbiddenError'
'404':
$ref: '#/components/responses/NotFoundError'
'429':
@@ -183,17 +179,17 @@
operationId: getRegistry
security:
- BearerAuth:
- - mcr.read
- - OAuth2:
- - mcr.read
+ - mcr.read
+ - OAuth2:
+ - mcr.read
parameters:
- - name: registry_id
- in: path
- required: true
- schema:
- type: string
- format: uuid
- description: Container Registry's UUID.
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
responses:
'200':
description: Successful operation
@@ -221,17 +217,17 @@
operationId: deleteRegistry
security:
- BearerAuth:
- - mcr.write
- - OAuth2:
- - mcr.write
+ - mcr.write
+ - OAuth2:
+ - mcr.write
parameters:
- - name: registry_id
- in: path
- required: true
- schema:
- type: string
- format: uuid
- description: Container Registry's UUID.
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
responses:
'204':
description: Successful operation
@@ -246,50 +242,50 @@
'429':
$ref: '#/components/responses/TooManyRequestsError'
'500':
- $ref: '#/components/responses/InternalServerError'
+ $ref: '#/components/responses/InternalServerError'
/v0/registries/{registry_id}/repositories:
get:
tags:
- repositories
summary: List all container registry repositories
- description: List all user's repositories in the container registry.
+ description: List all user's repositories in the container registry.
operationId: getRepositories
security:
- BearerAuth:
- - mcr.read
- - OAuth2:
- - mcr.read
+ - mcr.read
+ - OAuth2:
+ - mcr.read
parameters:
- - name: registry_id
- in: path
- required: true
- schema:
- type: string
- format: uuid
- description: Container Registry's UUID.
- - name: _limit
- in: query
- required: false
- schema:
- minimum: 1
- title: "Limit"
- type: integer
- description: Limit
- - name: _offset
- in: query
- required: false
- schema:
- minimum: 0
- type: integer
- description: Offset
- - name: _sort
- in: query
- required: false
- schema:
- default: created_at:desc
- pattern: (^[\w-]+:(asc|desc)(,[\w-]+:(asc|desc))*)?$
- type: string
- description: Fields to use as reference to sort.
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - name: _limit
+ in: query
+ required: false
+ schema:
+ minimum: 1
+ title: "Limit"
+ type: integer
+ description: Limit
+ - name: _offset
+ in: query
+ required: false
+ schema:
+ minimum: 0
+ type: integer
+ description: Offset
+ - name: _sort
+ in: query
+ required: false
+ schema:
+ default: created_at:desc
+ pattern: (^[\w-]+:(asc|desc)(,[\w-]+:(asc|desc))*)?$
+ type: string
+ description: Fields to use as reference to sort.
responses:
'200':
description: Successful operation
@@ -318,23 +314,23 @@
operationId: getRepository
security:
- BearerAuth:
- - mcr.read
- - OAuth2:
- - mcr.read
+ - mcr.read
+ - OAuth2:
+ - mcr.read
parameters:
- - name: registry_id
- in: path
- required: true
- schema:
- type: string
- format: uuid
- description: Container Registry's UUID.
- - required: true
- name: repository_name
- in: path
- schema:
- type: string
- description: Repository's name.
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - required: true
+ name: repository_name
+ in: path
+ schema:
+ type: string
+ description: Repository's name.
responses:
'201':
description: Successful operation
@@ -362,23 +358,23 @@
operationId: deleteRepository
security:
- BearerAuth:
- - mcr.write
- - OAuth2:
- - mcr.write
+ - mcr.write
+ - OAuth2:
+ - mcr.write
parameters:
- - name: registry_id
- in: path
- required: true
- schema:
- type: string
- format: uuid
- description: Container Registry's UUID.
- - required: true
- name: repository_name
- in: path
- schema:
- type: string
- description: Repository's name.
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - required: true
+ name: repository_name
+ in: path
+ schema:
+ type: string
+ description: Repository's name.
responses:
'204':
description: Successful operation
@@ -403,54 +399,54 @@
operationId: getImages
security:
- BearerAuth:
- - mcr.read
- - OAuth2:
- - mcr.read
+ - mcr.read
+ - OAuth2:
+ - mcr.read
parameters:
- - name: registry_id
- in: path
- required: true
- schema:
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - required: true
+ name: repository_name
+ in: path
+ schema:
+ type: string
+ description: Repository's name.
+ - name: _limit
+ in: query
+ required: false
+ schema:
+ minimum: 1
+ title: Limit
+ type: integer
+ description: Limit
+ - name: _offset
+ in: query
+ required: false
+ schema:
+ minimum: 0
+ type: integer
+ description: Offset
+ - name: _sort
+ in: query
+ required: false
+ schema:
+ default: pushed_at:desc
+ pattern: (^[\w-]+:(asc|desc)(,[\w-]+:(asc|desc))*)?$
+ type: string
+ description: Fields to use as reference to sort.
+ - name: expand
+ in: query
+ required: false
+ schema:
+ type: array
+ items:
type: string
- format: uuid
- description: Container Registry's UUID.
- - required: true
- name: repository_name
- in: path
- schema:
- type: string
- description: Repository's name.
- - name: _limit
- in: query
- required: false
- schema:
- minimum: 1
- title: Limit
- type: integer
- description: Limit
- - name: _offset
- in: query
- required: false
- schema:
- minimum: 0
- type: integer
- description: Offset
- - name: _sort
- in: query
- required: false
- schema:
- default: pushed_at:desc
- pattern: (^[\w-]+:(asc|desc)(,[\w-]+:(asc|desc))*)?$
- type: string
- description: Fields to use as reference to sort.
- - name: expand
- in: query
- required: false
- schema:
- type: array
- items:
- type: string
- description: "You can get more detailed info about: ['tags_details', 'extra_attr', 'manifest_media_type', 'media_type']"
+ description: "You can get more detailed info about: ['tags_details', 'extra_attr', 'manifest_media_type', 'media_type']"
responses:
'200':
description: Successful operation
@@ -479,31 +475,31 @@
operationId: deleteImage
security:
- BearerAuth:
- - mcr.write
- - mcr.read
- - OAuth2:
- - mcr.write
- - mcr.read
+ - mcr.write
+ - mcr.read
+ - OAuth2:
+ - mcr.write
+ - mcr.read
parameters:
- - name: registry_id
- in: path
- required: true
- schema:
- type: string
- format: uuid
- description: Container Registry's UUID.
- - required: true
- name: repository_name
- in: path
- schema:
- type: string
- description: Repository's name.
- - name: digest_or_tag
- in: path
- required: true
- schema:
- type: string
- description: Digest or tag of an image
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - required: true
+ name: repository_name
+ in: path
+ schema:
+ type: string
+ description: Repository's name.
+ - name: digest_or_tag
+ in: path
+ required: true
+ schema:
+ type: string
+ description: Digest or tag of an image
responses:
'204':
description: Successful operation
@@ -521,35 +517,35 @@
$ref: '#/components/responses/InternalServerError'
get:
tags:
- - images
+ - images
summary: Get image details
description: Show detailed information about the image.
operationId: getImage
security:
- BearerAuth:
- - mcr.read
- - OAuth2:
- - mcr.read
+ - mcr.read
+ - OAuth2:
+ - mcr.read
parameters:
- - name: registry_id
- in: path
- required: true
- schema:
- type: string
- format: uuid
- description: Container Registry's UUID.
- - name: repository_name
- in: path
- required: true
- schema:
- type: string
- description: Repository's name.
- - name: digest_or_tag
- in: path
- required: true
- schema:
- type: string
- description: Digest or tag of an image.
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - name: repository_name
+ in: path
+ required: true
+ schema:
+ type: string
+ description: Repository's name.
+ - name: digest_or_tag
+ in: path
+ required: true
+ schema:
+ type: string
+ description: Digest or tag of an image.
responses:
'200':
description: Successful operation
@@ -569,8 +565,560 @@
$ref: '#/components/responses/TooManyRequestsError'
'500':
$ref: '#/components/responses/InternalServerError'
+ /v0/proxy-caches:
+ post:
+ tags:
+ - proxy-caches
+ summary: Create a proxy cache
+ description: Creates a proxy cache in Magalu Cloud.
+ operationId: createProxyCache
+ security:
+ - BearerAuth:
+ - mcr.write
+ - OAuth2:
+ - mcr.write
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ProxyCacheRequest'
+ responses:
+ '201':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CreateProxyCacheResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ get:
+ tags:
+ - proxy-caches
+ summary: List all proxy-caches
+ description: List user's proxy caches.
+ operationId: getProxyCaches
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ parameters:
+ - name: _limit
+ in: query
+ required: false
+ schema:
+ minimum: 1
+ title: "Limit"
+ type: integer
+ description: Limit
+ - name: _offset
+ in: query
+ required: false
+ schema:
+ minimum: 0
+ type: integer
+ description: Offset
+ - name: _sort
+ in: query
+ required: false
+ schema:
+ default: created_at:asc
+ pattern: (^[\w-]+:(asc|desc)(,[\w-]+:(asc|desc))*)?$
+ type: string
+ description: Fields to use as reference to sort.
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ProxyCachesResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ /v0/proxy-caches/{proxy_cache_id}:
+ get:
+ tags:
+ - proxy-caches
+ summary: Get a proxy cache by proxy_cache_id
+ description: Get a proxycache by uuid.
+ operationId: getProxyCache
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ parameters:
+ - name: proxy_cache_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Proxy cache's UUID.
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ProxyCacheDetailedResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ patch:
+ tags:
+ - proxy-caches
+ summary: Update a proxy cache by proxy_cache_id
+ description: Update a proxycache by uuid.
+ operationId: updateProxyCache
+ security:
+ - BearerAuth:
+ - mcr.write
+ - OAuth2:
+ - mcr.write
+ parameters:
+ - name: proxy_cache_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Proxy cache's UUID.
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UpdateProxyCacheRequest'
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UpdateProxyCacheResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ delete:
+ tags:
+ - proxy-caches
+ summary: Delete a proxy cache by proxy_cache_id
+ description: Delete a proxycache by uuid.
+ operationId: deleteProxyCache
+ security:
+ - BearerAuth:
+ - mcr.write
+ - OAuth2:
+ - mcr.write
+ parameters:
+ - name: proxy_cache_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Proxy cache's UUID.
+ responses:
+ '204':
+ description: Successful operation
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ /v0/proxy-caches/status:
+ post:
+ tags:
+ - proxy-caches
+ summary: Test connectivity using proxy cache credentials
+ description: |
+ Validates the provided credentials and endpoint information for a remote registry
+ used in a proxy cache configuration. This endpoint does not persist any data — it only
+ tests if the given credentials allow access to the target registry.
+ operationId: checkProxyCacheCredentialStatus
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ProxyCacheCredentialStatusRequest'
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ProxyCacheCredentialStatusResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ /v0/proxy-caches/{proxy_cache_id}/status:
+ get:
+ tags:
+ - proxy-caches
+ summary: Get proxy cache connection status
+ description: |
+ Verifies and returns the current connection status of a configured proxy cache,
+ including validation of credentials and endpoint accessibility.
+ operationId: getProxyCacheStatus
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ parameters:
+ - name: proxy_cache_id
+ in: path
+ required: true
+ description: Unique identifier of the proxy cache configuration
+ schema:
+ type: string
+ format: uuid
+ example: "123e4567-e89b-12d3-a456-426614174000"
+ responses:
+ '200':
+ description: Proxy cache status verification result
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ProxyCacheStatusResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
components:
schemas:
+ UpdateProxyCacheRequest:
+ type: object
+ description: Update Proxy cache Request Object.
+ properties:
+ name:
+ type: string
+ default: ""
+ description: A unique name for each tenant, used for the proxy-cache. It must be written in lowercase letters and consists only of numbers and letters, up to a limit of 63 characters.
+ url:
+ type: string
+ default: ""
+ description: An Endpoint URL for the proxied registry. Example URL for available providers can be checked through mcr-api or mgccli.
+ access_key:
+ type: string
+ description: A string consistent with provider access_id.
+ default: ""
+ access_secret:
+ type: string
+ description: A string consistent with provider access_secret.
+ default: ""
+ description:
+ type: string
+ description: A string.
+ default: ""
+ example:
+ name: updated_cool_registry_proxy
+ url: https://hub.docker.com
+ access_key: example-access-key
+ access_secret: example-access-secret
+ description: cool_description
+ ProxyCacheRequest:
+ type: object
+ description: Proxy cache Request Object.
+ properties:
+ name:
+ type: string
+ description: A unique name for each tenant, used for the proxy-cache. It must be written in lowercase letters and consists only of numbers and letters, up to a limit of 63 characters.
+ provider:
+ type: string
+ description: A provider identifier string. Available providers can be checked through mcr-api or mgccli.
+ url:
+ type: string
+ description: An Endpoint URL for the proxied registry. Example URL for available providers can be checked through mcr-api or mgccli.
+ access_key:
+ type: string
+ description: A string consistent with provider access_id.
+ default: ""
+ access_secret:
+ type: string
+ description: A string consistent with provider access_secret.
+ default: ""
+ description:
+ type: string
+ description: A string.
+ default: ""
+ required:
+ - name
+ - provider
+ - url
+ example:
+ name: cool_registry_proxy
+ provider: docker-hub
+ url: https://hub.docker.com
+ access_key: example-access-key
+ access_secret: example-access-secret
+ description: cool_description
+ ProxyCacheCredentialStatusRequest:
+ type: object
+ description: Validate remote proxy cache credentials
+ properties:
+ provider:
+ type: string
+ description: Type of the remote registry (e.g., harbor, dockerhub)
+ url:
+ type: string
+ description: Endpoint URL of the remote registry
+ access_key:
+ type: string
+ description: Access key or username for authentication
+ access_secret:
+ type: string
+ description: Secret or password for authentication
+ required:
+ - provider
+ - url
+ - credential_type
+ - access_key
+ - access_secret
+ example:
+ provider: "docker-hub"
+ url: "https://hub.docker.com"
+ credential_type: "basic"
+ access_key: "my_username"
+ access_secret: "my_password"
+ ProxyCacheCredentialStatusResponse:
+ type: object
+ description: Result of validating the proxy cache credentials
+ properties:
+ status:
+ type: string
+ description: Connection status (e.g., "valid", "invalid")
+ message:
+ type: string
+ description: Additional details about the result of the validation
+ required:
+ - status
+ example:
+ status: "valid"
+ message: "Proxy cache credentials are valid"
+ CreateProxyCacheResponse:
+ type: object
+ description: Proxy Cache creation response.
+ properties:
+ id:
+ type: string
+ description: Proxy Cache UUID.
+ name:
+ type: string
+ description: A unique, global name for the container registry. It must be written in lowercase letters and consists only of numbers and letters, up to a limit of 63 characters.
+ required:
+ - id
+ - name
+ example:
+ id: 0c6bbd87-881a-4bf8-b3f6-4ff3ceacb42c
+ name: cool_registry_proxy
+ UpdateProxyCacheResponse:
+ type: object
+ description: Proxy Cache update response.
+ required:
+ - id
+ - name
+ - provider
+ - url
+ - created_at
+ - updated_at
+ properties:
+ id:
+ type: string
+ description: Proxy Cache's UUID.
+ name:
+ type: string
+ description: Name of the proxy cache created.
+ provider:
+ type: string
+ description: Name of proxy cache registry provider.
+ url:
+ type: string
+ description: URL of proxy cache provider.
+ created_at:
+ type: string
+ description: Date and time of creation of the proxy cache.
+ updated_at:
+ type: string
+ description: Date and time of the last change to the proxy cache.
+ example:
+ id: 0c6bbd87-881a-4bf8-b3f6-4ff3ceacb42c
+ name: cool_proxy
+ provider: docker-hub
+ url: https://hub.docker.com
+ created_at: "2024-05-15T19:56:47Z"
+ updated_at: "2024-05-15T19:56:47Z"
+ description: "Proxy cache for Docker Hub"
+ ProxyCacheDetailedResponse:
+ type: object
+ description: Container Proxy Cache's response data.
+ required:
+ - id
+ - name
+ - provider
+ - url
+ - created_at
+ - updated_at
+ - description
+ properties:
+ id:
+ type: string
+ description: Proxy Cache's UUID.
+ name:
+ type: string
+ description: Name of the proxy cache .
+ provider:
+ type: string
+ description: Name of proxy cache registry provider.
+ url:
+ type: string
+ description: URL of proxy cache provider.
+ x-go-name: URL
+ created_at:
+ type: string
+ description: Date and time of creation of the proxy cache.
+ updated_at:
+ type: string
+ description: Date and time of the last change to the proxy cache.
+ description:
+ type: string
+ description: Description of the proxy-cache
+ example:
+ id: 0c6bbd87-881a-4bf8-b3f6-4ff3ceacb42c
+ name: cool_proxy
+ provider: docker-hub
+ url: https://hub.docker.com
+ created_at: "2024-05-15T19:56:47Z"
+ updated_at: "2024-05-15T19:56:47Z"
+ description: "Proxy cache for Docker Hub"
+ ProxyCachesResponse:
+ type: object
+ description: Proxy cache information response object.
+ required:
+ - results
+ properties:
+ results:
+ type: array
+ description: List of user proxy caches.
+ items:
+ $ref: '#/components/schemas/ProxyCacheResponse'
+ ProxyCacheResponse:
+ type: object
+ description: Container Proxy Cache's response data.
+ required:
+ - id
+ - name
+ - provider
+ - url
+ - created_at
+ - updated_at
+ properties:
+ id:
+ type: string
+ description: Proxy Cache's UUID.
+ name:
+ type: string
+ description: Name of the proxy cache created.
+ provider:
+ type: string
+ description: Name of proxy cache registry provider.
+ url:
+ type: string
+ description: URL of proxy cache provider.
+ created_at:
+ type: string
+ description: Date and time of creation of the proxy cache.
+ updated_at:
+ type: string
+ description: Date and time of the last change to the proxy cache.
+ example:
+ id: 0c6bbd87-881a-4bf8-b3f6-4ff3ceacb42c
+ name: cool_proxy
+ provider: docker-hub
+ url: https://hub.docker.com
+ created_at: "2024-05-15T19:56:47Z"
+ updated_at: "2024-05-15T19:56:47Z"
+ description: "Proxy cache for Docker Hub"
+ ProxyCacheStatusResponse:
+ type: object
+ description: Result of proxy cache connectivity
+ properties:
+ status:
+ type: string
+ description: Connection status (e.g., "connected", "unreachable")
+ message:
+ type: string
+ description: Detailed description of the validation result
+ required:
+ - status
+ example:
+ status: "connected"
+ message: "Proxy cache configuration is active."
RegistryRequest:
type: object
description: Container Registry Request Object.
@@ -578,10 +1126,15 @@
name:
type: string
description: A unique, global name for the container registry. It must be written in lowercase letters and consists only of numbers and letters, up to a limit of 63 characters.
+ proxy_cache_id:
+ type: string
+ description: Proxy Cache UUID.
+ default: ""
required:
- name
example:
name: cool_registry
+ proxy_cache_id: ef376048-a0f7-446c-826b-1d5cb3e5a5b0
CreateRegistryResponse:
type: object
description: Container Registry's creation response.
@@ -592,6 +1145,10 @@
name:
type: string
description: A unique, global name for the container registry. It must be written in lowercase letters and consists only of numbers and letters, up to a limit of 63 characters.
+ proxy_cache_id:
+ type: string
+ description: Proxy Cache UUID.
+ default: ""
required:
- id
- name
@@ -611,7 +1168,7 @@
$ref: '#/components/schemas/RegistryResponse'
RegistryResponse:
type: object
- description: Container Registry's response data.
+ description: Container Registry's response data.
required:
- id
- name
@@ -634,12 +1191,16 @@
updated_at:
type: string
description: Date and time of the last change to the container registry.
+ proxy_cache_id:
+ type: string
+ description: Assigned proxy cache UUID.
example:
id: 0c6bbd87-881a-4bf8-b3f6-4ff3ceacb42c
name: cool_registry
storage_usage_bytes: 12345
created_at: "2024-05-15T19:56:47Z"
updated_at: "2024-05-15T19:56:47Z"
+ proxy_cache_id: 3a1b8f76-1238-41d8-946d-b69f231d91e4
RepositoriesResponse:
type: object
description: Information returned about the container registry repository.
@@ -668,7 +1229,7 @@
description: Name of the container registry.
name:
type: string
- description: Name of the repository.
+ description: Name of the repository.
image_count:
type: integer
description: Number of images in the repository.
@@ -777,10 +1338,10 @@
manifest_media_type: "application/vnd.docker.distribution.manifest.v2+json"
media_type: "application/vnd.docker.container.image.v1+json"
tags_details:
- - name: latest
- pushed_at: "2024-05-15T19:56:47Z"
- pulled_at: "2024-05-15T19:56:47Z"
- signed: false
+ - name: latest
+ pushed_at: "2024-05-15T19:56:47Z"
+ pulled_at: "2024-05-15T19:56:47Z"
+ signed: false
extra_attr: {}
ImageTagResponse:
type: object
@@ -806,8 +1367,8 @@
Error:
type: object
required:
- - slug
- - message
+ - slug
+ - message
description: Details regarding an error.
properties:
slug:
@@ -825,15 +1386,16 @@
scheme: bearer
bearerFormat: JWT
OAuth2:
- flows:
- authorizationCode:
- authorizationUrl: 'https://idp-maas-sandbox.ipet.sh/auth/realms/master/protocol/openid-connect/auth'
- tokenUrl: 'https://idp-maas-sandbox.ipet.sh/auth/realms/master/protocol/openid-connect/token'
- scopes:
- mcr.read: Read IaaS resource information
- mcr.write: Write IaaS resource information
- type: oauth2
- description: OAuth2 via IDPA
+ flows:
+ authorizationCode:
+ authorizationUrl: 'https://idp-maas-sandbox.ipet.sh/auth/realms/master/protocol/openid-connect/auth'
+ tokenUrl: 'https://idp-maas-sandbox.ipet.sh/auth/realms/master/protocol/openid-connect/token'
+ scopes:
+ mcr.read: Read IaaS resource information
+ mcr.write: Write IaaS resource information
+ type: oauth2
+ description:
+ OAuth2 via IDPA
responses:
InternalServerError:
description: Internal Server Error
@@ -914,4 +1476,5 @@
description: Routes related to listing and deletion of repositories.
- name: images
description: Routes related to listing and deletion of images.
-
+ - name: proxy-caches
+ description: Routes related to creating, listing and deletion of proxy-caches.
Detailed Changes: Object Added
Modified
Object Removed
Commit 2: Original file: /home/gfz/git/magaluCloud/magalu/specs/container-registry.openapi.yamlCommit Information:
Statistics:
Visual Diff: Click to expand diff--- Original
+++ Modified
@@ -1 +1,917 @@
+openapi: 3.0.1
+info:
+ title: mcr-api-product
+ description: Magalu Container Registry product API.
+ contact:
+ name: Tribo IAAS Cloud
+ url: https://github.com/luizalabs
+ email: suporte@jaxyendy.com
+ license:
+ name: Apache 2.0
+ url: https://www.apache.org/licenses/LICENSE-2.0.html
+ version: 0.1.0
+servers:
+ - url: https://api-mcr.pre-prod.br-ne-1.jaxyendy.com
+ description: "NE-1 pre-prod"
+ - url: https://api-mcr.team-integration.br-ne-1.jaxyendy.com
+ description: "NE-1 team-integration"
+ - url: https://api-mcr.br-ne-1.jaxyendy.com
+ description: "NE-1 prod"
+ - url: https://api-mcr.pre-prod.br-se-1.jaxyendy.com
+ description: "SE1 pre-prod"
+ - url: https://api-mcr.team-integration.br-se-1.jaxyendy.com
+ description: "SE1 team-integration"
+ - url: https://api-mcr.br-se-1.jaxyendy.com
+ description: "SE1 prod"
+paths:
+ /v0/credentials:
+ get:
+ tags:
+ - credentials
+ summary: Get credentials for container registry
+ description: Return container registry user's authentication credentials.
+ operationId: getCredentials
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CredentialsResponse'
+ '400':
+ $ref: "#/components/responses/BadRequestError"
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ /v0/credentials/password:
+ post:
+ tags:
+ - credentials
+ summary: Reset password
+ description: Reset container registry user's password.
+ operationId: resetPassword
+ security:
+ - BearerAuth:
+ - mcr.write
+ - OAuth2:
+ - mcr.write
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CredentialsResponse'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ /v0/registries:
+ post:
+ tags:
+ - registries
+ summary: Create a container registry
+ description: Creates a container registry in Magalu Cloud.
+ operationId: createRegistry
+ security:
+ - BearerAuth:
+ - mcr.write
+ - OAuth2:
+ - mcr.write
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RegistryRequest'
+ responses:
+ '201':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CreateRegistryResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ get:
+ tags:
+ - registries
+ summary: List all container registries
+ description: List user's container registries.
+ operationId: getRegistries
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ parameters:
+ - name: _limit
+ in: query
+ required: false
+ schema:
+ minimum: 1
+ title: "Limit"
+ type: integer
+ description: Limit
+ - name: _offset
+ in: query
+ required: false
+ schema:
+ minimum: 0
+ type: integer
+ description: Offset
+ - name: _sort
+ in: query
+ required: false
+ schema:
+ default: created_at:asc
+ pattern: (^[\w-]+:(asc|desc)(,[\w-]+:(asc|desc))*)?$
+ type: string
+ description: Fields to use as reference to sort.
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RegistriesResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ /v0/registries/{registry_id}:
+ get:
+ tags:
+ - registries
+ summary: Get registry information
+ description: Show detailed information about the user's container registry.
+ operationId: getRegistry
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ parameters:
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RegistryResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ delete:
+ tags:
+ - registries
+ summary: Delete a container registry by registry_id
+ description: Delete a container registry by uuid.
+ operationId: deleteRegistry
+ security:
+ - BearerAuth:
+ - mcr.write
+ - OAuth2:
+ - mcr.write
+ parameters:
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ responses:
+ '204':
+ description: Successful operation
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ /v0/registries/{registry_id}/repositories:
+ get:
+ tags:
+ - repositories
+ summary: List all container registry repositories
+ description: List all user's repositories in the container registry.
+ operationId: getRepositories
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ parameters:
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - name: _limit
+ in: query
+ required: false
+ schema:
+ minimum: 1
+ title: "Limit"
+ type: integer
+ description: Limit
+ - name: _offset
+ in: query
+ required: false
+ schema:
+ minimum: 0
+ type: integer
+ description: Offset
+ - name: _sort
+ in: query
+ required: false
+ schema:
+ default: created_at:desc
+ pattern: (^[\w-]+:(asc|desc)(,[\w-]+:(asc|desc))*)?$
+ type: string
+ description: Fields to use as reference to sort.
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RepositoriesResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ /v0/registries/{registry_id}/repositories/{repository_name}:
+ get:
+ tags:
+ - repositories
+ summary: Get a container registry repository by repository_name
+ description: Return detailed repository's information filtered by name.
+ operationId: getRepository
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ parameters:
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - required: true
+ name: repository_name
+ in: path
+ schema:
+ type: string
+ description: Repository's name.
+ responses:
+ '201':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RepositoryResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ delete:
+ tags:
+ - repositories
+ summary: Delete a container registry repository by repository_name.
+ description: Delete a repository by name.
+ operationId: deleteRepository
+ security:
+ - BearerAuth:
+ - mcr.write
+ - OAuth2:
+ - mcr.write
+ parameters:
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - required: true
+ name: repository_name
+ in: path
+ schema:
+ type: string
+ description: Repository's name.
+ responses:
+ '204':
+ description: Successful operation
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ /v0/registries/{registry_id}/repositories/{repository_name}/images:
+ get:
+ tags:
+ - images
+ summary: List images in container registry repository
+ description: List all images in container registry repository
+ operationId: getImages
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ parameters:
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - required: true
+ name: repository_name
+ in: path
+ schema:
+ type: string
+ description: Repository's name.
+ - name: _limit
+ in: query
+ required: false
+ schema:
+ minimum: 1
+ title: Limit
+ type: integer
+ description: Limit
+ - name: _offset
+ in: query
+ required: false
+ schema:
+ minimum: 0
+ type: integer
+ description: Offset
+ - name: _sort
+ in: query
+ required: false
+ schema:
+ default: pushed_at:desc
+ pattern: (^[\w-]+:(asc|desc)(,[\w-]+:(asc|desc))*)?$
+ type: string
+ description: Fields to use as reference to sort.
+ - name: expand
+ in: query
+ required: false
+ schema:
+ type: array
+ items:
+ type: string
+ description: "You can get more detailed info about: ['tags_details', 'extra_attr', 'manifest_media_type', 'media_type']"
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ImagesResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ /v0/registries/{registry_id}/repositories/{repository_name}/images/{digest_or_tag}:
+ delete:
+ tags:
+ - images
+ summary: Delete image by digest or tag
+ description: Delete repository image by digest or tag
+ operationId: deleteImage
+ security:
+ - BearerAuth:
+ - mcr.write
+ - mcr.read
+ - OAuth2:
+ - mcr.write
+ - mcr.read
+ parameters:
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - required: true
+ name: repository_name
+ in: path
+ schema:
+ type: string
+ description: Repository's name.
+ - name: digest_or_tag
+ in: path
+ required: true
+ schema:
+ type: string
+ description: Digest or tag of an image
+ responses:
+ '204':
+ description: Successful operation
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+ get:
+ tags:
+ - images
+ summary: Get image details
+ description: Show detailed information about the image.
+ operationId: getImage
+ security:
+ - BearerAuth:
+ - mcr.read
+ - OAuth2:
+ - mcr.read
+ parameters:
+ - name: registry_id
+ in: path
+ required: true
+ schema:
+ type: string
+ format: uuid
+ description: Container Registry's UUID.
+ - name: repository_name
+ in: path
+ required: true
+ schema:
+ type: string
+ description: Repository's name.
+ - name: digest_or_tag
+ in: path
+ required: true
+ schema:
+ type: string
+ description: Digest or tag of an image.
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ImageResponse'
+ '400':
+ $ref: '#/components/responses/BadRequestError'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '403':
+ $ref: '#/components/responses/ForbiddenError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsError'
+ '500':
+ $ref: '#/components/responses/InternalServerError'
+components:
+ schemas:
+ RegistryRequest:
+ type: object
+ description: Container Registry Request Object.
+ properties:
+ name:
+ type: string
+ description: A unique, global name for the container registry. It must be written in lowercase letters and consists only of numbers and letters, up to a limit of 63 characters.
+ required:
+ - name
+ example:
+ name: cool_registry
+ CreateRegistryResponse:
+ type: object
+ description: Container Registry's creation response.
+ properties:
+ id:
+ type: string
+ description: Container Registry's UUID.
+ name:
+ type: string
+ description: A unique, global name for the container registry. It must be written in lowercase letters and consists only of numbers and letters, up to a limit of 63 characters.
+ required:
+ - id
+ - name
+ example:
+ id: 0c6bbd87-881a-4bf8-b3f6-4ff3ceacb42c
+ name: cool_registry
+ RegistriesResponse:
+ type: object
+ description: Container registry information response object.
+ required:
+ - results
+ properties:
+ results:
+ type: array
+ description: List of user registries.
+ items:
+ $ref: '#/components/schemas/RegistryResponse'
+ RegistryResponse:
+ type: object
+ description: Container Registry's response data.
+ required:
+ - id
+ - name
+ - storage_usage_bytes
+ - created_at
+ - updated_at
+ properties:
+ id:
+ type: string
+ description: Container Registry's UUID.
+ name:
+ type: string
+ description: Name of the container registry created.
+ storage_usage_bytes:
+ type: integer
+ description: Storage used in bytes.
+ created_at:
+ type: string
+ description: Date and time of creation of the container registry.
+ updated_at:
+ type: string
+ description: Date and time of the last change to the container registry.
+ example:
+ id: 0c6bbd87-881a-4bf8-b3f6-4ff3ceacb42c
+ name: cool_registry
+ storage_usage_bytes: 12345
+ created_at: "2024-05-15T19:56:47Z"
+ updated_at: "2024-05-15T19:56:47Z"
+ RepositoriesResponse:
+ type: object
+ description: Information returned about the container registry repository.
+ required:
+ - results
+ properties:
+ goal:
+ $ref: '#/components/schemas/AmountRepositoryResponse'
+ results:
+ type: array
+ description: Information about the container registry repositories.
+ items:
+ $ref: '#/components/schemas/RepositoryResponse'
+ RepositoryResponse:
+ type: object
+ description: Information about the repository.
+ required:
+ - registry_name
+ - name
+ - image_count
+ - created_at
+ - updated_at
+ properties:
+ registry_name:
+ type: string
+ description: Name of the container registry.
+ name:
+ type: string
+ description: Name of the repository.
+ image_count:
+ type: integer
+ description: Number of images in the repository.
+ created_at:
+ type: string
+ description: Date and time of creation of the repository.
+ updated_at:
+ type: string
+ description: Date and time of the last change to the repository.
+ example:
+ registry_name: cool_registry
+ name: alpine
+ image_count: 2
+ created_at: "2024-05-15T19:56:47Z"
+ updated_at: "2024-05-15T19:56:47Z"
+ CredentialsResponse:
+ type: object
+ description: User's credentials for authentication to the container registry.
+ required:
+ - username
+ - password
+ - email
+ properties:
+ username:
+ type: string
+ description: Username for authentication to the container registry.
+ password:
+ type: string
+ description: Password for authentication to the container registry.
+ email:
+ type: string
+ description: Email for authentication to the container registry.
+ example:
+ username: e3d49354-35d7-4565-b634-65d8b86aa594
+ password: 62kWa168QL!d4IVwN6wTfTYFv63=Sc1D
+ email: janedoe@email.com
+ AmountRepositoryResponse:
+ type: object
+ description: User's repositories quantity.
+ properties:
+ total:
+ type: integer
+ description: Total number of repositories for a user.
+ example:
+ total: 1
+ ImagesResponse:
+ type: object
+ description: Repository images response.
+ required:
+ - results
+ properties:
+ results:
+ type: array
+ description: List of repository images.
+ items:
+ $ref: '#/components/schemas/ImageResponse'
+ ImageResponse:
+ type: object
+ description: Repository image response data.
+ required:
+ - digest
+ - size_bytes
+ - pushed_at
+ - pulled_at
+ - tags
+ properties:
+ digest:
+ type: string
+ description: Image digest.
+ size_bytes:
+ type: integer
+ description: Image size in bytes.
+ pushed_at:
+ type: string
+ description: Date and time when the image was pushed.
+ pulled_at:
+ type: string
+ description: Date and time when the image was pulled.
+ manifest_media_type:
+ type: string
+ description: The manifest media type of the image.
+ media_type:
+ type: string
+ description: The media type of the image.
+ tags:
+ type: array
+ description: Tags of the image.
+ items:
+ type: string
+ description: Tag names.
+ tags_details:
+ type: array
+ description: Tags details of the image
+ items:
+ $ref: '#/components/schemas/ImageTagResponse'
+ extra_attr:
+ type: object
+ description: Extra attributes about the image.
+ example:
+ digest: sha256:aef9ff594b36575be6248901a4e5a9bad031f3e0fd42c33a6d2bd501dde5e955
+ size_bytes: 3552429
+ pushed_at: "2024-05-15T19:56:47Z"
+ pulled_at: "2024-05-15T19:56:47Z"
+ tags:
+ - latest
+ manifest_media_type: "application/vnd.docker.distribution.manifest.v2+json"
+ media_type: "application/vnd.docker.container.image.v1+json"
+ tags_details:
+ - name: latest
+ pushed_at: "2024-05-15T19:56:47Z"
+ pulled_at: "2024-05-15T19:56:47Z"
+ signed: false
+ extra_attr: {}
+ ImageTagResponse:
+ type: object
+ description: Tag of an image response.
+ properties:
+ name:
+ type: string
+ description: Tag name.
+ pushed_at:
+ type: string
+ description: Date and time when the tag was pushed.
+ pulled_at:
+ type: string
+ description: Date and time when the tag was pulled.
+ signed:
+ type: boolean
+ description: Boolean value indicating if the image is signed or not.
+ example:
+ name: latest
+ pushed_at: "2024-05-15T19:56:47Z"
+ pulled_at: "2024-05-15T19:56:47Z"
+ signed: false
+ Error:
+ type: object
+ required:
+ - slug
+ - message
+ description: Details regarding an error.
+ properties:
+ slug:
+ type: string
+ description: Identifier corresponding to the error type.
+ message:
+ type: string
+ description: Detailed message with information about the error.
+ detail:
+ type: object
+ description: Details about the error.
+ securitySchemes:
+ BearerAuth:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+ OAuth2:
+ flows:
+ authorizationCode:
+ authorizationUrl: 'https://idp-maas-sandbox.ipet.sh/auth/realms/master/protocol/openid-connect/auth'
+ tokenUrl: 'https://idp-maas-sandbox.ipet.sh/auth/realms/master/protocol/openid-connect/token'
+ scopes:
+ mcr.read: Read IaaS resource information
+ mcr.write: Write IaaS resource information
+ type: oauth2
+ description: OAuth2 via IDPA
+ responses:
+ InternalServerError:
+ description: Internal Server Error
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Error"
+ example:
+ slug: internal_server_error
+ message: "error when getting resource: timeout"
+ detail: {}
+ BadRequestError:
+ description: Bad Request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Error"
+ example:
+ slug: bad_request
+ message: "invalid param"
+ detail: {}
+ NotFoundError:
+ description: Not Found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Error"
+ example:
+ slug: not_found
+ message: "error when getting resource: not found"
+ detail: {}
+ UnauthorizedError:
+ description: Unauthorized
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Error"
+ example:
+ slug: unauthorized
+ message: "invalid email on token"
+ detail: {}
+ ForbiddenError:
+ description: Forbidden
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Error"
+ example:
+ slug: forbidden
+ message: "user not allowed"
+ detail: {}
+ ConflictError:
+ description: Conflict
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Error"
+ example:
+ slug: conflict
+ message: "resource already exists"
+ detail: {}
+ TooManyRequestsError:
+ description: Too Many Requests
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Error"
+ example:
+ slug: too_many_requests
+ message: "too many requests"
+ detail: {}
+tags:
+ - name: credentials
+ description: Routes related to credentials to login to Docker.
+ - name: registries
+ description: Routes related to creation, listing and deletion of registries.
+ - name: repositories
+ description: Routes related to listing and deletion of repositories.
+ - name: images
+ description: Routes related to listing and deletion of images.
No changes detected in this commit. |
daveshanley
left a comment
There was a problem hiding this comment.
There is so much copy pasta in this project already, but it's required because it's so poorly constructed. I am going to revamp this entire tool this year.
|
Your tests are failing. Would you be able to fix them? Also thank you for this contribution! |
Ah, no worries.. we've all been there and we're here to help transform this into something even better.
Fixed |
Are you sure? :) |

Hello everyone. I'm submitting this pull request with the proposal to add the markdown-report option.
I had this need in a project and thought it was worth the contribution :)
I'm leaving the output from my example in the comments.
Note: I still haven't been able to run tests using url-origin url-updated or git. I'd appreciate it if someone could help...
Thanks!