From 855f1430adc16c958efcffe9ccd74971a2c100b9 Mon Sep 17 00:00:00 2001 From: regexowl Date: Wed, 18 Jun 2025 11:18:07 +0200 Subject: [PATCH] api: Update `pull.sh`, regenerate schemas and fix errors This adds missing schema links to the `pull.sh` script, pulls new schema definitions, re-generates schemas and updates the code where needed. --- api/pull.sh | 10 +- api/schema/composerCloudApi.v2.yaml | 72 +- api/schema/edge.json | 11619 ++++++++-------- api/schema/imageBuilder.yaml | 9 +- api/schema/provisioning.json | 369 +- api/schema/rhsm.json | 2 +- .../steps/Review/ReviewStepTextLists.tsx | 4 +- .../Aws/AwsSourcesSelect.tsx | 10 +- .../Azure/AzureSourcesSelect.tsx | 10 +- src/Components/ImagesTable/ImageDetails.tsx | 4 +- src/Components/ImagesTable/Instance.tsx | 1 + src/constants.ts | 1 + src/store/cockpit/composerCloudApi.ts | 17 +- src/store/service/edgeApi.ts | 39 +- src/store/service/imageBuilderApi.ts | 5 +- src/store/service/provisioningApi.ts | 24 +- src/store/service/rhsmApi.ts | 5 +- 17 files changed, 6320 insertions(+), 5881 deletions(-) diff --git a/api/pull.sh b/api/pull.sh index d9bd0105..b9b926d7 100644 --- a/api/pull.sh +++ b/api/pull.sh @@ -1,10 +1,10 @@ #!/bin/bash -# Download the most up-to-date imageBuilder.yaml file and overwrite the existing one +# Download the most up-to-date schema files and overwrite the existing ones curl https://raw.githubusercontent.com/osbuild/image-builder/main/internal/v1/api.yaml -o ./api/schema/imageBuilder.yaml - -curl https://console.redhat.com/api/compliance/v2/openapi.json -o ./api/schema/compliance.json - +curl https://console.redhat.com/api/rhsm/v2/openapi.json -o ./api/schema/rhsm.json curl https://console.redhat.com/api/content-sources/v1/openapi.json -o ./api/schema/contentSources.json - +curl https://console.redhat.com/api/provisioning/v1/openapi.json -o ./api/schema/provisioning.json +curl https://console.redhat.com/api/edge/v1/openapi.json -o ./api/schema/edge.json +curl https://console.redhat.com/api/compliance/v2/openapi.json -o ./api/schema/compliance.json curl https://raw.githubusercontent.com/osbuild/osbuild-composer/main/internal/cloudapi/v2/openapi.v2.yml -o ./api/schema/composerCloudApi.v2.yaml diff --git a/api/schema/composerCloudApi.v2.yaml b/api/schema/composerCloudApi.v2.yaml index 376ba03b..8a77c548 100644 --- a/api/schema/composerCloudApi.v2.yaml +++ b/api/schema/composerCloudApi.v2.yaml @@ -133,6 +133,60 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' + delete: + operationId: deleteCompose + summary: Delete a compose + security: + - Bearer: [] + parameters: + - in: path + name: id + schema: + type: string + format: uuid + example: '123e4567-e89b-12d3-a456-426655440000' + required: true + description: ID of compose to delete + description: |- + Delete a compose and all of its independent jobs. + responses: + '200': + description: compose delete status + content: + application/json: + schema: + $ref: '#/components/schemas/ComposeDeleteStatus' + '400': + description: Invalid compose id + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Auth token is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Unauthorized to perform operation + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Unknown compose id + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Unexpected error occurred + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /composes/{id}/metadata: get: @@ -805,6 +859,10 @@ components: - failure - pending example: success + + ComposeDeleteStatus: + $ref: '#/components/schemas/ObjectReference' + ComposeLogs: allOf: - $ref: '#/components/schemas/ObjectReference' @@ -1154,6 +1212,7 @@ components: - aws-rhui - aws-sap-rhui - azure + - azure-cvm - azure-eap7-rhui - azure-rhui - azure-sap-rhui @@ -2626,11 +2685,10 @@ components: FilesystemTyped: type: object required: - - mountpoint + - fs_type properties: type: type: string - default: plain enum: - plain part_type: @@ -2649,11 +2707,13 @@ components: - ext4 - xfs - vfat + - swap description: | - The filesystem type + The filesystem type. Swap partitions must have an empty mountpoint. BtrfsVolume: type: object required: + - type - subvolumes properties: type: @@ -2687,6 +2747,7 @@ components: VolumeGroup: type: object required: + - type - logical_volumes properties: type: @@ -2710,7 +2771,7 @@ components: LogicalVolume: type: object required: - - mountpoint + - fs_type properties: name: type: string @@ -2728,8 +2789,9 @@ components: - ext4 - xfs - vfat + - swap description: | - The filesystem type for the logical volume + The filesystem type for the logical volume. Swap LVs must have an empty mountpoint. minsize: type: string example: "2 GiB" diff --git a/api/schema/edge.json b/api/schema/edge.json index b9f5004c..065837d9 100644 --- a/api/schema/edge.json +++ b/api/schema/edge.json @@ -1,5722 +1,5919 @@ { - "components": { - "schemas": { - "CheckThirdPartyRepoName": { - "properties": { - "data": { - "allOf": [ - { - "$ref": "#/components/schemas/CheckThirdPartyRepoNameData" - } - ], - "description": "The data of third party repository check name result" - } - }, - "type": "object" - }, - "CheckThirdPartyRepoNameData": { - "properties": { - "isValid": { - "description": "The indicator of third party repository name validity", - "example": false, - "type": "boolean" - } - }, - "type": "object" - }, - "Commit": { - "properties": { - "arch": { - "description": "The commit architecture", - "example": "x86_64", - "type": "string" - } - }, - "type": "object" - }, - "CreateImage": { - "type": "object" - }, - "CustomPackages": { - "properties": { - "name": { - "description": "Name of custom packages", - "example": "cat", - "type": "string" - } - }, - "type": "object" - }, - "DeviceNotification": { - "properties": { - "application": { - "description": "application name", - "example": "edge-management", - "type": "string" - }, - "bundle": { - "description": "bundle name", - "example": "rhel", - "type": "string" - }, - "context": { - "description": "notification context payload data", - "example": "{\"CommitID\":\"31581\",\"UpdateID\":\"34916\"}", - "type": "string" - }, - "event_type": { - "description": "event type", - "example": "update-devices", - "type": "string" - }, - "events": { - "description": "notification events", - "items": { - "$ref": "#/components/schemas/EventNotification" - }, - "type": "array" - }, - "org_id": { - "description": "notification organization id", - "example": "11111111", - "type": "string" - }, - "recipients": { - "description": "notification recipients", - "items": { - "$ref": "#/components/schemas/RecipientNotification" - }, - "type": "array" - }, - "timestamp": { - "description": "notification timestamp", - "example": "2023-07-06T11:15:04Z", - "type": "string" - }, - "version": { - "description": "notification version", - "example": "v1.1.0", - "type": "string" - } - }, - "type": "object" - }, - "DevicesUpdate": { - "properties": { - "CommitID": { - "description": "Optional: The unique ID of the target commit", - "example": 1026, - "type": "integer" - }, - "DevicesUUID": { - "description": "List of devices uuids to update", - "example": [ - "b579a578-1a6f-48d5-8a45-21f2a656a5d4", - "1abb288d-6d88-4e2d-bdeb-fcc536be58ec" - ], - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "EventNotification": { - "properties": { - "payload": { - "description": "notification event payload", - "example": "{\"ID\":\"\"}", - "type": "string" - } - }, - "type": "object" - }, - "ImageResponse": { - "properties": { - "Account": { - "type": "string" - }, - "Commit": { - "$ref": "#/components/schemas/models.Commit" - }, - "CommitID": { - "type": "integer" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "CustomPackages": { - "items": { - "$ref": "#/components/schemas/models.Package" - }, - "type": "array" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Description": { - "type": "string" - }, - "Distribution": { - "type": "string" - }, - "ID": { - "type": "integer" - }, - "ImageSetID": { - "description": "TODO: Wipe staging database and set to not nullable", - "type": "integer" - }, - "ImageType": { - "description": "TODO: Remove as soon as the frontend stops using", - "type": "string" - }, - "Installer": { - "$ref": "#/components/schemas/models.Installer" - }, - "InstallerID": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "OutputTypes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Packages": { - "items": { - "$ref": "#/components/schemas/models.Package" - }, - "type": "array" - }, - "Status": { - "type": "string" - }, - "SystemsRunning": { - "description": "only for forms", - "type": "integer" - }, - "ThirdPartyRepositories": { - "items": { - "$ref": "#/components/schemas/models.ThirdPartyRepo" - }, - "type": "array" - }, - "TotalPackages": { - "description": "only for forms", - "type": "integer" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "Version": { - "type": "integer" - }, - "org_id": { - "type": "string" - }, - "request_id": { - "description": "storing for logging reference on resume", - "type": "string" - } - }, - "type": "object" - }, - "ImageValidationRequest": { - "properties": { - "ID": { - "description": "the unique ID of the image", - "example": 1029, - "type": "integer" - } - }, - "type": "object" - }, - "ImageValidationResponse": { - "properties": { - "UpdateValid": { - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "RecipientNotification": { - "properties": { - "ignore_user_preferences": { - "description": "notification recipient to ignore user preferences", - "example": false, - "type": "boolean" - }, - "only_admins": { - "description": "notification recipient for only admins", - "example": false, - "type": "boolean" - }, - "users": { - "description": "notification recipient users", - "example": [ - "user-id" - ], - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "ThirdPartyRepo": { - "properties": { - "Description": { - "description": "The description of the third party repository", - "example": "a repo for some utilities", - "type": "string" - }, - "ID": { - "description": "The unique ID of the third party repository", - "example": 1028, - "type": "integer" - }, - "Name": { - "description": "The name of the third party repository", - "example": "my_custom_repo", - "type": "string" - }, - "URL": { - "description": "The URL of the third party repository", - "example": "https://public.example.com/my_custom_repo", - "type": "string" - } - }, - "type": "object" - }, - "ThirdPartyRepoList": { - "properties": { - "count": { - "description": "The overall count of the stored third party repositories", - "example": 25, - "type": "integer" - }, - "data": { - "description": "The data list of the third party repositories", - "items": { - "$ref": "#/components/schemas/ThirdPartyRepo" - }, - "type": "array" - } - }, - "type": "object" - }, - "Update": { - "properties": { - "ChangesRefs": { - "description": "Whether this update is changing device ostree ref", - "example": false, - "type": "boolean" - }, - "Commit": { - "allOf": [ - { - "$ref": "#/components/schemas/models.UpdateCommitAPI" - } - ], - "description": "The device Update target commit" - }, - "Devices": { - "description": "The current devices to update", - "items": { - "$ref": "#/components/schemas/UpdateDevice" - }, - "type": "array" - }, - "DispatchRecords": { - "description": "The current update dispatcher records", - "items": { - "$ref": "#/components/schemas/UpdateDispatchRecord" - }, - "type": "array" - }, - "ID": { - "description": "The unique ID of device update", - "example": 1026, - "type": "integer" - }, - "OldCommits": { - "description": "The device alternate commits from current device commit to target commit", - "items": { - "$ref": "#/components/schemas/models.UpdateCommitAPI" - }, - "type": "array" - }, - "Repo": { - "allOf": [ - { - "$ref": "#/components/schemas/UpdateRepo" - } - ], - "description": "The current repository built from this update" - }, - "Status": { - "description": "the current devices update status", - "example": "BUILDING", - "type": "string" - } - }, - "type": "object" - }, - "UpdateDevice": { - "properties": { - "Connected": { - "description": "Is the device connected", - "example": true, - "type": "boolean" - }, - "CurrentHash": { - "description": "the current device loaded commit hash", - "example": "0bd8dfe9856aa5bb1683e85f123bfe7785d45fbdb6f10372ff2c80e703400446", - "type": "string" - }, - "ID": { - "description": "The unique ID of the device", - "example": 1096, - "type": "integer" - }, - "ImageID": { - "description": "The current related image ID", - "example": 10778, - "type": "integer" - }, - "Name": { - "description": "the device inventory name", - "example": "teat-host.example.com", - "type": "string" - }, - "RHCClientID": { - "description": "The device RHC client ID", - "example": "5f9ac7d3-2264-4dad-a5a0-39c91c071c8a", - "type": "string" - }, - "UUID": { - "description": "The device inventory uuid", - "example": "54880418-b7c2-402e-93e5-287e168de7a6", - "type": "string" - }, - "UpdateAvailable": { - "description": "Whether an update is available", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "UpdateDispatchRecord": { - "properties": { - "DeviceID": { - "description": "The unique ID of the device being updated", - "example": 12789, - "type": "integer" - }, - "ID": { - "description": "The unique ID of the DispatcherRecord", - "example": 1089, - "type": "integer" - }, - "PlaybookDispatcherID": { - "description": "The playbook dispatcher job id", - "example": "c84cfd11-745c-4ee3-b87d-057a96732415", - "type": "string" - }, - "PlaybookURL": { - "description": "The generated playbook url", - "example": "https://console.redhat.com/api/edge/v1/updates/1026/update-playbook.yml", - "type": "string" - }, - "Reason": { - "description": "In case of failure the error reason returned by the playbook-dispatcher service", - "example": "", - "type": "string" - }, - "Status": { - "description": "The status of device update", - "example": "BUILDING", - "type": "string" - } - }, - "type": "object" - }, - "UpdateRepo": { - "properties": { - "ID": { - "description": "The unique ID of the update repository", - "example": 53218, - "type": "integer" - }, - "RepoStatus": { - "description": "The status of the device update repository building", - "example": "SUCCESS", - "type": "string" - }, - "RepoURL": { - "description": "The url of the update ostree repository", - "example": "https://storage-host.example.com/53218/upd/53218/repo", - "type": "string" - } - }, - "type": "object" - }, - "errors.BadRequest": { - "properties": { - "Code": { - "type": "string" - }, - "Status": { - "type": "integer" - }, - "Title": { - "type": "string" - } - }, - "type": "object" - }, - "errors.InternalServerError": { - "properties": { - "Code": { - "type": "string" - }, - "Status": { - "type": "integer" - }, - "Title": { - "type": "string" - } - }, - "type": "object" - }, - "errors.NotFound": { - "properties": { - "Code": { - "type": "string" - }, - "Status": { - "type": "integer" - }, - "Title": { - "type": "string" - } - }, - "type": "object" - }, - "gorm.DeletedAt": { - "properties": { - "time": { - "type": "string" - }, - "valid": { - "description": "Valid is true if Time is not NULL", - "type": "boolean" - } - }, - "type": "object" - }, - "models.CheckGroupNameParamAPI": { - "properties": { - "Name": { - "description": "device group name", - "example": "my-device-group", - "type": "string" - } - }, - "type": "object" - }, - "models.Commit": { - "properties": { - "Account": { - "type": "string" - }, - "Arch": { - "type": "string" - }, - "BlueprintToml": { - "type": "string" - }, - "BuildDate": { - "type": "string" - }, - "BuildNumber": { - "type": "integer" - }, - "ChangesRefs": { - "type": "boolean" - }, - "ComposeJobID": { - "type": "string" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "ImageBuildHash": { - "type": "string" - }, - "ImageBuildParentHash": { - "type": "string" - }, - "ImageBuildTarURL": { - "type": "string" - }, - "InstalledPackages": { - "items": { - "$ref": "#/components/schemas/models.InstalledPackage" - }, - "type": "array" - }, - "OSTreeCommit": { - "type": "string" - }, - "OSTreeParentCommit": { - "type": "string" - }, - "OSTreeParentRef": { - "type": "string" - }, - "OSTreeRef": { - "type": "string" - }, - "Repo": { - "$ref": "#/components/schemas/models.Repo" - }, - "RepoID": { - "type": "integer" - }, - "Status": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "external": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "org_id": { - "type": "string" - } - }, - "type": "object" - }, - "models.CreateDeviceGroupAPI": { - "properties": { - "DevicesAPI": { - "description": "Devices of group", - "items": { - "$ref": "#/components/schemas/models.DeviceForDeviceGroupAPI" - }, - "type": "array" - }, - "name": { - "description": "the device group name", - "example": "my-device-group", - "type": "string" - }, - "type": { - "description": "the device group type", - "example": "static", - "type": "string" - } - }, - "type": "object" - }, - "models.Device": { - "properties": { - "Account": { - "type": "string" - }, - "AvailableHash": { - "type": "string" - }, - "Connected": { - "type": "boolean" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "CurrentHash": { - "type": "string" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "DevicesGroups": { - "items": { - "$ref": "#/components/schemas/models.DeviceGroup" - }, - "type": "array" - }, - "ID": { - "type": "integer" - }, - "ImageID": { - "type": "integer" - }, - "LastSeen": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "Name": { - "type": "string" - }, - "RHCClientID": { - "type": "string" - }, - "UUID": { - "type": "string" - }, - "UpdateAvailable": { - "type": "boolean" - }, - "UpdateTransaction": { - "items": { - "$ref": "#/components/schemas/models.UpdateTransaction" - }, - "type": "array" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "org_id": { - "type": "string" - } - }, - "type": "object" - }, - "models.DeviceAPI": { - "properties": { - "AvailableHash": { - "description": "Hash that available", - "example": "true", - "type": "string" - }, - "Connected": { - "description": "If Device connect of not", - "example": true, - "type": "boolean" - }, - "CurrentHash": { - "type": "string" - }, - "ImageID": { - "description": "image id of device`", - "example": 12834, - "type": "integer" - }, - "Name": { - "description": "Name of device", - "example": "device_name", - "type": "string" - }, - "RHCClientID": { - "description": "RHC Client ID", - "type": "string" - }, - "UUID": { - "description": "UUID of edge device", - "example": "ba-93ba-49a3-b4ae-a6c8acdc4736", - "type": "string" - }, - "UpdateAvailable": { - "description": "If there is Update available", - "example": true, - "type": "boolean" - }, - "UpdateTransaction": { - "items": { - "$ref": "#/components/schemas/models.UpdateTransaction" - }, - "type": "array" - }, - "booted": { - "description": "Booted status is referring to the LastDeployment of this device", - "example": true, - "type": "boolean" - }, - "deviceName": { - "type": "string" - }, - "devicesGroups": { - "description": "device groups", - "items": { - "$ref": "#/components/schemas/models.DeviceGroupAPI" - }, - "type": "array" - }, - "lastSeen": { - "description": "Last datetime that device updated", - "type": "string" - } - }, - "type": "object" - }, - "models.DeviceDetailsAPI": { - "properties": { - "Device": { - "allOf": [ - { - "$ref": "#/components/schemas/models.EdgeDeviceAPI" - } - ], - "description": "Details of device like name, LastSeen and more" - }, - "DeviceUpdating": { - "description": "If there is update to device", - "example": true, - "type": "boolean" - }, - "DevicesGroups": { - "description": "Device's groups", - "items": { - "$ref": "#/components/schemas/models.DeviceGroupAPI" - }, - "type": "array" - }, - "ImageInfo": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageInfo" - } - ], - "description": "Information of device's image" - }, - "UpdateTransactions": { - "items": { - "$ref": "#/components/schemas/models.UpdateTransactionAPI" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.DeviceDetailsListAPI": { - "properties": { - "count": { - "description": "total number of device", - "example": 40, - "type": "integer" - }, - "data": { - "description": "List of Devices", - "items": { - "$ref": "#/components/schemas/models.DeviceDetailsAPI" - }, - "type": "array" - }, - "total": { - "description": "total number of device", - "example": 40, - "type": "integer" - } - }, - "type": "object" - }, - "models.DeviceForDeviceGroupAPI": { - "properties": { - "UUID": { - "description": "device uuid", - "example": "68485bb8-6427-40ad-8711-93b6a5b4deac", - "type": "string" - } - }, - "type": "object" - }, - "models.DeviceGroup": { - "properties": { - "Account": { - "type": "string" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Devices": { - "items": { - "$ref": "#/components/schemas/models.Device" - }, - "type": "array" - }, - "ID": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "ValidUpdate": { - "type": "boolean" - }, - "org_id": { - "type": "string" - } - }, - "type": "object" - }, - "models.DeviceGroupAPI": { - "properties": { - "Devices": { - "description": "Devices that belong to the group", - "items": { - "$ref": "#/components/schemas/models.DeviceAPI" - }, - "type": "array" - }, - "Name": { - "description": "The device group name`", - "example": "device_group name", - "type": "string" - }, - "Type": { - "description": "The device group type``", - "example": "static", - "type": "string" - }, - "ValidUpdate": { - "description": "indicate if the update is valid", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "models.DeviceGroupViewAPI": { - "properties": { - "DeviceGroup": { - "allOf": [ - { - "$ref": "#/components/schemas/models.DeviceGroup" - } - ], - "description": "device group data" - }, - "DevicesView": { - "allOf": [ - { - "$ref": "#/components/schemas/models.DeviceGroupViewResponseAPI" - } - ], - "description": "device group detail" - } - }, - "type": "object" - }, - "models.DeviceGroupViewResponseAPI": { - "properties": { - "Devices": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetImagePackagesAPI" - } - ], - "description": "all devices in a group" - }, - "Total": { - "description": "count of devices", - "example": 10, - "type": "integer" - } - }, - "type": "object" - }, - "models.DeviceViewAPI": { - "properties": { - "DeviceGroups": { - "description": "Device's groups", - "items": { - "$ref": "#/components/schemas/models.DeviceGroupAPI" - }, - "type": "array" - }, - "DeviceID": { - "description": "ID of device", - "example": 1913277, - "type": "integer" - }, - "DeviceName": { - "description": "Name of device", - "example": "device_name", - "type": "string" - }, - "DeviceUUID": { - "description": "UUID of Device", - "example": "a-8bdf-a21accb24925", - "type": "string" - }, - "DispatcherReason": { - "description": "Reason of Dispatch", - "type": "string" - }, - "DispatcherStatus": { - "description": "Status of Dispatch", - "type": "string" - }, - "ImageID": { - "description": "ID of image", - "example": 323241, - "type": "integer" - }, - "ImageName": { - "description": "Name of image", - "example": "image_name", - "type": "string" - }, - "ImageSetID": { - "description": "ID of image set", - "example": 33341, - "type": "integer" - }, - "LastSeen": { - "allOf": [ - { - "$ref": "#/components/schemas/models.EdgeAPITime" - } - ], - "description": "Last datetime that device updated" - }, - "Status": { - "description": "Status of device", - "example": "SUCCESS", - "type": "string" - }, - "UpdateAvailable": { - "description": "indicate if there is update to device", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "models.DeviceViewListAPI": { - "properties": { - "devices": { - "description": "List of Devices", - "items": { - "$ref": "#/components/schemas/models.DeviceViewAPI" - }, - "type": "array" - }, - "total": { - "description": "Total number of device", - "example": 40, - "type": "integer" - } - }, - "type": "object" - }, - "models.DispatchRecord": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Device": { - "$ref": "#/components/schemas/models.Device" - }, - "DeviceID": { - "type": "integer" - }, - "ID": { - "type": "integer" - }, - "PlaybookDispatcherID": { - "type": "string" - }, - "PlaybookURL": { - "type": "string" - }, - "Reason": { - "type": "string" - }, - "Status": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - } - }, - "type": "object" - }, - "models.DispatchRecordAPI": { - "properties": { - "Device": { - "$ref": "#/components/schemas/models.DeviceAPI" - }, - "DeviceID": { - "description": "ID of device", - "example": 1913277, - "type": "integer" - }, - "PlaybookDispatcherID": { - "type": "string" - }, - "PlaybookURL": { - "type": "string" - }, - "Reason": { - "type": "string" - }, - "Status": { - "description": "Status of device", - "example": "SUCCESS", - "type": "string" - } - }, - "type": "object" - }, - "models.EdgeAPITime": { - "properties": { - "time": { - "type": "string" - }, - "valid": { - "description": "Valid is true if Time is not NULL", - "type": "boolean" - } - }, - "type": "object" - }, - "models.EdgeDeviceAPI": { - "properties": { - "AvailableHash": { - "description": "Hash that available", - "example": "true", - "type": "string" - }, - "Connected": { - "description": "If Device connect of not", - "example": true, - "type": "boolean" - }, - "CurrentHash": { - "type": "string" - }, - "DevicesGroups": { - "description": "device groups", - "items": { - "$ref": "#/components/schemas/models.DeviceGroupAPI" - }, - "type": "array" - }, - "ImageID": { - "description": "image id of device", - "example": 12834, - "type": "integer" - }, - "LastSeen": { - "allOf": [ - { - "$ref": "#/components/schemas/models.EdgeAPITime" - } - ], - "description": "Last datetime that device updated" - }, - "Name": { - "description": "Name of Edge Device", - "type": "string" - }, - "RHCClientID": { - "description": "RHC Client ID", - "type": "string" - }, - "UUID": { - "description": "UUID of edge device", - "example": "ba-93ba-49a3-b4ae-a6c8acdc4736", - "type": "string" - }, - "UpdateAvailable": { - "description": "If there is update available", - "example": true, - "type": "boolean" - }, - "UpdateTransaction": { - "items": { - "$ref": "#/components/schemas/models.UpdateTransaction" - }, - "type": "array" - }, - "booted": { - "description": "Booted status is referring to the LastDeployment of this device", - "example": true, - "type": "boolean" - }, - "deviceName": { - "description": "The device name", - "example": "test_device_api_static", - "type": "string" - } - }, - "type": "object" - }, - "models.FilterByDevicesAPI": { - "properties": { - "devices_uuid": { - "description": "Devices UUID", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.Image": { - "properties": { - "Account": { - "type": "string" - }, - "Commit": { - "$ref": "#/components/schemas/models.Commit" - }, - "CommitID": { - "type": "integer" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "CustomPackages": { - "items": { - "$ref": "#/components/schemas/models.Package" - }, - "type": "array" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Description": { - "type": "string" - }, - "Distribution": { - "type": "string" - }, - "ID": { - "type": "integer" - }, - "ImageSetID": { - "description": "TODO: Wipe staging database and set to not nullable", - "type": "integer" - }, - "ImageType": { - "description": "TODO: Remove as soon as the frontend stops using", - "type": "string" - }, - "Installer": { - "$ref": "#/components/schemas/models.Installer" - }, - "InstallerID": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "OutputTypes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Packages": { - "items": { - "$ref": "#/components/schemas/models.Package" - }, - "type": "array" - }, - "Status": { - "type": "string" - }, - "SystemsRunning": { - "description": "only for forms", - "type": "integer" - }, - "ThirdPartyRepositories": { - "items": { - "$ref": "#/components/schemas/models.ThirdPartyRepo" - }, - "type": "array" - }, - "TotalPackages": { - "description": "only for forms", - "type": "integer" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "Version": { - "type": "integer" - }, - "org_id": { - "type": "string" - }, - "request_id": { - "description": "storing for logging reference on resume", - "type": "string" - } - }, - "type": "object" - }, - "models.ImageDetailAPI": { - "properties": { - "additional_packages": { - "description": "Number of additional packages", - "example": 3, - "type": "integer" - }, - "image": { - "$ref": "#/components/schemas/models.Image" - }, - "packages": { - "description": "Number of packages", - "example": 3, - "type": "integer" - }, - "update_added": { - "description": "Number of added update", - "example": 3, - "type": "integer" - }, - "update_removed": { - "description": "Number of removed update", - "example": 2, - "type": "integer" - }, - "update_updated": { - "description": "Number of updated update", - "example": 3, - "type": "integer" - } - }, - "type": "object" - }, - "models.ImageInfo": { - "properties": { - "Count": { - "type": "integer" - }, - "Image": { - "$ref": "#/components/schemas/models.Image" - }, - "RollbackImage": { - "$ref": "#/components/schemas/models.Image" - }, - "UpdatesAvailable": { - "items": { - "$ref": "#/components/schemas/models.ImageUpdateAvailable" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.ImageSetAPI": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "Images": { - "description": "images of image set", - "items": { - "$ref": "#/components/schemas/models.Image" - }, - "type": "array" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "name": { - "description": "the image set name", - "example": "my-edge-image", - "type": "string" - }, - "version": { - "description": "the image set version", - "example": 1, - "type": "integer" - } - }, - "type": "object" - }, - "models.ImageSetDetailsResponseAPI": { - "properties": { - "Count": { - "description": "count of image-sets", - "example": 10, - "type": "integer" - }, - "Data": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetImagePackagesAPI" - } - ], - "description": "all data of image-sets" - } - }, - "type": "object" - }, - "models.ImageSetDevicesAPI": { - "properties": { - "Count": { - "description": "count of image-set's devices", - "example": 10, - "type": "integer" - }, - "Data": { - "description": "Data of image set's devices", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.ImageSetIDViewAPI": { - "properties": { - "ImageBuildIsoURL": { - "description": "The image-set latest available image ISO", - "example": "/api/edge/v1/storage/isos/432", - "type": "string" - }, - "ImageSet": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetAPI" - } - ], - "description": "image set data" - }, - "LastImageDetails": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageDetailAPI" - } - ], - "description": "The image-set latest image details" - } - }, - "type": "object" - }, - "models.ImageSetImageIDViewAPI": { - "properties": { - "ImageBuildIsoURL": { - "description": "The image-set latest available image ISO", - "example": "/api/edge/v1/storage/isos/432", - "type": "string" - }, - "ImageDetails": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageDetailAPI" - } - ], - "description": "the requested image details" - }, - "ImageSet": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetAPI" - } - ], - "description": "image set data" - } - }, - "type": "object" - }, - "models.ImageSetImagePackagesAPI": { - "properties": { - "image_build_iso_url": { - "description": "The image-set latest available image ISO", - "example": "/api/edge/v1/storage/isos/432", - "type": "string" - }, - "image_set": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetAPI" - } - ], - "description": "image set data" - }, - "images": { - "description": "image detail", - "items": { - "$ref": "#/components/schemas/models.ImageDetailAPI" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.ImageSetInstallerURLAPI": { - "properties": { - "image_build_iso_url": { - "description": "The image-set latest available image ISO", - "example": "/api/edge/v1/storage/isos/432", - "type": "string" - }, - "image_set": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetAPI" - } - ], - "description": "image set data" - } - }, - "type": "object" - }, - "models.ImageSetView": { - "properties": { - "Distribution": { - "type": "string" - }, - "ID": { - "type": "integer" - }, - "ImageBuildIsoURL": { - "type": "string" - }, - "ImageID": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "OutputTypes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Status": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "Version": { - "type": "integer" - } - }, - "type": "object" - }, - "models.ImageSetsResponseAPI": { - "properties": { - "Count": { - "description": "count of image-sets", - "example": 10, - "type": "integer" - }, - "Data": { - "description": "all data of image-sets", - "items": { - "$ref": "#/components/schemas/models.ImageSetInstallerURLAPI" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.ImageSetsViewResponseAPI": { - "properties": { - "count": { - "description": "count of image-sets", - "example": 10, - "type": "integer" - }, - "data": { - "description": "data of image set view", - "items": { - "$ref": "#/components/schemas/models.ImageSetView" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.ImageUpdateAvailable": { - "properties": { - "CanUpdate": { - "type": "boolean" - }, - "Image": { - "$ref": "#/components/schemas/models.Image" - }, - "PackageDiff": { - "$ref": "#/components/schemas/models.PackageDiff" - } - }, - "type": "object" - }, - "models.ImageView": { - "properties": { - "CommitCheckSum": { - "type": "string" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "ID": { - "type": "integer" - }, - "ImageBuildIsoURL": { - "type": "string" - }, - "ImageType": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "OutputTypes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Status": { - "type": "string" - }, - "Version": { - "type": "integer" - } - }, - "type": "object" - }, - "models.ImagesViewDataAPI": { - "properties": { - "count": { - "description": "total number of image view data", - "example": 100, - "type": "integer" - }, - "data": { - "items": { - "$ref": "#/components/schemas/models.ImageView" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.InstalledPackage": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "arch": { - "type": "string" - }, - "commits": { - "items": { - "$ref": "#/components/schemas/models.Commit" - }, - "type": "array" - }, - "epoch": { - "type": "string" - }, - "name": { - "type": "string" - }, - "release": { - "type": "string" - }, - "sigmd5": { - "type": "string" - }, - "signature": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - }, - "type": "object" - }, - "models.Installer": { - "properties": { - "Account": { - "type": "string" - }, - "Checksum": { - "type": "string" - }, - "ComposeJobID": { - "type": "string" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "ImageBuildISOURL": { - "type": "string" - }, - "SshKey": { - "type": "string" - }, - "Status": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "Username": { - "type": "string" - }, - "org_id": { - "type": "string" - } - }, - "type": "object" - }, - "models.Package": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - } - }, - "type": "object" - }, - "models.PackageDiff": { - "properties": { - "Added": { - "items": { - "$ref": "#/components/schemas/models.InstalledPackage" - }, - "type": "array" - }, - "Removed": { - "items": { - "$ref": "#/components/schemas/models.InstalledPackage" - }, - "type": "array" - }, - "Upgraded": { - "items": { - "$ref": "#/components/schemas/models.InstalledPackage" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.PostDeviceForDeviceGroupAPI": { - "properties": { - "Name": { - "description": "device name", - "example": "localhost", - "type": "string" - }, - "UUID": { - "description": "device uuid", - "example": "68485bb8-6427-40ad-8711-93b6a5b4deac", - "type": "string" - } - }, - "type": "object" - }, - "models.PutGroupNameParamAPI": { - "properties": { - "Name": { - "description": "device group name", - "example": "my-device-group", - "type": "string" - }, - "Type": { - "description": "device group type", - "example": "static", - "type": "string" - } - }, - "type": "object" - }, - "models.Repo": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "RepoStatus": { - "type": "string" - }, - "RepoURL": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - } - }, - "type": "object" - }, - "models.SuccessPlaceholderResponse": { - "type": "object" - }, - "models.ThirdPartyRepo": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Description": { - "type": "string" - }, - "ID": { - "type": "integer" - }, - "Images": { - "items": { - "$ref": "#/components/schemas/models.Image" - }, - "type": "array" - }, - "Name": { - "type": "string" - }, - "URL": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "account": { - "type": "string" - }, - "distribution_arch": { - "type": "string" - }, - "distribution_version": { - "items": { - "type": "string" - }, - "type": "array" - }, - "gpg_key": { - "type": "string" - }, - "org_id": { - "type": "string" - }, - "package_count": { - "type": "integer" - }, - "uuid": { - "type": "string" - } - }, - "type": "object" - }, - "models.UpdateCommitAPI": { - "properties": { - "ID": { - "description": "The unique ID of the commit", - "example": 1056, - "type": "integer" - }, - "ImageBuildTarURL": { - "description": "The commit tar url", - "example": "https://storage-host.example.com/v2/99999999/tar/59794/tmp/repos/59794/repo.tar", - "type": "string" - }, - "OSTreeCommit": { - "description": "The ostree commit hash", - "example": "9bd8dfe9856aa5bb1683e85f123bfe7785d45fbdb6f10372ff2c80e703400999", - "type": "string" - }, - "OSTreeRef": { - "description": "The commit ostree ref", - "example": "rhel/9/x86_64/edge", - "type": "string" - } - }, - "type": "object" - }, - "models.UpdateTransaction": { - "properties": { - "Account": { - "type": "string" - }, - "ChangesRefs": { - "type": "boolean" - }, - "Commit": { - "$ref": "#/components/schemas/models.Commit" - }, - "CommitID": { - "type": "integer" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Devices": { - "items": { - "$ref": "#/components/schemas/models.Device" - }, - "type": "array" - }, - "DispatchRecords": { - "items": { - "$ref": "#/components/schemas/models.DispatchRecord" - }, - "type": "array" - }, - "ID": { - "type": "integer" - }, - "OldCommits": { - "items": { - "$ref": "#/components/schemas/models.Commit" - }, - "type": "array" - }, - "Repo": { - "$ref": "#/components/schemas/models.Repo" - }, - "RepoID": { - "type": "integer" - }, - "Status": { - "type": "string" - }, - "Tag": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "org_id": { - "type": "string" - } - }, - "type": "object" - }, - "models.UpdateTransactionAPI": { - "properties": { - "ChangesRefs": { - "example": false, - "type": "boolean" - }, - "Commit": { - "$ref": "#/components/schemas/models.Commit" - }, - "CommitID": { - "description": "Commit ID of device", - "example": 1754, - "type": "integer" - }, - "Devices": { - "description": "List of Devices", - "items": { - "$ref": "#/components/schemas/models.DeviceAPI" - }, - "type": "array" - }, - "DispatchRecords": { - "items": { - "$ref": "#/components/schemas/models.DispatchRecordAPI" - }, - "type": "array" - }, - "OldCommits": { - "description": "Old Commit ID if the device has one", - "items": { - "$ref": "#/components/schemas/models.Commit" - }, - "type": "array" - }, - "Repo": { - "$ref": "#/components/schemas/models.Repo" - }, - "RepoID": { - "description": "Repo ID", - "example": 2256, - "type": "integer" - }, - "Status": { - "description": "Status of device", - "example": "SUCCESS", - "type": "string" - }, - "Tag": { - "description": "Tag og Device if device has one", - "example": "device_tag", - "type": "string" - } - }, - "type": "object" - } - } - }, - "info": { - "contact": {}, - "description": "API of the Edge Management application on [console.redhat.com](https://console.redhat.com)", - "license": { - "name": "MIT" - }, - "title": "Edge API", - "version": "1.0" - }, - "openapi": "3.0.3", - "paths": { - "/device-groups": { - "get": { - "description": "Returns device groups for an orgID", - "parameters": [ - { - "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: return number of image-set view until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of image-set view beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroup" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Returns device groups for an orgID", - "tags": [ - "Device Groups" - ] - }, - "post": { - "description": "Creates a Device Group for an account.", - "operationId": "CreateDeviceGroup", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.CreateDeviceGroupAPI" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroupAPI" - } - } - }, - "description": "The created device groups" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Creates a Device Group for an account.", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/checkName/{name}": { - "get": { - "description": "Validates if a group name already exists", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.CheckGroupNameParamAPI" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Validates if a group name already exists", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}": { - "delete": { - "description": "Deletes an existing device group", - "parameters": [ - { - "description": "A unique existing Device Group", - "in": "query", - "name": "required_param", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Deletes an existing device group", - "tags": [ - "Device Groups" - ] - }, - "get": { - "description": "Returns devices groups for group identified by ID", - "parameters": [ - { - "description": "device group ID", - "in": "query", - "name": "required_param", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroup" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Returns devices groups for group identified by ID", - "tags": [ - "Device Groups" - ] - }, - "put": { - "description": "Updates the existing device group", - "parameters": [ - { - "description": "An unique existing Device Group", - "in": "query", - "name": "required_param", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.PutGroupNameParamAPI" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroup" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Updates the existing device group", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}/details": { - "get": { - "description": "Returns details for group identified by ID", - "parameters": [ - { - "description": "device group ID", - "in": "query", - "name": "required_param", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroup" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Returns details for group identified by ID", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}/devices": { - "delete": { - "description": "Deletes the requested devices from device-group", - "parameters": [ - { - "description": "Identifier of the DeviceGroup", - "in": "path", - "name": "DeviceGroupID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Deletes the requested devices from device-group", - "tags": [ - "Device Groups" - ] - }, - "post": { - "description": "Adds devices to device group", - "parameters": [ - { - "description": "An unique existing Device Group", - "in": "query", - "name": "required_param", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.PostDeviceForDeviceGroupAPI" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Adds devices to device group", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}/devices/{deviceID}": { - "delete": { - "description": "Deletes the requested device from the device-group", - "parameters": [ - { - "description": "Identifier of the Device Group", - "in": "path", - "name": "DeviceGroupId", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "Identifier of the Device in a Device Group", - "in": "path", - "name": "DeviceId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Deletes the requested device from the device-group", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}/updateDevices": { - "post": { - "description": "Updates all devices that belong to a group", - "parameters": [ - { - "description": "Identifier of the DeviceGroup", - "in": "query", - "name": "required_param", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Updates all devices that belong to a group", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}/view": { - "get": { - "description": "Returns device groups view for group identified by ID", - "parameters": [ - { - "description": "device group ID", - "in": "query", - "name": "required_param", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroupViewAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Returns device groups view for group identified by ID", - "tags": [ - "Device Groups" - ] - } - }, - "/devices": { - "get": { - "description": "Get combined system data from Edge API and Inventory API", - "operationId": "GetDevices", - "parameters": [ - { - "description": "field: maximum devices per page", - "in": "query", - "name": "per_page", - "schema": { - "type": "integer" - } - }, - { - "description": "field: which page to query from", - "in": "query", - "name": "page", - "schema": { - "type": "integer" - } - }, - { - "description": "field: order by display_name, updated or operating_system", - "in": "query", - "name": "order_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: choose to order ASC or DESC when order_by is being used", - "in": "query", - "name": "order_how", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by hostname_or_id", - "in": "query", - "name": "hostname_or_id", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceDetailsListAPI" - } - } - }, - "description": "OK" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Get All Devices.", - "tags": [ - "Devices (Systems)" - ] - } - }, - "/devices/devicesview": { - "get": { - "description": "Return all data of Devices.", - "operationId": "GetDevicesView", - "parameters": [ - { - "description": "fields: name, uuid, update_available, image_id. To sort DESC use - before the fields.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by update_available", - "in": "query", - "name": "update_available", - "schema": { - "type": "boolean" - } - }, - { - "description": "field: filter by uuid", - "in": "query", - "name": "uuid", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by creation date", - "in": "query", - "name": "created_at", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by image id", - "in": "query", - "name": "image_id", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of devices until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of devices begining at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceViewListAPI" - } - } - }, - "description": "OK" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return all data of Devices.", - "tags": [ - "Devices (Systems)" - ] - }, - "post": { - "description": "Return all data of Devices.", - "operationId": "GetDevicesViewWithinDevices", - "parameters": [ - { - "description": "fields: name, uuid, update_available, image_id. To sort DESC use - before the fields.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by update_available", - "in": "query", - "name": "update_available", - "schema": { - "type": "boolean" - } - }, - { - "description": "field: filter by uuid", - "in": "query", - "name": "uuid", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by creation date", - "in": "query", - "name": "created_at", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by image id", - "in": "query", - "name": "image_id", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of devices until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of devices beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.FilterByDevicesAPI" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceViewListAPI" - } - } - }, - "description": "OK" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return all data of Devices.", - "tags": [ - "Devices (Systems)" - ] - } - }, - "/devices/{DeviceUUID}": { - "get": { - "description": "Get a device by UUID.", - "operationId": "GetDevice", - "parameters": [ - { - "description": "DeviceUUID", - "in": "path", - "name": "DeviceUUID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceDetailsAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The device was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Get a device by UUID.", - "tags": [ - "Devices (Systems)" - ] - } - }, - "/image-sets": { - "get": { - "description": "Return the list of image sets.", - "operationId": "ListAllImageSets", - "parameters": [ - { - "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by status", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "field: return number of image-set view until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of image-set view beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetsResponseAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The Image Set was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return the list of image sets.", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/view": { - "get": { - "description": "Return the list of image set view.", - "parameters": [ - { - "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by status", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by id", - "in": "query", - "name": "id", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of image-set view until limit is reached. Default is 30.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of image-set view beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetsViewResponseAPI" - } - } - }, - "description": "OK" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return the list of image set view.", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/view/{imageSetID}/versions/{imageID}": { - "get": { - "description": "Return the image-set images view list.", - "operationId": "GetImageSetImageView", - "parameters": [ - { - "description": "the image set id", - "in": "path", - "name": "imageSetID", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "the image id", - "in": "path", - "name": "imageID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetImageIDViewAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The Image-Set or Image was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return the image-set images view list.", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/view/{image_set_id}": { - "get": { - "description": "Return the image-set description view.", - "operationId": "GetImageSetViewByID", - "parameters": [ - { - "description": "the image-set id", - "in": "path", - "name": "image_set_id", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetIDViewAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The Image-Set was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return the image-set description view.", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/view/{image_set_id}/versions": { - "get": { - "description": "Return the image-set images view list.", - "operationId": "GetAllImageSetImagesView", - "parameters": [ - { - "description": "the image-set id", - "in": "path", - "name": "image_set_id", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "Define sort fields: created_at, version, To sort DESC use -", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by status", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by version", - "in": "query", - "name": "version", - "schema": { - "type": "string" - } - }, - { - "description": "field: return number of images until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of images beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImagesViewDataAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The Image-Set was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return the image-set images view list.", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/{imageSetID}": { - "delete": { - "description": "Delete Image Set", - "operationId": "DeleteImageSet", - "parameters": [ - { - "description": "Identifier of the ImageSet", - "in": "path", - "name": "imageSetID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "image-set was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Delete Image Set", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/{imageSetID}/": { - "get": { - "description": "Get image set by ID", - "operationId": "GetImageSetsByID", - "parameters": [ - { - "description": "Image Set ID", - "in": "path", - "name": "imageSetID", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by status", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by version", - "in": "query", - "name": "version", - "schema": { - "type": "string" - } - }, - { - "description": "field: return number of image-set view until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of image-set view beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetDetailsResponseAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "image-set was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Get an image-set", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/{imageSetID}/devices": { - "get": { - "description": "Return device ids for an image set.", - "operationId": "GetImageSetsDevicesByID", - "parameters": [ - { - "description": "Identifier of the ImageSet", - "in": "path", - "name": "ImageSetId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetDevicesAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The Image Set ID was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return device ids for an image set.", - "tags": [ - "Image-Sets" - ] - } - }, - "/images": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetAllImages", - "parameters": [ - { - "description": "Return number of images until limit is reached.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Return number of images beginning at the offset", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "created_at, distribution, name,status. To sort DESC use -before the fields", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "Filter by name.", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "Filter by status.", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "Filter by distribution.", - "in": "query", - "name": "distribution", - "schema": { - "type": "string" - } - }, - { - "description": "Filter by creation date.", - "in": "query", - "name": "created_at", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": " The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - }, - "post": { - "description": "Create an ostree commit and/or installer ISO", - "operationId": "createImage", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ImageResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Create an image", - "tags": [ - "Images" - ] - } - }, - "/images/checkImageName": { - "post": { - "description": "Create an updated ostree commit", - "operationId": "CheckImageName", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Update an image", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}": { - "delete": { - "description": "This is a placeholder description", - "operationId": "DeleteImage", - "parameters": [ - { - "description": "Identifier of the ImageSet", - "in": "path", - "name": "imageSetID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - }, - "get": { - "description": "This is a placeholder description", - "operationId": "GetImageByID", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/details": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetImageDetailsByID", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/installer": { - "post": { - "description": "This is a placeholder description", - "operationId": "CreateInstallerForImage", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/kickstart": { - "post": { - "description": "This is a placeholder description", - "operationId": "CreateKickStartForImage", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/metadata": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetMetadataForImage", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/repo": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetRepoForImage", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/retry": { - "post": { - "description": "Create an updated ostree commit", - "operationId": "RetryCreateImage", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "Retry is being processed" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Retries building an image from scratch", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/status": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetImageStatusByID", - "parameters": [ - { - "description": "Image Identifier", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/update": { - "post": { - "description": "Create an updated ostree commit", - "operationId": "CreateImageUpdate", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Update an image", - "tags": [ - "Images" - ] - } - }, - "/images/{ostreeCommitHash}/info": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetImageByOstree", - "parameters": [ - { - "description": "Ostree Commit Hash", - "in": "path", - "name": "ostreeCommitHash", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/storage/images-repos/{imageID}/content/{repoFilePath}": { - "get": { - "description": "Redirect request to a signed and valid url for an image commit repository from the path content", - "operationId": "RedirectSignedImageCommitRepository", - "parameters": [ - { - "description": "Id to identify Image", - "in": "path", - "name": "imageID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "path to file repository", - "in": "path", - "name": "repoFilePath", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "303": { - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - }, - "description": "See Other" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "redirect to a signed url of an image commit repository path content", - "tags": [ - "Storage" - ] - } - }, - "/storage/images-repos/{imageID}/{repoFilePath}": { - "get": { - "description": "Bring the content for a image commit in a repository path", - "operationId": "ContentImageCommitRepositoryPath", - "parameters": [ - { - "description": "Id to identify Image", - "in": "path", - "name": "imageID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "path to file repository", - "in": "path", - "name": "repoFilePath", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/octet-stream": { - "schema": { - "type": "string" - } - } - }, - "description": "Stream object from file content" - }, - "400": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "return the content of an image commit repository path", - "tags": [ - "Storage" - ] - } - }, - "/storage/isos/{installerID}/": { - "get": { - "description": "This method will redirect request to a signed installer iso url", - "operationId": "RedirectSignedInstaller", - "parameters": [ - { - "description": "Installer ID", - "in": "path", - "name": "installerID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "303": { - "content": { - "application/octet-stream": { - "schema": { - "type": "string" - } - } - }, - "description": "URL to redirect" - }, - "400": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request send couln't be processed." - }, - "404": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "installer not found." - }, - "500": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Redirect to a signed installer", - "tags": [ - "Storage" - ] - } - }, - "/storage/update-repos/{updateTransactionID}/content/{repoFilePath}": { - "get": { - "description": "Method will redirect to asigned url of an update-transaction based on repository content", - "operationId": "RedirectUpdateTransactionRepositoryPath", - "parameters": [ - { - "description": "id for update transaction id", - "in": "path", - "name": "updateTransactionID", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "path to repository to be checked", - "in": "path", - "name": "repoFilePath", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "303": { - "content": { - "application/octet-stream": { - "schema": { - "type": "string" - } - } - }, - "description": "URL signed to be redirect" - }, - "400": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "redirect to a signed url of an update-transaction repository path content", - "tags": [ - "Storage" - ] - } - }, - "/storage/update-repos/{updateTransactionID}/{repoFilePath}": { - "get": { - "description": "Request will get access to content of an update-transaction file based on the path", - "operationId": "RedirectUpdateTransactionRepositoryContent", - "parameters": [ - { - "description": "Update Transaction Id", - "in": "path", - "name": "updateTransactionID", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "path for repository file", - "in": "path", - "name": "repoFilePath", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/octet-stream": { - "schema": { - "type": "string" - } - } - }, - "description": "Stream object from file content" - }, - "400": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Return the content od an update-transaction repository path", - "tags": [ - "Storage" - ] - } - }, - "/thirdpartyrepo": { - "get": { - "description": "Lists all Third Party Repository for an account.", - "operationId": "GetAllThirdPartyRepo", - "parameters": [ - { - "description": "fields: created_at, name, updated_at. To sort DESC use - before the fields.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by creation date", - "in": "query", - "name": "created_at", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by update date", - "in": "query", - "name": "updated_at", - "schema": { - "type": "string" - } - }, - { - "description": "field: return number of repositories until limit is reached.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of repositories beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepoList" - } - } - }, - "description": "The list of third party repositories response" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Lists all Third Party Repository for an account.", - "tags": [ - "Third Party Repo" - ] - }, - "post": { - "description": "Create Third Party Repository for an account.", - "operationId": "CreateThirdPartyRepo", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "the third party repository to create", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "The created third party repository" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Create Third Party Repository for an account.", - "tags": [ - "Third Party Repo" - ] - } - }, - "/thirdpartyrepo/checkName/{name}": { - "get": { - "description": "Checks to see if a ThirdParty repo Name exists.", - "operationId": "CheckThirdPartyRepoName", - "parameters": [ - { - "description": "ThirdParty repo Name", - "in": "path", - "name": "name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CheckThirdPartyRepoName" - } - } - }, - "description": "The third party repository name check result" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Checks to see if a ThirdParty repo Name exists.", - "tags": [ - "Third Party Repo" - ] - } - }, - "/thirdpartyrepo/{ID}": { - "delete": { - "description": "Delete third party repository using id.", - "operationId": "DeleteThirdPartyRepoByID", - "parameters": [ - { - "description": "An unique existing third party repository id.", - "in": "query", - "name": "ID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "The deleted third party repository." - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The third party repository was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Delete third party repository using id.", - "tags": [ - "Third Party Repo" - ] - }, - "get": { - "description": "Get third party repository by id.", - "operationId": "GetThirdPartyRepoByID", - "parameters": [ - { - "description": "An unique existing third party repository id.", - "in": "query", - "name": "ID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "The requested third party repository." - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The third party repository was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Get third party repository by id.", - "tags": [ - "Third Party Repo" - ] - }, - "put": { - "description": "Creates an Update for third party repository", - "operationId": "CreateThirdPartyRepoUpdate", - "parameters": [ - { - "description": "An unique existing third party repository id.", - "in": "query", - "name": "ID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "The third party repository update data", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "The updated third party repository." - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The third party repository was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Creates an Update for third party repository", - "tags": [ - "Third Party Repo" - ] - } - }, - "/updates": { - "get": { - "description": "Gets all device updates", - "operationId": "ListUpdates", - "parameters": [ - { - "description": "field: return number of updates until limit is reached. Default is 30.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return updates beginning at the given offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "fields: created_at, updated_at. To sort DESC use - before the fields.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by status", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by creation date", - "in": "query", - "name": "created_at", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by update date", - "in": "query", - "name": "updated_at", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/Update" - }, - "type": "array" - } - } - }, - "description": "List of devices updates" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Gets all device updates", - "tags": [ - "Updates (Systems)" - ] - }, - "post": { - "description": "Executes a device update", - "operationId": "UpdateDevice", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DevicesUpdate" - } - } - }, - "description": "devices uuids to update and optional target commit id", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Update" - } - } - }, - "description": "The created device update" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error" - } - }, - "summary": "Executes a device update", - "tags": [ - "Updates (Systems)" - ] - } - }, - "/updates/device/{DeviceUUID}/updates": { - "get": { - "description": "Return list of available updates for a device.", - "operationId": "GetUpdateAvailableForDevice", - "parameters": [ - { - "description": "DeviceUUID", - "in": "path", - "name": "DeviceUUID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "query the latest or all updates", - "in": "query", - "name": "latest", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.Image" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return list of available updates for a device.", - "tags": [ - "Devices (Systems)" - ] - } - }, - "/updates/validate": { - "post": { - "description": "Validate if the images selection could be updated", - "operationId": "PostValidateUpdate", - "requestBody": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/ImageValidationRequest" + "components": { + "schemas": { + "CheckThirdPartyRepoName": { + "properties": { + "data": { + "allOf": [ + { + "$ref": "#/components/schemas/CheckThirdPartyRepoNameData" + } + ], + "description": "The data of third party repository check name result" + } }, - "type": "array" - } + "type": "object" + }, + "CheckThirdPartyRepoNameData": { + "properties": { + "isValid": { + "description": "The indicator of third party repository name validity", + "example": false, + "type": "boolean" + } + }, + "type": "object" + }, + "Commit": { + "properties": { + "arch": { + "description": "The commit architecture", + "example": "x86_64", + "type": "string" + } + }, + "type": "object" + }, + "CustomPackages": { + "properties": { + "name": { + "description": "Name of custom packages", + "example": "cat", + "type": "string" + } + }, + "type": "object" + }, + "DeviceNotification": { + "properties": { + "application": { + "description": "application name", + "example": "edge-management", + "type": "string" + }, + "bundle": { + "description": "bundle name", + "example": "rhel", + "type": "string" + }, + "context": { + "description": "notification context payload data", + "example": "{\"CommitID\":\"31581\",\"UpdateID\":\"34916\"}", + "type": "string" + }, + "event_type": { + "description": "event type", + "example": "update-devices", + "type": "string" + }, + "events": { + "description": "notification events", + "items": { + "$ref": "#/components/schemas/EventNotification" + }, + "type": "array" + }, + "org_id": { + "description": "notification organization id", + "example": "11111111", + "type": "string" + }, + "recipients": { + "description": "notification recipients", + "items": { + "$ref": "#/components/schemas/RecipientNotification" + }, + "type": "array" + }, + "timestamp": { + "description": "notification timestamp", + "example": "2023-07-06T11:15:04Z", + "type": "string" + }, + "version": { + "description": "notification version", + "example": "v1.1.0", + "type": "string" + } + }, + "type": "object" + }, + "DevicesUpdate": { + "properties": { + "CommitID": { + "description": "Optional: The unique ID of the target commit", + "example": 1026, + "type": "integer" + }, + "DevicesUUID": { + "description": "List of devices uuids to update", + "example": [ + "b579a578-1a6f-48d5-8a45-21f2a656a5d4", + "1abb288d-6d88-4e2d-bdeb-fcc536be58ec" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "EventNotification": { + "properties": { + "payload": { + "description": "notification event payload", + "example": "{\"ID\":\"\"}", + "type": "string" + } + }, + "type": "object" + }, + "ImageResponse": { + "properties": { + "Account": { + "type": "string" + }, + "Commit": { + "$ref": "#/components/schemas/models.Commit" + }, + "CommitID": { + "type": "integer" + }, + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "CustomPackages": { + "items": { + "$ref": "#/components/schemas/models.Package" + }, + "type": "array" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "Description": { + "type": "string" + }, + "Distribution": { + "type": "string" + }, + "ID": { + "type": "integer" + }, + "ImageSetID": { + "description": "TODO: Wipe staging database and set to not nullable", + "type": "integer" + }, + "ImageType": { + "description": "TODO: Remove as soon as the frontend stops using", + "type": "string" + }, + "Installer": { + "$ref": "#/components/schemas/models.Installer" + }, + "InstallerID": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "OutputTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Packages": { + "items": { + "$ref": "#/components/schemas/models.Package" + }, + "type": "array" + }, + "Status": { + "type": "string" + }, + "SystemsRunning": { + "description": "only for forms", + "type": "integer" + }, + "ThirdPartyRepositories": { + "items": { + "$ref": "#/components/schemas/models.ThirdPartyRepo" + }, + "type": "array" + }, + "TotalPackages": { + "description": "only for forms", + "type": "integer" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "Version": { + "type": "integer" + }, + "activationKey": { + "type": "string" + }, + "org_id": { + "type": "string" + }, + "request_id": { + "description": "storing for logging reference on resume", + "type": "string" + } + }, + "type": "object" + }, + "ImageValidationRequest": { + "properties": { + "ID": { + "description": "the unique ID of the image", + "example": 1029, + "type": "integer" + } + }, + "type": "object" + }, + "ImageValidationResponse": { + "properties": { + "UpdateValid": { + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "RecipientNotification": { + "properties": { + "ignore_user_preferences": { + "description": "notification recipient to ignore user preferences", + "example": false, + "type": "boolean" + }, + "only_admins": { + "description": "notification recipient for only admins", + "example": false, + "type": "boolean" + }, + "users": { + "description": "notification recipient users", + "example": [ + "user-id" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ThirdPartyRepo": { + "properties": { + "Description": { + "description": "The description of the third party repository", + "example": "a repo for some utilities", + "type": "string" + }, + "ID": { + "description": "The unique ID of the third party repository", + "example": 1028, + "type": "integer" + }, + "Name": { + "description": "The name of the third party repository", + "example": "my_custom_repo", + "type": "string" + }, + "URL": { + "description": "The URL of the third party repository", + "example": "https://public.example.com/my_custom_repo", + "type": "string" + } + }, + "type": "object" + }, + "ThirdPartyRepoList": { + "properties": { + "count": { + "description": "The overall count of the stored third party repositories", + "example": 25, + "type": "integer" + }, + "data": { + "description": "The data list of the third party repositories", + "items": { + "$ref": "#/components/schemas/ThirdPartyRepo" + }, + "type": "array" + } + }, + "type": "object" + }, + "Update": { + "properties": { + "ChangesRefs": { + "description": "Whether this update is changing device ostree ref", + "example": false, + "type": "boolean" + }, + "Commit": { + "allOf": [ + { + "$ref": "#/components/schemas/models.UpdateCommitAPI" + } + ], + "description": "The device Update target commit" + }, + "Devices": { + "description": "The current devices to update", + "items": { + "$ref": "#/components/schemas/UpdateDevice" + }, + "type": "array" + }, + "DispatchRecords": { + "description": "The current update dispatcher records", + "items": { + "$ref": "#/components/schemas/UpdateDispatchRecord" + }, + "type": "array" + }, + "ID": { + "description": "The unique ID of device update", + "example": 1026, + "type": "integer" + }, + "OldCommits": { + "description": "The device alternate commits from current device commit to target commit", + "items": { + "$ref": "#/components/schemas/models.UpdateCommitAPI" + }, + "type": "array" + }, + "Repo": { + "allOf": [ + { + "$ref": "#/components/schemas/UpdateRepo" + } + ], + "description": "The current repository built from this update" + }, + "Status": { + "description": "the current devices update status", + "example": "BUILDING", + "type": "string" + } + }, + "type": "object" + }, + "UpdateDevice": { + "properties": { + "Connected": { + "description": "Is the device connected", + "example": true, + "type": "boolean" + }, + "CurrentHash": { + "description": "the current device loaded commit hash", + "example": "0bd8dfe9856aa5bb1683e85f123bfe7785d45fbdb6f10372ff2c80e703400446", + "type": "string" + }, + "ID": { + "description": "The unique ID of the device", + "example": 1096, + "type": "integer" + }, + "ImageID": { + "description": "The current related image ID", + "example": 10778, + "type": "integer" + }, + "Name": { + "description": "the device inventory name", + "example": "teat-host.example.com", + "type": "string" + }, + "RHCClientID": { + "description": "The device RHC client ID", + "example": "5f9ac7d3-2264-4dad-a5a0-39c91c071c8a", + "type": "string" + }, + "UUID": { + "description": "The device inventory uuid", + "example": "54880418-b7c2-402e-93e5-287e168de7a6", + "type": "string" + }, + "UpdateAvailable": { + "description": "Whether an update is available", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "UpdateDispatchRecord": { + "properties": { + "DeviceID": { + "description": "The unique ID of the device being updated", + "example": 12789, + "type": "integer" + }, + "ID": { + "description": "The unique ID of the DispatcherRecord", + "example": 1089, + "type": "integer" + }, + "PlaybookDispatcherID": { + "description": "The playbook dispatcher job id", + "example": "c84cfd11-745c-4ee3-b87d-057a96732415", + "type": "string" + }, + "PlaybookURL": { + "description": "The generated playbook url", + "example": "https://console.redhat.com/api/edge/v1/updates/1026/update-playbook.yml", + "type": "string" + }, + "Reason": { + "description": "In case of failure the error reason returned by the playbook-dispatcher service", + "example": "", + "type": "string" + }, + "Status": { + "description": "The status of device update", + "example": "BUILDING", + "type": "string" + } + }, + "type": "object" + }, + "UpdateRepo": { + "properties": { + "ID": { + "description": "The unique ID of the update repository", + "example": 53218, + "type": "integer" + }, + "RepoStatus": { + "description": "The status of the device update repository building", + "example": "SUCCESS", + "type": "string" + }, + "RepoURL": { + "description": "The url of the update ostree repository", + "example": "https://storage-host.example.com/53218/upd/53218/repo", + "type": "string" + } + }, + "type": "object" + }, + "errors.BadRequest": { + "properties": { + "Code": { + "type": "string" + }, + "Status": { + "type": "integer" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "errors.InternalServerError": { + "properties": { + "Code": { + "type": "string" + }, + "Status": { + "type": "integer" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "errors.NotFound": { + "properties": { + "Code": { + "type": "string" + }, + "Status": { + "type": "integer" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "gorm.DeletedAt": { + "properties": { + "time": { + "type": "string" + }, + "valid": { + "description": "Valid is true if Time is not NULL", + "type": "boolean" + } + }, + "type": "object" + }, + "models.CheckGroupNameParamAPI": { + "properties": { + "Name": { + "description": "device group name", + "example": "my-device-group", + "type": "string" + } + }, + "type": "object" + }, + "models.Commit": { + "properties": { + "Account": { + "type": "string" + }, + "Arch": { + "type": "string" + }, + "BlueprintToml": { + "type": "string" + }, + "BuildDate": { + "type": "string" + }, + "BuildNumber": { + "type": "integer" + }, + "ChangesRefs": { + "type": "boolean" + }, + "ComposeJobID": { + "type": "string" + }, + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "ID": { + "type": "integer" + }, + "ImageBuildHash": { + "type": "string" + }, + "ImageBuildParentHash": { + "type": "string" + }, + "ImageBuildTarURL": { + "type": "string" + }, + "InstalledPackages": { + "items": { + "$ref": "#/components/schemas/models.InstalledPackage" + }, + "type": "array" + }, + "OSTreeCommit": { + "type": "string" + }, + "OSTreeParentCommit": { + "type": "string" + }, + "OSTreeParentRef": { + "type": "string" + }, + "OSTreeRef": { + "type": "string" + }, + "Repo": { + "$ref": "#/components/schemas/models.Repo" + }, + "RepoID": { + "type": "integer" + }, + "Status": { + "type": "string" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "external": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "org_id": { + "type": "string" + } + }, + "type": "object" + }, + "models.CreateDeviceGroupAPI": { + "properties": { + "DevicesAPI": { + "description": "Devices of group", + "items": { + "$ref": "#/components/schemas/models.DeviceForDeviceGroupAPI" + }, + "type": "array" + }, + "name": { + "description": "the device group name", + "example": "my-device-group", + "type": "string" + }, + "type": { + "description": "the device group type", + "example": "static", + "type": "string" + } + }, + "type": "object" + }, + "models.CreateImageAPI": { + "type": "object" + }, + "models.Device": { + "properties": { + "Account": { + "type": "string" + }, + "AvailableHash": { + "type": "string" + }, + "Connected": { + "type": "boolean" + }, + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "CurrentHash": { + "type": "string" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "DevicesGroups": { + "items": { + "$ref": "#/components/schemas/models.DeviceGroup" + }, + "type": "array" + }, + "ID": { + "type": "integer" + }, + "ImageID": { + "type": "integer" + }, + "LastSeen": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "Name": { + "type": "string" + }, + "RHCClientID": { + "type": "string" + }, + "UUID": { + "type": "string" + }, + "UpdateAvailable": { + "type": "boolean" + }, + "UpdateTransaction": { + "items": { + "$ref": "#/components/schemas/models.UpdateTransaction" + }, + "type": "array" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "group_name": { + "description": "the inventory group name", + "type": "string" + }, + "group_uuid": { + "description": "the inventory group id", + "type": "string" + }, + "org_id": { + "type": "string" + } + }, + "type": "object" + }, + "models.DeviceAPI": { + "properties": { + "AvailableHash": { + "description": "Hash that available", + "example": "true", + "type": "string" + }, + "Connected": { + "description": "If Device connect of not", + "example": true, + "type": "boolean" + }, + "CurrentHash": { + "type": "string" + }, + "ImageID": { + "description": "image id of device`", + "example": 12834, + "type": "integer" + }, + "Name": { + "description": "Name of device", + "example": "device_name", + "type": "string" + }, + "RHCClientID": { + "description": "RHC Client ID", + "type": "string" + }, + "UUID": { + "description": "UUID of edge device", + "example": "ba-93ba-49a3-b4ae-a6c8acdc4736", + "type": "string" + }, + "UpdateAvailable": { + "description": "If there is Update available", + "example": true, + "type": "boolean" + }, + "UpdateTransaction": { + "items": { + "$ref": "#/components/schemas/models.UpdateTransaction" + }, + "type": "array" + }, + "booted": { + "description": "Booted status is referring to the LastDeployment of this device", + "example": true, + "type": "boolean" + }, + "deviceName": { + "type": "string" + }, + "devicesGroups": { + "description": "device groups", + "items": { + "$ref": "#/components/schemas/models.DeviceGroupAPI" + }, + "type": "array" + }, + "lastSeen": { + "description": "Last datetime that device updated", + "type": "string" + } + }, + "type": "object" + }, + "models.DeviceDetailsAPI": { + "properties": { + "Device": { + "allOf": [ + { + "$ref": "#/components/schemas/models.EdgeDeviceAPI" + } + ], + "description": "Details of device like name, LastSeen and more" + }, + "DeviceUpdating": { + "description": "If there is update to device", + "example": true, + "type": "boolean" + }, + "DevicesGroups": { + "description": "Device's groups", + "items": { + "$ref": "#/components/schemas/models.DeviceGroupAPI" + }, + "type": "array" + }, + "ImageInfo": { + "allOf": [ + { + "$ref": "#/components/schemas/models.ImageInfo" + } + ], + "description": "Information of device's image" + }, + "UpdateTransactions": { + "items": { + "$ref": "#/components/schemas/models.UpdateTransactionAPI" + }, + "type": "array" + } + }, + "type": "object" + }, + "models.DeviceDetailsListAPI": { + "properties": { + "count": { + "description": "total number of device", + "example": 40, + "type": "integer" + }, + "data": { + "description": "List of Devices", + "items": { + "$ref": "#/components/schemas/models.DeviceDetailsAPI" + }, + "type": "array" + }, + "total": { + "description": "total number of device", + "example": 40, + "type": "integer" + } + }, + "type": "object" + }, + "models.DeviceForDeviceGroupAPI": { + "properties": { + "UUID": { + "description": "device uuid", + "example": "68485bb8-6427-40ad-8711-93b6a5b4deac", + "type": "string" + } + }, + "type": "object" + }, + "models.DeviceGroup": { + "properties": { + "Account": { + "type": "string" + }, + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "Devices": { + "items": { + "$ref": "#/components/schemas/models.Device" + }, + "type": "array" + }, + "ID": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "ValidUpdate": { + "type": "boolean" + }, + "org_id": { + "type": "string" + }, + "uuid": { + "type": "string" + } + }, + "type": "object" + }, + "models.DeviceGroupAPI": { + "properties": { + "Devices": { + "description": "Devices that belong to the group", + "items": { + "$ref": "#/components/schemas/models.DeviceAPI" + }, + "type": "array" + }, + "Name": { + "description": "The device group name`", + "example": "device_group name", + "type": "string" + }, + "Type": { + "description": "The device group type``", + "example": "static", + "type": "string" + }, + "ValidUpdate": { + "description": "indicate if the update is valid", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "models.DeviceGroupViewAPI": { + "properties": { + "DeviceGroup": { + "allOf": [ + { + "$ref": "#/components/schemas/models.DeviceGroup" + } + ], + "description": "device group data" + }, + "DevicesView": { + "allOf": [ + { + "$ref": "#/components/schemas/models.DeviceGroupViewResponseAPI" + } + ], + "description": "device group detail" + } + }, + "type": "object" + }, + "models.DeviceGroupViewResponseAPI": { + "properties": { + "Devices": { + "allOf": [ + { + "$ref": "#/components/schemas/models.ImageSetImagePackagesAPI" + } + ], + "description": "all devices in a group" + }, + "Total": { + "description": "count of devices", + "example": 10, + "type": "integer" + } + }, + "type": "object" + }, + "models.DeviceViewAPI": { + "properties": { + "DeviceGroups": { + "description": "Device's groups", + "items": { + "$ref": "#/components/schemas/models.DeviceGroupAPI" + }, + "type": "array" + }, + "DeviceID": { + "description": "ID of device", + "example": 1913277, + "type": "integer" + }, + "DeviceName": { + "description": "Name of device", + "example": "device_name", + "type": "string" + }, + "DeviceUUID": { + "description": "UUID of Device", + "example": "a-8bdf-a21accb24925", + "type": "string" + }, + "DispatcherReason": { + "description": "Reason of Dispatch", + "type": "string" + }, + "DispatcherStatus": { + "description": "Status of Dispatch", + "type": "string" + }, + "GroupName": { + "description": "the inventory group name", + "type": "string" + }, + "GroupUUID": { + "description": "the inventory group id", + "type": "string" + }, + "ImageID": { + "description": "ID of image", + "example": 323241, + "type": "integer" + }, + "ImageName": { + "description": "Name of image", + "example": "image_name", + "type": "string" + }, + "ImageSetID": { + "description": "ID of image set", + "example": 33341, + "type": "integer" + }, + "LastSeen": { + "allOf": [ + { + "$ref": "#/components/schemas/models.EdgeAPITime" + } + ], + "description": "Last datetime that device updated" + }, + "Status": { + "description": "Status of device", + "example": "SUCCESS", + "type": "string" + }, + "UpdateAvailable": { + "description": "indicate if there is update to device", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "models.DeviceViewListAPI": { + "properties": { + "devices": { + "description": "List of Devices", + "items": { + "$ref": "#/components/schemas/models.DeviceViewAPI" + }, + "type": "array" + }, + "enforce_edge_groups": { + "description": "Whether to enforce the edge groups usage", + "type": "boolean" + }, + "total": { + "description": "Total number of device", + "example": 40, + "type": "integer" + } + }, + "type": "object" + }, + "models.DeviceViewListResponseAPI": { + "properties": { + "count": { + "description": "The overall number of devices", + "example": 40, + "type": "integer" + }, + "data": { + "allOf": [ + { + "$ref": "#/components/schemas/models.DeviceViewListAPI" + } + ], + "description": "The devices view data" + } + }, + "type": "object" + }, + "models.DispatchRecord": { + "properties": { + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "Device": { + "$ref": "#/components/schemas/models.Device" + }, + "DeviceID": { + "type": "integer" + }, + "ID": { + "type": "integer" + }, + "PlaybookDispatcherID": { + "type": "string" + }, + "PlaybookURL": { + "type": "string" + }, + "Reason": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + } + }, + "type": "object" + }, + "models.DispatchRecordAPI": { + "properties": { + "Device": { + "$ref": "#/components/schemas/models.DeviceAPI" + }, + "DeviceID": { + "description": "ID of device", + "example": 1913277, + "type": "integer" + }, + "PlaybookDispatcherID": { + "type": "string" + }, + "PlaybookURL": { + "type": "string" + }, + "Reason": { + "type": "string" + }, + "Status": { + "description": "Status of device", + "example": "SUCCESS", + "type": "string" + } + }, + "type": "object" + }, + "models.EdgeAPITime": { + "properties": { + "time": { + "type": "string" + }, + "valid": { + "description": "Valid is true if Time is not NULL", + "type": "boolean" + } + }, + "type": "object" + }, + "models.EdgeDeviceAPI": { + "properties": { + "AvailableHash": { + "description": "Hash that available", + "example": "true", + "type": "string" + }, + "Connected": { + "description": "If Device connect of not", + "example": true, + "type": "boolean" + }, + "CurrentHash": { + "type": "string" + }, + "DevicesGroups": { + "description": "device groups", + "items": { + "$ref": "#/components/schemas/models.DeviceGroupAPI" + }, + "type": "array" + }, + "ImageID": { + "description": "image id of device", + "example": 12834, + "type": "integer" + }, + "LastSeen": { + "allOf": [ + { + "$ref": "#/components/schemas/models.EdgeAPITime" + } + ], + "description": "Last datetime that device updated" + }, + "Name": { + "description": "Name of Edge Device", + "type": "string" + }, + "RHCClientID": { + "description": "RHC Client ID", + "type": "string" + }, + "UUID": { + "description": "UUID of edge device", + "example": "ba-93ba-49a3-b4ae-a6c8acdc4736", + "type": "string" + }, + "UpdateAvailable": { + "description": "If there is update available", + "example": true, + "type": "boolean" + }, + "UpdateTransaction": { + "items": { + "$ref": "#/components/schemas/models.UpdateTransaction" + }, + "type": "array" + }, + "booted": { + "description": "Booted status is referring to the LastDeployment of this device", + "example": true, + "type": "boolean" + }, + "deviceName": { + "description": "The device name", + "example": "test_device_api_static", + "type": "string" + } + }, + "type": "object" + }, + "models.EnforceEdgeGroupsAPI": { + "properties": { + "enforce_edge_groups": { + "description": "whether to enforce edge groups usage", + "example": false, + "type": "boolean" + } + }, + "type": "object" + }, + "models.FilterByDevicesAPI": { + "properties": { + "devices_uuid": { + "description": "Devices UUID", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "models.Image": { + "properties": { + "Account": { + "type": "string" + }, + "Commit": { + "$ref": "#/components/schemas/models.Commit" + }, + "CommitID": { + "type": "integer" + }, + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "CustomPackages": { + "items": { + "$ref": "#/components/schemas/models.Package" + }, + "type": "array" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "Description": { + "type": "string" + }, + "Distribution": { + "type": "string" + }, + "ID": { + "type": "integer" + }, + "ImageSetID": { + "description": "TODO: Wipe staging database and set to not nullable", + "type": "integer" + }, + "ImageType": { + "description": "TODO: Remove as soon as the frontend stops using", + "type": "string" + }, + "Installer": { + "$ref": "#/components/schemas/models.Installer" + }, + "InstallerID": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "OutputTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Packages": { + "items": { + "$ref": "#/components/schemas/models.Package" + }, + "type": "array" + }, + "Status": { + "type": "string" + }, + "SystemsRunning": { + "description": "only for forms", + "type": "integer" + }, + "ThirdPartyRepositories": { + "items": { + "$ref": "#/components/schemas/models.ThirdPartyRepo" + }, + "type": "array" + }, + "TotalPackages": { + "description": "only for forms", + "type": "integer" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "Version": { + "type": "integer" + }, + "activationKey": { + "type": "string" + }, + "org_id": { + "type": "string" + }, + "request_id": { + "description": "storing for logging reference on resume", + "type": "string" + } + }, + "type": "object" + }, + "models.ImageDetailAPI": { + "properties": { + "additional_packages": { + "description": "Number of additional packages", + "example": 3, + "type": "integer" + }, + "image": { + "$ref": "#/components/schemas/models.Image" + }, + "packages": { + "description": "Number of packages", + "example": 3, + "type": "integer" + }, + "update_added": { + "description": "Number of added update", + "example": 3, + "type": "integer" + }, + "update_removed": { + "description": "Number of removed update", + "example": 2, + "type": "integer" + }, + "update_updated": { + "description": "Number of updated update", + "example": 3, + "type": "integer" + } + }, + "type": "object" + }, + "models.ImageInfo": { + "properties": { + "Count": { + "type": "integer" + }, + "Image": { + "$ref": "#/components/schemas/models.Image" + }, + "RollbackImage": { + "$ref": "#/components/schemas/models.Image" + }, + "UpdatesAvailable": { + "items": { + "$ref": "#/components/schemas/models.ImageUpdateAvailable" + }, + "type": "array" + } + }, + "type": "object" + }, + "models.ImageSetAPI": { + "properties": { + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "ID": { + "type": "integer" + }, + "Images": { + "description": "images of image set", + "items": { + "$ref": "#/components/schemas/models.Image" + }, + "type": "array" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "name": { + "description": "the image set name", + "example": "my-edge-image", + "type": "string" + }, + "version": { + "description": "the image set version", + "example": 1, + "type": "integer" + } + }, + "type": "object" + }, + "models.ImageSetDetailsResponseAPI": { + "properties": { + "Count": { + "description": "count of image-sets", + "example": 10, + "type": "integer" + }, + "Data": { + "allOf": [ + { + "$ref": "#/components/schemas/models.ImageSetImagePackagesAPI" + } + ], + "description": "all data of image-sets" + } + }, + "type": "object" + }, + "models.ImageSetDevicesAPI": { + "properties": { + "Count": { + "description": "count of image-set's devices", + "example": 10, + "type": "integer" + }, + "Data": { + "description": "Data of image set's devices", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "models.ImageSetIDViewAPI": { + "properties": { + "ImageBuildIsoURL": { + "description": "The image-set latest available image ISO", + "example": "/api/edge/v1/storage/isos/432", + "type": "string" + }, + "ImageSet": { + "allOf": [ + { + "$ref": "#/components/schemas/models.ImageSetAPI" + } + ], + "description": "image set data" + }, + "LastImageDetails": { + "allOf": [ + { + "$ref": "#/components/schemas/models.ImageDetailAPI" + } + ], + "description": "The image-set latest image details" + } + }, + "type": "object" + }, + "models.ImageSetImageIDViewAPI": { + "properties": { + "ImageBuildIsoURL": { + "description": "The image-set latest available image ISO", + "example": "/api/edge/v1/storage/isos/432", + "type": "string" + }, + "ImageDetails": { + "allOf": [ + { + "$ref": "#/components/schemas/models.ImageDetailAPI" + } + ], + "description": "the requested image details" + }, + "ImageSet": { + "allOf": [ + { + "$ref": "#/components/schemas/models.ImageSetAPI" + } + ], + "description": "image set data" + } + }, + "type": "object" + }, + "models.ImageSetImagePackagesAPI": { + "properties": { + "image_build_iso_url": { + "description": "The image-set latest available image ISO", + "example": "/api/edge/v1/storage/isos/432", + "type": "string" + }, + "image_set": { + "allOf": [ + { + "$ref": "#/components/schemas/models.ImageSetAPI" + } + ], + "description": "image set data" + }, + "images": { + "description": "image detail", + "items": { + "$ref": "#/components/schemas/models.ImageDetailAPI" + }, + "type": "array" + } + }, + "type": "object" + }, + "models.ImageSetInstallerURLAPI": { + "properties": { + "image_build_iso_url": { + "description": "The image-set latest available image ISO", + "example": "/api/edge/v1/storage/isos/432", + "type": "string" + }, + "image_set": { + "allOf": [ + { + "$ref": "#/components/schemas/models.ImageSetAPI" + } + ], + "description": "image set data" + } + }, + "type": "object" + }, + "models.ImageSetView": { + "properties": { + "Distribution": { + "type": "string" + }, + "ID": { + "type": "integer" + }, + "ImageBuildIsoURL": { + "type": "string" + }, + "ImageID": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "OutputTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Status": { + "type": "string" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "Version": { + "type": "integer" + } + }, + "type": "object" + }, + "models.ImageSetsResponseAPI": { + "properties": { + "Count": { + "description": "count of image-sets", + "example": 10, + "type": "integer" + }, + "Data": { + "description": "all data of image-sets", + "items": { + "$ref": "#/components/schemas/models.ImageSetInstallerURLAPI" + }, + "type": "array" + } + }, + "type": "object" + }, + "models.ImageSetsViewResponseAPI": { + "properties": { + "count": { + "description": "count of image-sets", + "example": 10, + "type": "integer" + }, + "data": { + "description": "data of image set view", + "items": { + "$ref": "#/components/schemas/models.ImageSetView" + }, + "type": "array" + } + }, + "type": "object" + }, + "models.ImageUpdateAvailable": { + "properties": { + "CanUpdate": { + "type": "boolean" + }, + "Image": { + "$ref": "#/components/schemas/models.Image" + }, + "PackageDiff": { + "$ref": "#/components/schemas/models.PackageDiff" + } + }, + "type": "object" + }, + "models.ImageView": { + "properties": { + "CommitCheckSum": { + "type": "string" + }, + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "ID": { + "type": "integer" + }, + "ImageBuildIsoURL": { + "type": "string" + }, + "ImageType": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "OutputTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Status": { + "type": "string" + }, + "Version": { + "type": "integer" + } + }, + "type": "object" + }, + "models.ImagesViewDataAPI": { + "properties": { + "count": { + "description": "total number of image view data", + "example": 100, + "type": "integer" + }, + "data": { + "items": { + "$ref": "#/components/schemas/models.ImageView" + }, + "type": "array" + } + }, + "type": "object" + }, + "models.InstalledPackage": { + "properties": { + "ID": { + "type": "integer" + }, + "arch": { + "type": "string" + }, + "commits": { + "items": { + "$ref": "#/components/schemas/models.Commit" + }, + "type": "array" + }, + "epoch": { + "type": "string" + }, + "name": { + "type": "string" + }, + "release": { + "type": "string" + }, + "sigmd5": { + "type": "string" + }, + "signature": { + "type": "string" + }, + "type": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "models.Installer": { + "properties": { + "Account": { + "type": "string" + }, + "Checksum": { + "type": "string" + }, + "ComposeJobID": { + "type": "string" + }, + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "ID": { + "type": "integer" + }, + "ImageBuildISOURL": { + "type": "string" + }, + "SshKey": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "Username": { + "type": "string" + }, + "org_id": { + "type": "string" + } + }, + "type": "object" + }, + "models.InventoryGroupDevicesUpdateInfoResponseAPI": { + "properties": { + "devices_count": { + "description": "the overall count of all devices that belongs to inventory group", + "example": 25, + "type": "integer" + }, + "group_uuid": { + "description": "the inventory group id", + "example": "b579a578-1a6f-48d5-8a45-21f2a656a5d4", + "type": "string" + }, + "image_set_id": { + "description": "the image set id common to all inventory group devices", + "example": 1024, + "type": "integer" + }, + "image_sets_count": { + "description": "how much image set ids the inventory group devices belongs to", + "example": 1, + "type": "integer" + }, + "update_devices_uuids": { + "description": "the list of devices uuids that belongs to inventory group that are available to update", + "example": [ + "b579a578-1a6f-48d5-8a45-21f2a656a5d4", + "1abb288d-6d88-4e2d-bdeb-fcc536be58ec" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "update_valid": { + "description": "whether the inventory group devices update is valid", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "models.Package": { + "properties": { + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "ID": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + } + }, + "type": "object" + }, + "models.PackageDiff": { + "properties": { + "Added": { + "items": { + "$ref": "#/components/schemas/models.InstalledPackage" + }, + "type": "array" + }, + "Removed": { + "items": { + "$ref": "#/components/schemas/models.InstalledPackage" + }, + "type": "array" + }, + "Upgraded": { + "items": { + "$ref": "#/components/schemas/models.InstalledPackage" + }, + "type": "array" + } + }, + "type": "object" + }, + "models.PostDeviceForDeviceGroupAPI": { + "properties": { + "Name": { + "description": "device name", + "example": "localhost", + "type": "string" + }, + "UUID": { + "description": "device uuid", + "example": "68485bb8-6427-40ad-8711-93b6a5b4deac", + "type": "string" + } + }, + "type": "object" + }, + "models.PutGroupNameParamAPI": { + "properties": { + "Name": { + "description": "device group name", + "example": "my-device-group", + "type": "string" + }, + "Type": { + "description": "device group type", + "example": "static", + "type": "string" + } + }, + "type": "object" + }, + "models.Repo": { + "properties": { + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "ID": { + "type": "integer" + }, + "RepoStatus": { + "description": "AWS repo upload status", + "type": "string" + }, + "RepoURL": { + "description": "AWS repo URL", + "type": "string" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "pulp_repo_id": { + "description": "Pulp Repo ID (used for updates)", + "type": "string" + }, + "pulp_repo_status": { + "description": "Status of Pulp repo import", + "type": "string" + }, + "pulp_repo_url": { + "description": "Distribution URL returned from Pulp", + "type": "string" + } + }, + "type": "object" + }, + "models.SuccessPlaceholderResponse": { + "type": "object" + }, + "models.ThirdPartyRepo": { + "properties": { + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "Description": { + "type": "string" + }, + "ID": { + "type": "integer" + }, + "Images": { + "items": { + "$ref": "#/components/schemas/models.Image" + }, + "type": "array" + }, + "Name": { + "type": "string" + }, + "URL": { + "type": "string" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "account": { + "type": "string" + }, + "distribution_arch": { + "type": "string" + }, + "distribution_version": { + "items": { + "type": "string" + }, + "type": "array" + }, + "gpg_key": { + "type": "string" + }, + "org_id": { + "type": "string" + }, + "package_count": { + "type": "integer" + }, + "uuid": { + "type": "string" + } + }, + "type": "object" + }, + "models.UpdateCommitAPI": { + "properties": { + "ID": { + "description": "The unique ID of the commit", + "example": 1056, + "type": "integer" + }, + "ImageBuildTarURL": { + "description": "The commit tar url", + "example": "https://storage-host.example.com/v2/99999999/tar/59794/tmp/repos/59794/repo.tar", + "type": "string" + }, + "OSTreeCommit": { + "description": "The ostree commit hash", + "example": "9bd8dfe9856aa5bb1683e85f123bfe7785d45fbdb6f10372ff2c80e703400999", + "type": "string" + }, + "OSTreeRef": { + "description": "The commit ostree ref", + "example": "rhel/9/x86_64/edge", + "type": "string" + } + }, + "type": "object" + }, + "models.UpdateTransaction": { + "properties": { + "Account": { + "type": "string" + }, + "ChangesRefs": { + "type": "boolean" + }, + "Commit": { + "$ref": "#/components/schemas/models.Commit" + }, + "CommitID": { + "type": "integer" + }, + "CreatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "DeletedAt": { + "$ref": "#/components/schemas/gorm.DeletedAt" + }, + "Devices": { + "items": { + "$ref": "#/components/schemas/models.Device" + }, + "type": "array" + }, + "DispatchRecords": { + "items": { + "$ref": "#/components/schemas/models.DispatchRecord" + }, + "type": "array" + }, + "ID": { + "type": "integer" + }, + "OldCommits": { + "items": { + "$ref": "#/components/schemas/models.Commit" + }, + "type": "array" + }, + "Repo": { + "$ref": "#/components/schemas/models.Repo" + }, + "RepoID": { + "type": "integer" + }, + "Status": { + "type": "string" + }, + "Tag": { + "type": "string" + }, + "UpdatedAt": { + "$ref": "#/components/schemas/models.EdgeAPITime" + }, + "org_id": { + "type": "string" + } + }, + "type": "object" + }, + "models.UpdateTransactionAPI": { + "properties": { + "ChangesRefs": { + "example": false, + "type": "boolean" + }, + "Commit": { + "$ref": "#/components/schemas/models.Commit" + }, + "CommitID": { + "description": "Commit ID of device", + "example": 1754, + "type": "integer" + }, + "Devices": { + "description": "List of Devices", + "items": { + "$ref": "#/components/schemas/models.DeviceAPI" + }, + "type": "array" + }, + "DispatchRecords": { + "items": { + "$ref": "#/components/schemas/models.DispatchRecordAPI" + }, + "type": "array" + }, + "OldCommits": { + "description": "Old Commit ID if the device has one", + "items": { + "$ref": "#/components/schemas/models.Commit" + }, + "type": "array" + }, + "Repo": { + "$ref": "#/components/schemas/models.Repo" + }, + "RepoID": { + "description": "Repo ID", + "example": 2256, + "type": "integer" + }, + "Status": { + "description": "Status of device", + "example": "SUCCESS", + "type": "string" + }, + "Tag": { + "description": "Tag og Device if device has one", + "example": "device_tag", + "type": "string" + } + }, + "type": "object" } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ImageValidationResponse" - } - } - }, - "description": "the validation result" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error" - } - }, - "summary": "Validate if the images selection could be updated", - "tags": [ - "Updates (Systems)" - ] - } + } }, - "/updates/{updateID}": { - "get": { - "description": "Gets a single requested update.", - "operationId": "GetUpdate", - "parameters": [ - { - "description": "a unique ID to identify the update", - "in": "path", - "name": "updateID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Update" - } - } - }, - "description": "The requested update" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The requested update was not found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error" - } + "info": { + "contact": {}, + "description": "API of the Edge Management application on [console.redhat.com](https://console.redhat.com)", + "license": { + "name": "MIT" }, - "summary": "Gets a single requested update", - "tags": [ - "Updates (Systems)" - ] - } + "title": "Edge API", + "version": "1.0" }, - "/updates/{updateID}/notify": { - "get": { - "description": "Send a notification for a device update", - "operationId": "SendNotificationForDevice", - "parameters": [ - { - "description": "a unique ID to identify the update", - "in": "path", - "name": "updateID", - "required": true, - "schema": { - "type": "integer" + "openapi": "3.0.3", + "paths": { + "/device-groups": { + "get": { + "description": "Returns device groups for an orgID", + "parameters": [ + { + "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", + "in": "query", + "name": "sort_by", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by name", + "in": "query", + "name": "name", + "schema": { + "type": "string" + } + }, + { + "description": "field: return number of image-set view until limit is reached. Default is 100.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of image-set view beginning at the offset.", + "in": "query", + "name": "offset", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.DeviceGroup" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Returns device groups for an orgID", + "tags": [ + "Device Groups" + ] + }, + "post": { + "description": "Creates a Device Group for an account.", + "operationId": "CreateDeviceGroup", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.CreateDeviceGroupAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.DeviceGroupAPI" + } + } + }, + "description": "The created device groups" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Creates a Device Group for an account.", + "tags": [ + "Device Groups" + ] } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceNotification" - } - } - }, - "description": "The notification payload" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The requested update was not found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error" - } }, - "summary": "Send a notification for a device update", - "tags": [ - "Updates (Systems)" - ] - } - }, - "/updates/{updateID}/update-playbook.yml": { - "get": { - "description": "returns the update transaction playbook used for system update", - "operationId": "GetUpdatePlaybook", - "parameters": [ - { - "description": "a unique ID to identify the update the playbook belongs to", - "in": "path", - "name": "updateID", - "required": true, - "schema": { - "type": "integer" + "/device-groups/checkName/{name}": { + "get": { + "description": "Validates if a group name already exists", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.CheckGroupNameParamAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Validates if a group name already exists", + "tags": [ + "Device Groups" + ] } - } - ], - "responses": { - "200": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "description": "the playbook file content for an update" - }, - "400": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "the device update was not found" - }, - "500": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } }, - "summary": "returns the playbook yaml file for a system update", - "tags": [ - "Updates (Systems)" - ] - } + "/device-groups/enforce-edge-groups": { + "get": { + "description": "Returns whether the edge groups is enforced for the current organization", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.EnforceEdgeGroupsAPI" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + } + }, + "summary": "Returns whether the edge groups is enforced for the current organization", + "tags": [ + "Device Groups" + ] + } + }, + "/device-groups/{ID}": { + "delete": { + "description": "Deletes an existing device group", + "parameters": [ + { + "description": "A unique existing Device Group", + "in": "query", + "name": "required_param", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Deletes an existing device group", + "tags": [ + "Device Groups" + ] + }, + "get": { + "description": "Returns devices groups for group identified by ID", + "parameters": [ + { + "description": "device group ID", + "in": "query", + "name": "required_param", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.DeviceGroup" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Returns devices groups for group identified by ID", + "tags": [ + "Device Groups" + ] + }, + "put": { + "description": "Updates the existing device group", + "parameters": [ + { + "description": "An unique existing Device Group", + "in": "query", + "name": "required_param", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.PutGroupNameParamAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.DeviceGroup" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Updates the existing device group", + "tags": [ + "Device Groups" + ] + } + }, + "/device-groups/{ID}/details": { + "get": { + "description": "Returns details for group identified by ID", + "parameters": [ + { + "description": "device group ID", + "in": "query", + "name": "required_param", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.DeviceGroup" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Returns details for group identified by ID", + "tags": [ + "Device Groups" + ] + } + }, + "/device-groups/{ID}/devices": { + "delete": { + "description": "Deletes the requested devices from device-group", + "parameters": [ + { + "description": "Identifier of the DeviceGroup", + "in": "path", + "name": "DeviceGroupID", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Deletes the requested devices from device-group", + "tags": [ + "Device Groups" + ] + }, + "post": { + "description": "Adds devices to device group", + "parameters": [ + { + "description": "An unique existing Device Group", + "in": "query", + "name": "required_param", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.PostDeviceForDeviceGroupAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Adds devices to device group", + "tags": [ + "Device Groups" + ] + } + }, + "/device-groups/{ID}/devices/{deviceID}": { + "delete": { + "description": "Deletes the requested device from the device-group", + "parameters": [ + { + "description": "Identifier of the Device Group", + "in": "path", + "name": "DeviceGroupId", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "description": "Identifier of the Device in a Device Group", + "in": "path", + "name": "DeviceId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Deletes the requested device from the device-group", + "tags": [ + "Device Groups" + ] + } + }, + "/device-groups/{ID}/updateDevices": { + "post": { + "description": "Updates all devices that belong to a group", + "parameters": [ + { + "description": "Identifier of the DeviceGroup", + "in": "query", + "name": "required_param", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Updates all devices that belong to a group", + "tags": [ + "Device Groups" + ] + } + }, + "/device-groups/{ID}/view": { + "get": { + "description": "Returns device groups view for group identified by ID", + "parameters": [ + { + "description": "device group ID", + "in": "query", + "name": "required_param", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.DeviceGroupViewAPI" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Returns device groups view for group identified by ID", + "tags": [ + "Device Groups" + ] + } + }, + "/devices": { + "get": { + "description": "Get combined system data from Edge API and Inventory API", + "operationId": "GetDevices", + "parameters": [ + { + "description": "field: maximum devices per page", + "in": "query", + "name": "per_page", + "schema": { + "type": "integer" + } + }, + { + "description": "field: which page to query from", + "in": "query", + "name": "page", + "schema": { + "type": "integer" + } + }, + { + "description": "field: order by display_name, updated or operating_system", + "in": "query", + "name": "order_by", + "schema": { + "type": "string" + } + }, + { + "description": "field: choose to order ASC or DESC when order_by is being used", + "in": "query", + "name": "order_how", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by hostname_or_id", + "in": "query", + "name": "hostname_or_id", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.DeviceDetailsListAPI" + } + } + }, + "description": "OK" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Get All Devices.", + "tags": [ + "Devices (Systems)" + ] + } + }, + "/devices/devicesview": { + "get": { + "description": "Return all data of Devices.", + "operationId": "GetDevicesView", + "parameters": [ + { + "description": "fields: name, uuid, update_available, image_id. To sort DESC use - before the fields.", + "in": "query", + "name": "sort_by", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by name", + "in": "query", + "name": "name", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by update_available", + "in": "query", + "name": "update_available", + "schema": { + "type": "boolean" + } + }, + { + "description": "field: filter by uuid", + "in": "query", + "name": "uuid", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by creation date", + "in": "query", + "name": "created_at", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by image id", + "in": "query", + "name": "image_id", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of devices until limit is reached. Default is 100.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of devices begining at the offset.", + "in": "query", + "name": "offset", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.DeviceViewListResponseAPI" + } + } + }, + "description": "OK" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Return all data of Devices.", + "tags": [ + "Devices (Systems)" + ] + }, + "post": { + "description": "Return all data of Devices.", + "operationId": "GetDevicesViewWithinDevices", + "parameters": [ + { + "description": "fields: name, uuid, update_available, image_id. To sort DESC use - before the fields.", + "in": "query", + "name": "sort_by", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by name", + "in": "query", + "name": "name", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by update_available", + "in": "query", + "name": "update_available", + "schema": { + "type": "boolean" + } + }, + { + "description": "field: filter by uuid", + "in": "query", + "name": "uuid", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by creation date", + "in": "query", + "name": "created_at", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by image id", + "in": "query", + "name": "image_id", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of devices until limit is reached. Default is 100.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of devices beginning at the offset.", + "in": "query", + "name": "offset", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.FilterByDevicesAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.DeviceViewListResponseAPI" + } + } + }, + "description": "OK" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Return all data of Devices.", + "tags": [ + "Devices (Systems)" + ] + } + }, + "/devices/{DeviceUUID}": { + "get": { + "description": "Get a device by UUID.", + "operationId": "GetDevice", + "parameters": [ + { + "description": "DeviceUUID", + "in": "path", + "name": "DeviceUUID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.DeviceDetailsAPI" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The device was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Get a device by UUID.", + "tags": [ + "Devices (Systems)" + ] + } + }, + "/image-sets": { + "get": { + "description": "Return the list of image sets.", + "operationId": "ListAllImageSets", + "parameters": [ + { + "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", + "in": "query", + "name": "sort_by", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by name", + "in": "query", + "name": "name", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by status", + "in": "query", + "name": "status", + "schema": { + "type": "string" + } + }, + { + "description": "field: return number of image-set view until limit is reached. Default is 100.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of image-set view beginning at the offset.", + "in": "query", + "name": "offset", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.ImageSetsResponseAPI" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The Image Set was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Return the list of image sets.", + "tags": [ + "Image-Sets" + ] + } + }, + "/image-sets/view": { + "get": { + "description": "Return the list of image set view.", + "parameters": [ + { + "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", + "in": "query", + "name": "sort_by", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by name", + "in": "query", + "name": "name", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by status", + "in": "query", + "name": "status", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by id", + "in": "query", + "name": "id", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of image-set view until limit is reached. Default is 30.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of image-set view beginning at the offset.", + "in": "query", + "name": "offset", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.ImageSetsViewResponseAPI" + } + } + }, + "description": "OK" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Return the list of image set view.", + "tags": [ + "Image-Sets" + ] + } + }, + "/image-sets/view/{imageSetID}/versions/{imageID}": { + "get": { + "description": "Return the image-set images view list.", + "operationId": "GetImageSetImageView", + "parameters": [ + { + "description": "the image set id", + "in": "path", + "name": "imageSetID", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "description": "the image id", + "in": "path", + "name": "imageID", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.ImageSetImageIDViewAPI" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The Image-Set or Image was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Return the image-set images view list.", + "tags": [ + "Image-Sets" + ] + } + }, + "/image-sets/view/{image_set_id}": { + "get": { + "description": "Return the image-set description view.", + "operationId": "GetImageSetViewByID", + "parameters": [ + { + "description": "the image-set id", + "in": "path", + "name": "image_set_id", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.ImageSetIDViewAPI" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The Image-Set was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Return the image-set description view.", + "tags": [ + "Image-Sets" + ] + } + }, + "/image-sets/view/{image_set_id}/versions": { + "get": { + "description": "Return the image-set images view list.", + "operationId": "GetAllImageSetImagesView", + "parameters": [ + { + "description": "the image-set id", + "in": "path", + "name": "image_set_id", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "description": "Define sort fields: created_at, version, To sort DESC use -", + "in": "query", + "name": "sort_by", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by status", + "in": "query", + "name": "status", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by version", + "in": "query", + "name": "version", + "schema": { + "type": "string" + } + }, + { + "description": "field: return number of images until limit is reached. Default is 100.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of images beginning at the offset.", + "in": "query", + "name": "offset", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.ImagesViewDataAPI" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The Image-Set was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Return the image-set images view list.", + "tags": [ + "Image-Sets" + ] + } + }, + "/image-sets/{imageSetID}": { + "delete": { + "description": "Delete Image Set", + "operationId": "DeleteImageSet", + "parameters": [ + { + "description": "Identifier of the ImageSet", + "in": "path", + "name": "imageSetID", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.ImageSetAPI" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "image-set was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Delete Image Set", + "tags": [ + "Image-Sets" + ] + } + }, + "/image-sets/{imageSetID}/": { + "get": { + "description": "Get image set by ID", + "operationId": "GetImageSetsByID", + "parameters": [ + { + "description": "Image Set ID", + "in": "path", + "name": "imageSetID", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", + "in": "query", + "name": "sort_by", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by name", + "in": "query", + "name": "name", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by status", + "in": "query", + "name": "status", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by version", + "in": "query", + "name": "version", + "schema": { + "type": "string" + } + }, + { + "description": "field: return number of image-set view until limit is reached. Default is 100.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of image-set view beginning at the offset.", + "in": "query", + "name": "offset", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.ImageSetDetailsResponseAPI" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "image-set was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Get an image-set", + "tags": [ + "Image-Sets" + ] + } + }, + "/image-sets/{imageSetID}/devices": { + "get": { + "description": "Return device ids for an image set.", + "operationId": "GetImageSetsDevicesByID", + "parameters": [ + { + "description": "Identifier of the ImageSet", + "in": "path", + "name": "ImageSetId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.ImageSetDevicesAPI" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The Image Set ID was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Return device ids for an image set.", + "tags": [ + "Image-Sets" + ] + } + }, + "/images": { + "get": { + "description": "This is a placeholder description", + "operationId": "GetAllImages", + "parameters": [ + { + "description": "Return number of images until limit is reached.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "Return number of images beginning at the offset", + "in": "query", + "name": "offset", + "schema": { + "type": "integer" + } + }, + { + "description": "created_at, distribution, name,status. To sort DESC use -before the fields", + "in": "query", + "name": "sort_by", + "schema": { + "type": "string" + } + }, + { + "description": "Filter by name.", + "in": "query", + "name": "name", + "schema": { + "type": "string" + } + }, + { + "description": "Filter by status.", + "in": "query", + "name": "status", + "schema": { + "type": "string" + } + }, + { + "description": "Filter by distribution.", + "in": "query", + "name": "distribution", + "schema": { + "type": "string" + } + }, + { + "description": "Filter by creation date.", + "in": "query", + "name": "created_at", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": " The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Placeholder summary", + "tags": [ + "Images" + ] + }, + "post": { + "description": "Create an ostree commit and/or installer ISO", + "operationId": "createImage", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.CreateImageAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImageResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Create an image", + "tags": [ + "Images" + ] + } + }, + "/images/checkImageName": { + "post": { + "description": "Create an updated ostree commit", + "operationId": "CheckImageName", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.CreateImageAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Update an image", + "tags": [ + "Images" + ] + } + }, + "/images/{imageId}": { + "delete": { + "description": "This is a placeholder description", + "operationId": "DeleteImage", + "parameters": [ + { + "description": "Identifier of the ImageSet", + "in": "path", + "name": "imageSetID", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Placeholder summary", + "tags": [ + "Images" + ] + }, + "get": { + "description": "This is a placeholder description", + "operationId": "GetImageByID", + "parameters": [ + { + "description": "Image ID", + "in": "path", + "name": "imageId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Placeholder summary", + "tags": [ + "Images" + ] + } + }, + "/images/{imageId}/details": { + "get": { + "description": "This is a placeholder description", + "operationId": "GetImageDetailsByID", + "parameters": [ + { + "description": "Image ID", + "in": "path", + "name": "imageId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Placeholder summary", + "tags": [ + "Images" + ] + } + }, + "/images/{imageId}/installer": { + "post": { + "description": "This is a placeholder description", + "operationId": "CreateInstallerForImage", + "parameters": [ + { + "description": "Image ID", + "in": "path", + "name": "imageId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.CreateImageAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Placeholder summary", + "tags": [ + "Images" + ] + } + }, + "/images/{imageId}/kickstart": { + "post": { + "description": "This is a placeholder description", + "operationId": "CreateKickStartForImage", + "parameters": [ + { + "description": "Image ID", + "in": "path", + "name": "imageId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.CreateImageAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Placeholder summary", + "tags": [ + "Images" + ] + } + }, + "/images/{imageId}/metadata": { + "get": { + "description": "This is a placeholder description", + "operationId": "GetMetadataForImage", + "parameters": [ + { + "description": "Image ID", + "in": "path", + "name": "imageId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Placeholder summary", + "tags": [ + "Images" + ] + } + }, + "/images/{imageId}/repo": { + "get": { + "description": "This is a placeholder description", + "operationId": "GetRepoForImage", + "parameters": [ + { + "description": "Image ID", + "in": "path", + "name": "imageId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Placeholder summary", + "tags": [ + "Images" + ] + } + }, + "/images/{imageId}/retry": { + "post": { + "description": "Create an updated ostree commit", + "operationId": "RetryCreateImage", + "parameters": [ + { + "description": "Image ID", + "in": "path", + "name": "imageId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.CreateImageAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "Retry is being processed" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Retries building an image from scratch", + "tags": [ + "Images" + ] + } + }, + "/images/{imageId}/status": { + "get": { + "description": "This is a placeholder description", + "operationId": "GetImageStatusByID", + "parameters": [ + { + "description": "Image Identifier", + "in": "path", + "name": "imageId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Placeholder summary", + "tags": [ + "Images" + ] + } + }, + "/images/{imageId}/update": { + "post": { + "description": "Create an updated ostree commit", + "operationId": "CreateImageUpdate", + "parameters": [ + { + "description": "Image ID", + "in": "path", + "name": "imageId", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.CreateImageAPI" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Update an image", + "tags": [ + "Images" + ] + } + }, + "/images/{ostreeCommitHash}/info": { + "get": { + "description": "This is a placeholder description", + "operationId": "GetImageByOstree", + "parameters": [ + { + "description": "Ostree Commit Hash", + "in": "path", + "name": "ostreeCommitHash", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Placeholder summary", + "tags": [ + "Images" + ] + } + }, + "/inventory-groups/{GroupUUID}/update-info": { + "get": { + "description": "Gets the inventory group update info", + "operationId": "GetInventoryGroupDevicesUpdateInfo", + "parameters": [ + { + "description": "a unique uuid to identify the inventory group", + "in": "path", + "name": "GroupUUID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.InventoryGroupDevicesUpdateInfoResponseAPI" + } + } + }, + "description": "The requested inventory group update info" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The requested inventory group was not found" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error" + } + }, + "summary": "Gets the inventory group update info", + "tags": [ + "Updates (Systems)" + ] + } + }, + "/storage/images-repos/{imageID}/content/{repoFilePath}": { + "get": { + "description": "Redirect request to a signed and valid url for an image commit repository from the path content", + "operationId": "RedirectSignedImageCommitRepository", + "parameters": [ + { + "description": "Id to identify Image", + "in": "path", + "name": "imageID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "path to file repository", + "in": "path", + "name": "repoFilePath", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "303": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + }, + "description": "See Other" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "Not Found" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "redirect to a signed url of an image commit repository path content", + "tags": [ + "Storage" + ] + } + }, + "/storage/images-repos/{imageID}/{repoFilePath}": { + "get": { + "description": "Bring the content for a image commit in a repository path", + "operationId": "ContentImageCommitRepositoryPath", + "parameters": [ + { + "description": "Id to identify Image", + "in": "path", + "name": "imageID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "path to file repository", + "in": "path", + "name": "repoFilePath", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/octet-stream": { + "schema": { + "type": "string" + } + } + }, + "description": "Stream object from file content" + }, + "400": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "Not Found" + }, + "500": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "return the content of an image commit repository path", + "tags": [ + "Storage" + ] + } + }, + "/storage/isos/{installerID}/": { + "get": { + "description": "This method will redirect request to a signed installer iso url", + "operationId": "RedirectSignedInstaller", + "parameters": [ + { + "description": "Installer ID", + "in": "path", + "name": "installerID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "303": { + "content": { + "application/octet-stream": { + "schema": { + "type": "string" + } + } + }, + "description": "URL to redirect" + }, + "400": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request send couln't be processed." + }, + "404": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "installer not found." + }, + "500": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Redirect to a signed installer", + "tags": [ + "Storage" + ] + } + }, + "/storage/update-repos/{updateTransactionID}/content/{repoFilePath}": { + "get": { + "description": "Method will redirect to asigned url of an update-transaction based on repository content", + "operationId": "RedirectUpdateTransactionRepositoryPath", + "parameters": [ + { + "description": "id for update transaction id", + "in": "path", + "name": "updateTransactionID", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "description": "path to repository to be checked", + "in": "path", + "name": "repoFilePath", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "303": { + "content": { + "application/octet-stream": { + "schema": { + "type": "string" + } + } + }, + "description": "URL signed to be redirect" + }, + "400": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "Not Found" + }, + "500": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "redirect to a signed url of an update-transaction repository path content", + "tags": [ + "Storage" + ] + } + }, + "/storage/update-repos/{updateTransactionID}/{repoFilePath}": { + "get": { + "description": "Request will get access to content of an update-transaction file based on the path", + "operationId": "RedirectUpdateTransactionRepositoryContent", + "parameters": [ + { + "description": "Update Transaction Id", + "in": "path", + "name": "updateTransactionID", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "description": "path for repository file", + "in": "path", + "name": "repoFilePath", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/octet-stream": { + "schema": { + "type": "string" + } + } + }, + "description": "Stream object from file content" + }, + "400": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "Bad Request" + }, + "404": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "Not Found" + }, + "500": { + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "Internal Server Error" + } + }, + "summary": "Return the content od an update-transaction repository path", + "tags": [ + "Storage" + ] + } + }, + "/thirdpartyrepo": { + "get": { + "description": "Lists all Third Party Repository for an account.", + "operationId": "GetAllThirdPartyRepo", + "parameters": [ + { + "description": "fields: created_at, name, updated_at. To sort DESC use - before the fields.", + "in": "query", + "name": "sort_by", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by name", + "in": "query", + "name": "name", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by creation date", + "in": "query", + "name": "created_at", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by update date", + "in": "query", + "name": "updated_at", + "schema": { + "type": "string" + } + }, + { + "description": "field: return number of repositories until limit is reached.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return number of repositories beginning at the offset.", + "in": "query", + "name": "offset", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThirdPartyRepoList" + } + } + }, + "description": "The list of third party repositories response" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Lists all Third Party Repository for an account.", + "tags": [ + "Third Party Repo" + ] + }, + "post": { + "description": "Create Third Party Repository for an account.", + "operationId": "CreateThirdPartyRepo", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThirdPartyRepo" + } + } + }, + "description": "the third party repository to create", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThirdPartyRepo" + } + } + }, + "description": "The created third party repository" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Create Third Party Repository for an account.", + "tags": [ + "Third Party Repo" + ] + } + }, + "/thirdpartyrepo/checkName/{name}": { + "get": { + "description": "Checks to see if a ThirdParty repo Name exists.", + "operationId": "CheckThirdPartyRepoName", + "parameters": [ + { + "description": "ThirdParty repo Name", + "in": "path", + "name": "name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CheckThirdPartyRepoName" + } + } + }, + "description": "The third party repository name check result" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Checks to see if a ThirdParty repo Name exists.", + "tags": [ + "Third Party Repo" + ] + } + }, + "/thirdpartyrepo/{ID}": { + "delete": { + "description": "Delete third party repository using id.", + "operationId": "DeleteThirdPartyRepoByID", + "parameters": [ + { + "description": "An unique existing third party repository id.", + "in": "query", + "name": "ID", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThirdPartyRepo" + } + } + }, + "description": "The deleted third party repository." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The third party repository was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Delete third party repository using id.", + "tags": [ + "Third Party Repo" + ] + }, + "get": { + "description": "Get third party repository by id.", + "operationId": "GetThirdPartyRepoByID", + "parameters": [ + { + "description": "An unique existing third party repository id.", + "in": "query", + "name": "ID", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThirdPartyRepo" + } + } + }, + "description": "The requested third party repository." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The third party repository was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Get third party repository by id.", + "tags": [ + "Third Party Repo" + ] + }, + "put": { + "description": "Creates an Update for third party repository", + "operationId": "CreateThirdPartyRepoUpdate", + "parameters": [ + { + "description": "An unique existing third party repository id.", + "in": "query", + "name": "ID", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThirdPartyRepo" + } + } + }, + "description": "The third party repository update data", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThirdPartyRepo" + } + } + }, + "description": "The updated third party repository." + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The third party repository was not found." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Creates an Update for third party repository", + "tags": [ + "Third Party Repo" + ] + } + }, + "/updates": { + "get": { + "description": "Gets all device updates", + "operationId": "ListUpdates", + "parameters": [ + { + "description": "field: return number of updates until limit is reached. Default is 30.", + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + } + }, + { + "description": "field: return updates beginning at the given offset.", + "in": "query", + "name": "offset", + "schema": { + "type": "integer" + } + }, + { + "description": "fields: created_at, updated_at. To sort DESC use - before the fields.", + "in": "query", + "name": "sort_by", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by status", + "in": "query", + "name": "status", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by creation date", + "in": "query", + "name": "created_at", + "schema": { + "type": "string" + } + }, + { + "description": "field: filter by update date", + "in": "query", + "name": "updated_at", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/Update" + }, + "type": "array" + } + } + }, + "description": "List of devices updates" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Gets all device updates", + "tags": [ + "Updates (Systems)" + ] + }, + "post": { + "description": "Executes a device update", + "operationId": "UpdateDevice", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DevicesUpdate" + } + } + }, + "description": "devices uuids to update and optional target commit id", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Update" + } + } + }, + "description": "The created device update" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error" + } + }, + "summary": "Executes a device update", + "tags": [ + "Updates (Systems)" + ] + } + }, + "/updates/device/{DeviceUUID}/updates": { + "get": { + "description": "Return list of available updates for a device.", + "operationId": "GetUpdateAvailableForDevice", + "parameters": [ + { + "description": "DeviceUUID", + "in": "path", + "name": "DeviceUUID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "query the latest or all updates", + "in": "query", + "name": "latest", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/models.Image" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "Return list of available updates for a device.", + "tags": [ + "Devices (Systems)" + ] + } + }, + "/updates/validate": { + "post": { + "description": "Validate if the images selection could be updated", + "operationId": "PostValidateUpdate", + "requestBody": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/ImageValidationRequest" + }, + "type": "array" + } + } + }, + "description": "request body", + "required": true, + "x-originalParamName": "body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImageValidationResponse" + } + } + }, + "description": "the validation result" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error" + } + }, + "summary": "Validate if the images selection could be updated", + "tags": [ + "Updates (Systems)" + ] + } + }, + "/updates/{updateID}": { + "get": { + "description": "Gets a single requested update.", + "operationId": "GetUpdate", + "parameters": [ + { + "description": "a unique ID to identify the update", + "in": "path", + "name": "updateID", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Update" + } + } + }, + "description": "The requested update" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The requested update was not found" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error" + } + }, + "summary": "Gets a single requested update", + "tags": [ + "Updates (Systems)" + ] + } + }, + "/updates/{updateID}/notify": { + "get": { + "description": "Send a notification for a device update", + "operationId": "SendNotificationForDevice", + "parameters": [ + { + "description": "a unique ID to identify the update", + "in": "path", + "name": "updateID", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceNotification" + } + } + }, + "description": "The notification payload" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "The requested update was not found" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error" + } + }, + "summary": "Send a notification for a device update", + "tags": [ + "Updates (Systems)" + ] + } + }, + "/updates/{updateID}/update-playbook.yml": { + "get": { + "description": "returns the update transaction playbook used for system update", + "operationId": "GetUpdatePlaybook", + "parameters": [ + { + "description": "a unique ID to identify the update the playbook belongs to", + "in": "path", + "name": "updateID", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "description": "the playbook file content for an update" + }, + "400": { + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/errors.BadRequest" + } + } + }, + "description": "The request sent couldn't be processed." + }, + "404": { + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/errors.NotFound" + } + } + }, + "description": "the device update was not found" + }, + "500": { + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/errors.InternalServerError" + } + } + }, + "description": "There was an internal server error." + } + }, + "summary": "returns the playbook yaml file for a system update", + "tags": [ + "Updates (Systems)" + ] + } + } } - } -} +} \ No newline at end of file diff --git a/api/schema/imageBuilder.yaml b/api/schema/imageBuilder.yaml index e458566d..7e3985ed 100644 --- a/api/schema/imageBuilder.yaml +++ b/api/schema/imageBuilder.yaml @@ -1271,6 +1271,7 @@ components: - guest-image - image-installer - oci + - openshift-virt - vsphere - vsphere-ova - wsl @@ -1483,7 +1484,7 @@ components: properties: ansible_controller_url: type: string - example: "example.towerhost.net" + example: "https://aap-gw.example.com" job_template_id: type: integer example: 38 @@ -1557,6 +1558,7 @@ components: required: - packages - recommendedPackages + - distribution type: object properties: packages: @@ -1569,8 +1571,7 @@ components: default: 3 distribution: type: string - description: RHEL major release (e.g. "rhel8", "rhel9", "rhel10") - example: "rhel9" + pattern: '^rhel\d+$' RecommendationsResponse: required: - packages @@ -1582,8 +1583,6 @@ components: type: string modelVersion: type: string - description: Version of the recommendation model used - example: "rpm_rex_42" ClonesResponse: required: - meta diff --git a/api/schema/provisioning.json b/api/schema/provisioning.json index 5a6fda8a..e9864c2b 100644 --- a/api/schema/provisioning.json +++ b/api/schema/provisioning.json @@ -28,8 +28,10 @@ "instances": [ { "detail": { - "publicdns": "", - "publicipv4": "10.0.0.88" + "privateipv4": "172.31.36.10", + "privateipv6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334", + "publicdns": "ec2-184-73-141-211.compute-1.amazonaws.com", + "publicipv4": "184.73.141.211" }, "instance_id": "i-2324343212" } @@ -68,6 +70,7 @@ "name": "my-instance", "poweroff": false, "pubkey_id": 42, + "resource_group": "redhat-hcc", "source_id": "654321" } }, @@ -79,6 +82,8 @@ "instances": [ { "detail": { + "privateipv4": "172.22.0.1", + "privateipv6": "", "publicdns": "", "publicipv4": "10.0.0.88" }, @@ -90,6 +95,7 @@ "poweroff": false, "pubkey_id": 42, "reservation_id": 1310, + "resource_group": "myCustom Azure RG", "source_id": "654321" } }, @@ -104,6 +110,7 @@ "poweroff": false, "pubkey_id": 42, "reservation_id": 1310, + "resource_group": "myCustom Azure RG", "source_id": "654321" } }, @@ -128,6 +135,8 @@ "instances": [ { "detail": { + "privateipv4": "10.198.0.2", + "privateipv6": "", "publicdns": "", "publicipv4": "10.0.0.88" }, @@ -229,7 +238,14 @@ "steps": 3, "success": false } - ] + ], + "metadata": { + "links": { + "next": "", + "previous": "" + }, + "total": 3 + } } }, "v1.GenericReservationResponsePayloadPendingExample": { @@ -324,7 +340,14 @@ "id": "lt-9843797432897342", "name": "XXL large backend API" } - ] + ], + "metadata": { + "links": { + "next": "", + "previous": "" + }, + "total": 0 + } } }, "v1.NoopReservationResponsePayloadExample": { @@ -339,11 +362,18 @@ "body": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEhnn80ZywmjeBFFOGm+cm+5HUwm62qTVnjKlOdYFLHN lzap", "fingerprint": "gL/y6MvNmJ8jDXtsL/oMmK8jUuIefN39BBuvYw/Rndk=", "fingerprint_legacy": "ee:f1:d4:62:99:ab:17:d9:3b:00:66:62:32:b2:55:9e", - "id": 1, + "id": 3, "name": "My key", "type": "ssh-ed25519" } - ] + ], + "metadata": { + "links": { + "next": "", + "previous": "/api/provisioning/v1/pubkeys?limit=2\u0026offset=0" + }, + "total": 3 + } } }, "v1.PubkeyRequestExample": { @@ -368,16 +398,27 @@ { "id": "654321", "name": "My AWS account", + "provider": "aws", "source_type_id": "", + "status": "available", "uid": "" }, { "id": "543621", "name": "My other AWS account", + "provider": "aws", "source_type_id": "", + "status": "available", "uid": "" } - ] + ], + "metadata": { + "links": { + "next": "", + "previous": "/api/provisioning/v1/sources?limit=2\u0026offset=0" + }, + "total": 4 + } } }, "v1.SourceUploadInfoAWSResponse": { @@ -406,6 +447,35 @@ } } }, + "parameters": { + "Limit": { + "description": "The number of items to return.", + "in": "query", + "name": "limit", + "schema": { + "default": 100, + "type": "integer" + } + }, + "Offset": { + "description": "The number of items to skip before starting to collect the result set.", + "in": "query", + "name": "offset", + "schema": { + "default": 0, + "type": "integer" + } + }, + "Token": { + "description": "The token used for requesting the next page of results; empty token for the first page", + "in": "query", + "name": "token", + "schema": { + "default": "", + "type": "string" + } + } + }, "responses": { "BadRequest": { "content": { @@ -529,6 +599,12 @@ "properties": { "detail": { "properties": { + "private_ipv4": { + "type": "string" + }, + "private_ipv6": { + "type": "string" + }, "public_dns": { "type": "string" }, @@ -557,6 +633,7 @@ }, "pubkey_id": { "format": "int64", + "nullable": true, "type": "integer" }, "region": { @@ -575,6 +652,7 @@ "v1.AccountIDTypeResponse": { "properties": { "aws": { + "nullable": true, "properties": { "account_id": { "type": "string" @@ -606,9 +684,11 @@ "type": "string" }, "location": { + "description": "Location (also known as region) to deploy the VM into, be aware it needs to be the same as the image location. Defaults to the Resource Group location, or 'eastus' when also creating the resource group.", "type": "string" }, "name": { + "description": "Name of the instance, to keep names unique, it will be suffixed with UUID. Optional, defaults to 'redhat-vm''", "type": "string" }, "poweroff": { @@ -618,6 +698,10 @@ "format": "int64", "type": "integer" }, + "resource_group": { + "description": "Azure resource group name to deploy the VM resources into. Optional, defaults to images resource group and when not found to 'redhat-deployed'.", + "type": "string" + }, "source_id": { "type": "string" } @@ -641,6 +725,12 @@ "properties": { "detail": { "properties": { + "private_ipv4": { + "type": "string" + }, + "private_ipv6": { + "type": "string" + }, "public_dns": { "type": "string" }, @@ -669,12 +759,16 @@ }, "pubkey_id": { "format": "int64", + "nullable": true, "type": "integer" }, "reservation_id": { "format": "int64", "type": "integer" }, + "resource_group": { + "type": "string" + }, "source_id": { "type": "string" } @@ -732,6 +826,12 @@ "properties": { "detail": { "properties": { + "private_ipv4": { + "type": "string" + }, + "private_ipv6": { + "type": "string" + }, "public_dns": { "type": "string" }, @@ -763,6 +863,7 @@ }, "pubkey_id": { "format": "int64", + "nullable": true, "type": "integer" }, "reservation_id": { @@ -829,6 +930,7 @@ "type": "string" }, "azure": { + "nullable": true, "properties": { "gen_v1": { "type": "boolean" @@ -879,6 +981,7 @@ "properties": { "data": { "items": { + "nullable": true, "properties": { "created_at": { "format": "date-time", @@ -924,6 +1027,25 @@ "type": "object" }, "type": "array" + }, + "metadata": { + "properties": { + "links": { + "properties": { + "next": { + "type": "string" + }, + "previous": { + "type": "string" + } + }, + "type": "object" + }, + "total": { + "type": "integer" + } + }, + "type": "object" } }, "type": "object" @@ -932,11 +1054,13 @@ "properties": { "data": { "items": { + "nullable": true, "properties": { "architecture": { "type": "string" }, "azure": { + "nullable": true, "properties": { "gen_v1": { "type": "boolean" @@ -981,6 +1105,7 @@ "properties": { "data": { "items": { + "nullable": true, "properties": { "id": { "type": "string" @@ -992,6 +1117,25 @@ "type": "object" }, "type": "array" + }, + "metadata": { + "properties": { + "links": { + "properties": { + "next": { + "type": "string" + }, + "previous": { + "type": "string" + } + }, + "type": "object" + }, + "total": { + "type": "integer" + } + }, + "type": "object" } }, "type": "object" @@ -1000,6 +1144,7 @@ "properties": { "data": { "items": { + "nullable": true, "properties": { "body": { "type": "string" @@ -1024,6 +1169,25 @@ "type": "object" }, "type": "array" + }, + "metadata": { + "properties": { + "links": { + "properties": { + "next": { + "type": "string" + }, + "previous": { + "type": "string" + } + }, + "type": "object" + }, + "total": { + "type": "integer" + } + }, + "type": "object" } }, "type": "object" @@ -1032,6 +1196,7 @@ "properties": { "data": { "items": { + "nullable": true, "properties": { "id": { "type": "string" @@ -1039,7 +1204,15 @@ "name": { "type": "string" }, + "provider": { + "description": "One of ('azure', 'aws', 'gcp')", + "type": "string" + }, "source_type_id": { + "deprecated": true, + "type": "string" + }, + "status": { "type": "string" }, "uid": { @@ -1049,6 +1222,25 @@ "type": "object" }, "type": "array" + }, + "metadata": { + "properties": { + "links": { + "properties": { + "next": { + "type": "string" + }, + "previous": { + "type": "string" + } + }, + "type": "object" + }, + "total": { + "type": "integer" + } + }, + "type": "object" } }, "type": "object" @@ -1065,9 +1257,11 @@ "v1.PubkeyRequest": { "properties": { "body": { + "description": "Add a public part of a SSH key pair.", "type": "string" }, "name": { + "description": "Enter the name of the newly created pubkey.", "type": "string" } }, @@ -1131,7 +1325,15 @@ "name": { "type": "string" }, + "provider": { + "description": "One of ('azure', 'aws', 'gcp')", + "type": "string" + }, "source_type_id": { + "deprecated": true, + "type": "string" + }, + "status": { "type": "string" }, "uid": { @@ -1186,7 +1388,7 @@ "name": "GPL-3.0" }, "title": "provisioning-api", - "version": "1.4.0" + "version": "1.13.0" }, "openapi": "3.0.0", "paths": { @@ -1219,7 +1421,7 @@ } }, "tags": [ - "AvailabilityStatus" + "Source" ] } }, @@ -1288,8 +1490,16 @@ }, "/pubkeys": { "get": { - "description": "A pubkey represents an SSH public portion of a key pair with name and body. This operation returns list of all pubkeys for particular account.\n", + "description": "Returns a list of all public keys available in a particular account.\n", "operationId": "getPubkeyList", + "parameters": [ + { + "$ref": "#/components/parameters/Limit" + }, + { + "$ref": "#/components/parameters/Offset" + } + ], "responses": { "200": { "content": { @@ -1304,7 +1514,7 @@ } } }, - "description": "Returned on success." + "description": "OK. Returned on success." }, "500": { "$ref": "#/components/responses/InternalError" @@ -1315,7 +1525,7 @@ ] }, "post": { - "description": "A pubkey represents an SSH public portion of a key pair with name and body. When pubkey is created, it is stored in the Provisioning database. Pubkeys are uploaded to clouds when an instance is launched. Some fields (e.g. type or fingerprint) are read only.\n", + "description": "Creates a new public key and stores it in the provisioning database. Public keys are uploaded to clouds at the time of launching an instance. Some fields such as type or fingerprint are read-only.\n", "operationId": "createPubkey", "requestBody": { "content": { @@ -1347,7 +1557,7 @@ } } }, - "description": "Returned on success." + "description": "OK. Returned on success." }, "500": { "$ref": "#/components/responses/InternalError" @@ -1360,11 +1570,11 @@ }, "/pubkeys/{ID}": { "delete": { - "description": "A pubkey represents an SSH public portion of a key pair with name and body. If a pubkey was uploaded to one or more clouds, the deletion request will attempt to delete those SSH keys from all clouds. This means in order to delete a pubkey the account must have valid credentials to all cloud accounts the pubkey was uploaded to, otherwise the delete operation will fail and the pubkey will not be deleted from Provisioning database. This operation returns no body.\n", + "description": "Deletes SSH keys that were uploaded with the specified public key from all the clouds. If a public key (pubkey) has been uploaded to one or more cloud providers, the deletion request attempts to remove those SSH keys from all associated clouds. Therefore, to delete a public key, the account must possess valid credentials for all cloud accounts to which the pubkey was uploaded. Otherwise, the delete operation fails, and the public key is not removed from the Provisioning database. This operation does not return a response body.\n", "operationId": "removePubkeyById", "parameters": [ { - "description": "Database ID of resource.", + "description": "Enter the database ID of resource.", "in": "path", "name": "ID", "required": true, @@ -1390,7 +1600,7 @@ ] }, "get": { - "description": "A pubkey represents an SSH public portion of a key pair with name and body. Pubkeys must have unique name and body (SSH public key fingerprint) per each account. Pubkey type is detected during create operation as well as fingerprints. Currently two types are supported: RSA and ssh-ed25519. Also, two fingerprint types are calculated: standard SHA fingerprint and legacy MD5 fingerprint available under fingerprint_legacy field. Fingerprints are used to check uniqueness of key.\n", + "description": "Gets details of the specified public key.", "operationId": "getPubkeyById", "parameters": [ { @@ -1418,7 +1628,7 @@ } } }, - "description": "Returned on success" + "description": "OK. Returned on success" }, "404": { "$ref": "#/components/responses/NotFound" @@ -1436,6 +1646,14 @@ "get": { "description": "A reservation is a way to activate a job, keeps all data needed for a job to start. This operation returns list of all reservations for particular account. To get a reservation with common fields, use /reservations/ID. To get a detailed reservation with all fields which are different per provider, use /reservations/aws/ID. Reservation can be in three states: pending, success, failed. This can be recognized by the success field (null for pending, true for success, false for failure). See the examples.\n", "operationId": "getReservationsList", + "parameters": [ + { + "$ref": "#/components/parameters/Limit" + }, + { + "$ref": "#/components/parameters/Offset" + } + ], "responses": { "200": { "content": { @@ -1637,7 +1855,7 @@ }, "/reservations/gcp": { "post": { - "description": "A reservation is a way to activate a job, keeps all data needed for a job to start. A GCP reservation is a reservation created for a GCP job. Image Builder UUID image is required and needs to be shared with the service account. Furthermore, by specifying the name pattern for example as \"instance\", instances names will be created in the format: \"instance-#####\". A single account can create maximum of 2 reservations per second.\n", + "description": "A reservation is a way to activate a job, keeps all data needed for a job to start. A GCP reservation is a reservation created for a GCP job. Image Builder UUID image is required and needs to be shared with the service account. Furthermore, by specifying the RFC-1035 compatible name pattern for example as \"instance\", instances names will be created in the format: \"instance-#####\". A single account can create maximum of 2 reservations per second.\n", "operationId": "createGCPReservation", "requestBody": { "content": { @@ -1804,6 +2022,12 @@ ], "type": "string" } + }, + { + "$ref": "#/components/parameters/Limit" + }, + { + "$ref": "#/components/parameters/Offset" } ], "responses": { @@ -1831,98 +2055,9 @@ ] } }, - "/sources/{ID}/account_identity": { - "get": { - "deprecated": true, - "description": "This endpoint is deprecated. Please use upload_info instead", - "operationId": "getSourceAccountIdentity", - "parameters": [ - { - "description": "Source ID from Sources Database", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/v1.AccountIDTypeResponse" - } - } - }, - "description": "Return on success." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Source" - ] - } - }, - "/sources/{ID}/instance_types": { - "get": { - "deprecated": true, - "description": "Deprecated endpoint, use /instance_types instead.", - "operationId": "getInstanceTypeList", - "parameters": [ - { - "description": "Source ID from Sources Database", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - }, - { - "description": "Hyperscaler region", - "in": "query", - "name": "region", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/v1.ListInstaceTypeResponse" - } - } - }, - "description": "Return on success." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Source" - ] - } - }, "/sources/{ID}/launch_templates": { "get": { - "description": "Return a list of launch templates.\nA launch template is a configuration set with a name that is available through hyperscaler API. When creating reservations, launch template can be provided in order to set additional configuration for instances.\nCurrently only AWS Launch Templates are supported.\n", + "description": "Return a list of launch templates.\nA launch template is a configuration set with a name that is available through hyperscaler API. When creating reservations, launch template can be provided in order to set additional configuration for instances. In GCP, when using templates, propagated user attributes are not overridden or updated. Only new attributes are added to the instance.\nCurrently AWS and GCP Launch Templates are supported.\n", "operationId": "getLaunchTemplatesList", "parameters": [ { @@ -1943,6 +2078,12 @@ "schema": { "type": "string" } + }, + { + "$ref": "#/components/parameters/Token" + }, + { + "$ref": "#/components/parameters/Limit" } ], "responses": { @@ -2037,8 +2178,16 @@ ], "tags": [ { - "description": "Public SSH keys operations", + "description": "A pubkey represents the SSH public portion of a key pair with a name and body. Public key types and fingerprints are detected during their creation process. Two types are supported: RSA and ssh-ed25519. Fingerprints are calculated in two ways: using the standard SHA method and the legacy MD5 method, which is available under the fingerprint_legacy field. Each public key has a unique name and body and helps in verifying the uniqueness of the keys. Using this API, you can perform the following operations.\n", "name": "Pubkey" + }, + { + "description": "A reservation represents a request for launching one or more instances from a single image. This reservation triggers a background job, that will Launch set amount of instances with the same configuration. The configuration decides target provider, instance size and ssh pubkey to use for the default user.\n", + "name": "Reservation" + }, + { + "description": "A Source represents a connection with public cloud account. These endpoints serve as convenient way to read information about available Sources to deploy instances into. The source of through is different application called Sources.\n", + "name": "Source" } ] -} \ No newline at end of file +} diff --git a/api/schema/rhsm.json b/api/schema/rhsm.json index 9a462df9..7a98d48b 100644 --- a/api/schema/rhsm.json +++ b/api/schema/rhsm.json @@ -1 +1 @@ -{"basePath":"/management/v2","consumes":["application/json"],"definitions":{"APIPageParam":{"description":"APIPageParam details the pagination parameters in APIResponse","properties":{"count":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"}},"type":"object"},"ActivationKeys":{"properties":{"additionalRepositories":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"},"id":{"type":"string"},"name":{"type":"string"},"releaseVersion":{"type":"string"},"role":{"type":"string"},"serviceLevel":{"type":"string"},"usage":{"type":"string"}},"type":"object"},"AdditionalRepositories":{"properties":{"repositoryLabel":{"type":"string"},"repositoryName":{"type":"string"}},"type":"object"},"AvailableRepositories":{"properties":{"architecture":{"type":"string"},"default":{"type":"string"},"engineeringProduct":{"type":"string"},"repositoryLabel":{"type":"string"},"repositoryName":{"type":"string"}},"type":"object"},"Capacity":{"properties":{"name":{"type":"string"},"quantity":{"type":"string"}},"type":"object"},"Date":{"description":"Date format used in API responses.","example":"2006-01-02T15:04:05.000Z","type":"string"},"EntitlementsAttached":{"description":"Details of all the entitlements attached and their status.","properties":{"reason":{"type":"string"},"valid":{"type":"boolean"},"value":{"items":{"$ref":"#/definitions/EntitlementsAttachedValue"},"type":"array"}},"type":"object"},"EntitlementsAttachedValue":{"description":"Detail of each entitlement attached","properties":{"contractNumber":{"type":"string"},"endDate":{"$ref":"#/definitions/Date"},"entitlementQuantity":{"type":"integer"},"id":{"type":"string"},"sku":{"type":"string"},"startDate":{"$ref":"#/definitions/Date"},"subscriptionName":{"type":"string"}},"type":"object"},"ErrorDetails":{"description":"ErrorDetails details the Error in ErrorResponse","properties":{"code":{"type":"integer"},"message":{"type":"string"}},"type":"object"},"EusProductList":{"properties":{"configurations":{"items":{"properties":{"repositories":{"items":{"type":"string"},"type":"array"},"version":{"type":"string"}},"type":"object"},"type":"array"},"engID":{"type":"integer"},"name":{"type":"string"}},"title":"List of RHEL EUS product-repo mappings","type":"object"},"Manifest":{"properties":{"entitlementQuantity":{"type":"integer"},"name":{"type":"string"},"simpleContentAccess":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"},"uuid":{"type":"string"},"version":{"type":"string"}},"title":"Manifest is an entity that consumes entitlements. Also referred as a Distributor.","type":"object"},"ManifestDetails":{"description":"details of a manifest","properties":{"createdBy":{"type":"string"},"createdDate":{"$ref":"#/definitions/Date"},"entitlementsAttached":{"$ref":"#/definitions/EntitlementsAttached"},"entitlementsAttachedQuantity":{"type":"integer"},"lastModified":{"$ref":"#/definitions/Date"},"name":{"type":"string"},"simpleContentAccess":{"type":"string"},"type":{"type":"string"},"uuid":{"type":"string"},"version":{"type":"string"}},"type":"object"},"ManifestSummary":{"description":"details of a manifest","properties":{"contentAccessMode":{"type":"string"},"createdBy":{"type":"string"},"createdDate":{"$ref":"#/definitions/Date"},"entitlementsAttachedQuantity":{"type":"integer"},"lastModified":{"$ref":"#/definitions/Date"},"name":{"type":"string"},"type":{"type":"string"},"uuid":{"type":"string"},"version":{"type":"string"}},"type":"object"},"ManifestVersion":{"description":"List of satellite version","properties":{"description":{"type":"string"},"value":{"type":"string"}},"type":"object"},"OrgSimpleContentAccess":{"properties":{"id":{"type":"string"},"simpleContentAccess":{"type":"string"},"simpleContentAccessCapable":{"type":"boolean"},"systemPurposeAttributes":{"$ref":"#/definitions/SystemPurposeAttributes"}},"title":"Organization Simple Content Access details.","type":"object"},"PoolDetail":{"description":"PoolDetail is an entry in the system/allocation pools listing","properties":{"contractNumber":{"type":"string"},"endDate":{"$ref":"#/definitions/Date"},"entitlementsAvailable":{"type":"integer"},"id":{"type":"string"},"serviceLevel":{"type":"string"},"sku":{"type":"string"},"startDate":{"$ref":"#/definitions/Date"},"subscriptionName":{"type":"string"},"subscriptionNumber":{"type":"string"}},"type":"object"},"ProductList":{"properties":{"capacity":{"$ref":"#/definitions/Capacity"},"name":{"type":"boolean"},"productLine":{"type":"string"},"quantity":{"type":"integer"},"serviceLevel":{"type":"string"},"serviceType":{"type":"string"},"sku":{"type":"string"}},"title":"List of products from subscriptions","type":"object"},"StatusCount":{"properties":{"active":{"type":"integer"},"expired":{"type":"integer"},"expiringSoon":{"type":"integer"},"futureDated":{"type":"integer"}},"title":"Status counts of user's subscriptions","type":"object"},"SystemPurposeAttributes":{"description":"System purpose settings available to an organization","properties":{"roles":{"items":{"type":"string"},"type":"array"},"serviceLevel":{"items":{"type":"string"},"type":"array"},"usage":{"items":{"type":"string"},"type":"array"}},"type":"object"},"exportJobResponse":{"properties":{"exportID":{"type":"string"},"href":{"type":"string"}},"type":"object"},"exportResponse":{"properties":{"exportJobID":{"type":"string"},"href":{"type":"string"}},"type":"object"},"ongoingExportJobResponse":{"properties":{"message":{"type":"string"}},"type":"object"},"poolsListMock":{"properties":{"body":{"items":{"$ref":"#/definitions/PoolDetail"},"type":"array"},"pagination":{"$ref":"#/definitions/APIPageParam"}},"type":"object"}},"host":"api.access.stage.redhat.com","info":{"contact":{"url":"https://access.redhat.com/support/cases/"},"description":"API for Red Hat Subscription Management","title":"RHSM-API","version":"1.326.0"},"paths":{"/activation_keys":{"get":{"description":"Returns a list of activation keys on the account including service level, role, additionalRepositories, usage, and release version (if applicable). Additional Repositories and release version will be an empty set in case it is not set.","operationId":"listActivationKeys","responses":{"200":{"description":"Array of activation keys","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/ActivationKeys"},"type":"array"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List activation keys","tags":["activationKey"]},"post":{"description":"Creates an activation key by name, release version and system purpose attributes, that are service level, role and usage. In the request body, \"name\" should be present and unique and can only contain letters, numbers, underscores, or hyphens. The response will have name and additionalRepositories as fixed fields. AdditionalRepositories field will always be empty for a new activation key. Role, serviceLevel, usage and releaseVersion are conditional fields, will be present in response only when they have values.","operationId":"createActivationKeys","parameters":[{"description":"Create an activation key","in":"body","name":"activationKey","schema":{"properties":{"additionalRepositories":{"items":{"properties":{"repositoryLabel":{"type":"string"}},"type":"object"},"type":"array"},"name":{"description":"Name should be present, unique and can only contain letters, numbers, underscores, or hyphens","type":"string"},"releaseVersion":{"type":"string"},"role":{"type":"string"},"serviceLevel":{"type":"string"},"usage":{"type":"string"}},"required":["name"],"type":"object"}}],"responses":{"200":{"description":"Activation key","schema":{"properties":{"body":{"$ref":"#/definitions/ActivationKeys"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Create activation key","tags":["activationKey"]}},"/activation_keys/{name}":{"delete":{"description":"Removes the activation key from the account based on activation key name","operationId":"removeActivationKeys","parameters":[{"in":"path","name":"name","required":true,"type":"string"}],"responses":{"204":{"description":"successfully removed"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Delete activation key","tags":["activationKey"]},"get":{"description":"Get activation key by name","operationId":"showActivationKey","parameters":[{"in":"path","name":"name","required":true,"type":"string"}],"responses":{"200":{"description":"Activation key","schema":{"properties":{"body":{"$ref":"#/definitions/ActivationKeys"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get activation key","tags":["activationKey"]},"put":{"description":"Updates an existing activation key with one or more fields as provided in request. It also returns additionalRepositories field which will be empty set when it is empty","operationId":"updateActivationKeys","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"description":"Update an activation key","in":"body","name":"activationKey","schema":{"properties":{"additionalRepositories":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"},"releaseVersion":{"type":"string"},"role":{"type":"string"},"serviceLevel":{"type":"string"},"usage":{"type":"string"}},"type":"object"}}],"responses":{"200":{"description":"Activation key","schema":{"properties":{"body":{"$ref":"#/definitions/ActivationKeys"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Update activation key","tags":["activationKey"]}},"/activation_keys/{name}/additional_repositories":{"delete":{"description":"Removes the additional repositories from an activation key by providing activation key name and repository labels","operationId":"removeActivationKeyAdditionalRepositories","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"in":"body","name":"additionalRepositories","schema":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"}}],"responses":{"204":{"$ref":"#/responses/NoContent"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Delete Additional Repositories","tags":["activationKey"]},"post":{"description":"Add additional repositories to an activation key by providing activation key name and repository labels. Customers can use any respositories listed in the `/v2/activation_keys/{name}/available_repositories` endpoint (use attribute `repositoryLabel`). Empty value is not supported and maximum length of repository label allowed is upto 255 characters.","operationId":"addAdditionalRepositories","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"description":"Add Additional repositories","in":"body","name":"activationKey","schema":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"}}],"responses":{"200":{"description":"list of additional repositories","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Add Additional Repositories","tags":["activationKey"]}},"/activation_keys/{name}/available_repositories":{"get":{"description":"Returns the list of RPM repositories available to an activation key that can be added as an additional repository. Available repositories are calculated by negating the additional repositories from the set of total RPM repositories. It can be an empty set if there are no RPM repositories or all of the repositories are already added to an activation key.","operationId":"listAvailableRepositories","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"description":"max number of results you want","in":"query","name":"limit","type":"integer"},{"description":"index from which you want next items","in":"query","name":"offset","type":"integer"},{"description":"Filters available repos based off default status","enum":["Disabled"],"in":"query","name":"default","type":"string"}],"responses":{"200":{"description":"list of available repositories","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/AvailableRepositories"},"type":"array"},"pagination":{"$ref":"#/definitions/APIPageParam"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List Available Repositories","tags":["activationKey"]}},"/manifests":{"get":{"description":"The default and max number of results in a response are 100.\nSatellite 6.0 or higher versions are only supported.","operationId":"listManifests","parameters":[{"description":"max number of results you want","in":"query","name":"limit","type":"integer"},{"description":"index from which you want next items","in":"query","name":"offset","type":"integer"}],"responses":{"200":{"description":"list of manifests","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/Manifest"},"type":"array"},"pagination":{"$ref":"#/definitions/APIPageParam"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List all manifests for a user","tags":["manifest"]},"post":{"description":"Create Manifest by name and version(optional).\nCustomers can use any version listed in the `/v2/manifests/versions`\nendpoint (use attribute `value`).\nIf no version is specified, it will take the latest available version\n for Manifest.","operationId":"createManifest","parameters":[{"description":"must be less than 100 characters and use only numbers, letters, underscores, hyphens, and periods","in":"query","name":"Name","required":true,"type":"string"},{"in":"query","name":"version","type":"string"}],"responses":{"200":{"description":"Success","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestSummary"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Create Manifest","tags":["manifest"]}},"/manifests/versions":{"get":{"description":"Returns list of Satellite version 6.0 and above","operationId":"listVersionsManifest","responses":{"200":{"description":"list of Satellite version","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/ManifestVersion"},"type":"array"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List Satellite versions","tags":["manifest"]}},"/manifests/{uuid}":{"delete":{"description":"The default success response will be 204\n\nSystem, RHUI, Hypervisor, SAM are unsupported manifet types","operationId":"removeManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"description":"Deleting a subscription manifest can have significant impacts on your hosts and activation keys.\nWe require a force parameter to make sure the delete operation is intentional.","enum":[true],"in":"query","name":"force","required":true,"type":"boolean"}],"responses":{"204":{"description":"Successfully removed"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"},"504":{"$ref":"#/responses/GatewayTimeout"}},"summary":"Remove manifest profile","tags":["manifest"]},"get":{"description":"System, RHUI, Hypervisor, SAM are unsupported manifest types","operationId":"showManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"description":"Show more details about a manifest","enum":["entitlements"],"in":"query","maxItems":1,"name":"include","type":"string"}],"responses":{"200":{"description":"success response","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestDetails"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get an Manifest by UUID","tags":["manifest"]},"put":{"description":"Allows to update simpleContentAccess for Satellite of version 6.3 and\nabove\nPossible value for simpleContentAccess are:\n\n- enabled\n- disabled","operationId":"updateManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"body","name":"manifest","schema":{"properties":{"simpleContentAccess":{"type":"string"}},"required":["simpleContentAccess"],"type":"object"}}],"responses":{"204":{"$ref":"#/responses/NoContent"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Update a manifest","tags":["manifest"]}},"/manifests/{uuid}/entitlements":{"post":{"description":"Satellite 5.6 or higher versions are only supported.","operationId":"attachEntitlementManifest","parameters":[{"in":"query","maxItems":1,"minItems":1,"name":"pool","required":true,"type":"string"},{"description":"quantity you want to attach","in":"query","name":"quantity","type":"integer"},{"in":"path","name":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestDetails"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"},"504":{"$ref":"#/responses/GatewayTimeout"}},"summary":"Attach entitlement to Manifest","tags":["manifest"]}},"/manifests/{uuid}/entitlements/{EntitlementID}":{"delete":{"description":"The default success response will be 204.","operationId":"removeManifestEntitlement","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"EntitlementID","required":true,"type":"string"}],"responses":{"204":{"description":"successfully removed"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Remove entitlement from the manifest","tags":["manifest"]},"put":{"description":"The default success response will be 200.\n\nSystem, RHUI, Hypervisor, SAM are unsupported manifest types","operationId":"updateEntitlementManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"EntitlementID","required":true,"type":"string"},{"description":"maxItem: quantity must be less than or equal to the maximum number of allowed entitlements in the entitlement pool\nminItem: 1","in":"query","name":"quantity","type":"integer"}],"responses":{"200":{"description":"Success response","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestDetails"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Update attached entitlement to manifest","tags":["manifest"]}},"/manifests/{uuid}/export":{"get":{"description":"Starts job to generate export for a manifest. To check the status of the export job visit the href in the response.\n\nSatellite 6.0 or higher versions are only supported.","operationId":"exportManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"ExportManifest200 is the success response","schema":{"properties":{"body":{"$ref":"#/definitions/exportResponse"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Trigger manifest export","tags":["manifest"]}},"/manifests/{uuid}/export/{ExportID}":{"get":{"description":"Success response contains a zip file. The link is one-time download and expires after one try. Trigger export job to get another download link.\n\nContent-Type: application/zip","operationId":"getExportManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"ExportID","required":true,"type":"string"}],"produces":["application/zip"],"responses":{"200":{"description":"GetExportManifest200 is the success response","schema":{"items":{"type":"integer"},"type":"array"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Download manifest","tags":["manifest"]}},"/manifests/{uuid}/exportJob/{ExportJobID}":{"get":{"description":"Returns export download link in response.","operationId":"exportJobManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"ExportJobID","required":true,"type":"string"}],"responses":{"200":{"description":"ExportJobManifest200 is the success response","schema":{"properties":{"body":{"$ref":"#/definitions/exportJobResponse"}},"type":"object"}},"202":{"description":"AcceptedExportJob202 is a response for accepted and in progress job","schema":{"properties":{"body":{"$ref":"#/definitions/ongoingExportJobResponse"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"406":{"$ref":"#/responses/NotAcceptable"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Check status of manifest export","tags":["manifest"]}},"/manifests/{uuid}/pools":{"get":{"description":"Satellite 5.6 or higher versions are only supported.","operationId":"listManifestPools","parameters":[{"description":"max number of results you want","in":"query","name":"limit","type":"integer"},{"description":"index from which you want next items","in":"query","name":"offset","type":"integer"},{"description":"include future dated pools for satellite 6.3 or higher","enum":[true],"in":"query","name":"future","type":"boolean"},{"in":"path","name":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"list of pools available for the manifest","schema":{"$ref":"#/definitions/poolsListMock"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List all pools for a manifest","tags":["manifest"]}},"/organization":{"get":{"description":"Show Simple Content Access details of user's organization","operationId":"checkOrgSCACapability","parameters":[{"description":"Request for system purpose attributes in response","in":"query","name":"include","type":"string"}],"responses":{"200":{"description":"Organization details","schema":{"properties":{"body":{"$ref":"#/definitions/OrgSimpleContentAccess"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get details of the user's organization","tags":["organization"]}},"/products":{"get":{"description":"Get list of all the products of user's subscription. The products are from subscriptions that have not expired or expired within last 30 days.\n","operationId":"listProducts","parameters":[{"description":"Filters products based on subscription status","enum":["expired","expiringSoon","active","futureDated"],"in":"query","name":"status","type":"string"}],"responses":{"200":{"description":"Product list","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/ProductList"},"type":"array"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List all the products from user's subscription","tags":["products"]}},"/products/RHEL/extended-update-support-products":{"get":{"description":"Returns the list of currently supported RHEL product-repo mappings for Extended Update Support","responses":{"200":{"description":"Extended Update Support versions","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/EusProductList"},"type":"array"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List RHEL EUS products","tags":["products"]}},"/products/RHEL/extended-update-support-versions":{"get":{"description":"Returns the list of currently supported RHEL versions for Extended Update Support","responses":{"200":{"description":"Extended Update Support versions","schema":{"properties":{"body":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List RHEL EUS versions","tags":["products"]}},"/products/export":{"get":{"description":"Export a csv file of all subscriptions","produces":["text/csv"],"responses":{"200":{"description":"Export","examples":{"text/csv":"Name,SKU,Service level,Support type,Capacity name,Capacity quantity,Contract number,Quantity,Start date,End date,Status (Active, Expired, Future Dated)\nExample Name, Example SKU, Example Service level, Example Support type, Example Capacity name, Example Contract number, Example Quantity, Example Start date, Example End date, Example Status\n"},"schema":{"type":"file"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Export subscriptions","tags":["products"]}},"/products/status":{"get":{"description":"Get counts of user's subscriptions by status such as\n- active\n- expired\n- expiring soon\n- future dated ","operationId":"statusCounts","responses":{"200":{"description":"Status counts","schema":{"properties":{"body":{"$ref":"#/definitions/StatusCount"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get user's subscription quantities by status","tags":["products"]}},"/products/{SKU}":{"get":{"description":"Get a single product by SKU","operationId":"showProduct","parameters":[{"description":"SKU of the product to show","in":"path","name":"SKU","required":true,"type":"string"}],"responses":{"200":{"description":"Product","schema":{"properties":{"body":{"$ref":"#/definitions/ProductList"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Show product","tags":["products"]}}},"produces":["application/json"],"responses":{"BadRequest":{"description":"BadRequest error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"Forbidden":{"description":"Forbidden error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"GatewayTimeout":{"description":"GatewayTimeout error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"InternalServerError":{"description":"InternalServerError error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"NoContent":{"description":"No Content"},"NotAcceptable":{"description":"NotAcceptable error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"NotFound":{"description":"NotFound error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"Unauthorized":{"description":"Unauthorized error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}}},"schemes":["https"],"swagger":"2.0"} \ No newline at end of file +{"basePath":"/management/v2","consumes":["application/json"],"definitions":{"APIPageParam":{"description":"APIPageParam details the pagination parameters in APIResponse","properties":{"count":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"}},"type":"object"},"ActivationKeys":{"properties":{"additionalRepositories":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"releaseVersion":{"type":"string"},"role":{"type":"string"},"serviceLevel":{"type":"string"},"updatedAt":{"type":"string"},"usage":{"type":"string"}},"type":"object"},"AdditionalRepositories":{"properties":{"repositoryLabel":{"type":"string"}},"type":"object"},"AvailableRepositories":{"properties":{"architecture":{"type":"string"},"default":{"type":"string"},"engineeringProduct":{"type":"string"},"repositoryLabel":{"type":"string"},"repositoryName":{"type":"string"},"rpmType":{"type":"string"}},"type":"object"},"Capacity":{"properties":{"name":{"type":"string"},"quantity":{"type":"string"}},"type":"object"},"Date":{"description":"Date format used in API responses.","example":"2006-01-02T15:04:05.000Z","type":"string"},"EntitlementsAttached":{"description":"Details of all the entitlements attached and their status.","properties":{"reason":{"type":"string"},"valid":{"type":"boolean"},"value":{"items":{"$ref":"#/definitions/EntitlementsAttachedValue"},"type":"array"}},"type":"object"},"EntitlementsAttachedValue":{"description":"Detail of each entitlement attached","properties":{"contractNumber":{"type":"string"},"endDate":{"$ref":"#/definitions/Date"},"entitlementQuantity":{"type":"integer"},"id":{"type":"string"},"sku":{"type":"string"},"startDate":{"$ref":"#/definitions/Date"},"subscriptionName":{"type":"string"}},"type":"object"},"ErrorDetails":{"description":"ErrorDetails details the Error in ErrorResponse","properties":{"code":{"type":"integer"},"message":{"type":"string"}},"type":"object"},"EusProductList":{"properties":{"configurations":{"items":{"properties":{"repositories":{"items":{"type":"string"},"type":"array"},"version":{"type":"string"}},"type":"object"},"type":"array"},"engID":{"type":"integer"},"name":{"type":"string"}},"title":"List of RHEL EUS product-repo mappings","type":"object"},"Manifest":{"properties":{"entitlementQuantity":{"type":"integer"},"name":{"type":"string"},"simpleContentAccess":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"},"uuid":{"type":"string"},"version":{"type":"string"}},"title":"Manifest is an entity that consumes entitlements. Also referred as a Distributor.","type":"object"},"ManifestDetails":{"description":"details of a manifest","properties":{"createdBy":{"type":"string"},"createdDate":{"$ref":"#/definitions/Date"},"entitlementsAttached":{"$ref":"#/definitions/EntitlementsAttached"},"entitlementsAttachedQuantity":{"type":"integer"},"lastModified":{"$ref":"#/definitions/Date"},"name":{"type":"string"},"simpleContentAccess":{"type":"string"},"type":{"type":"string"},"uuid":{"type":"string"},"version":{"type":"string"}},"type":"object"},"ManifestSummary":{"description":"details of a manifest","properties":{"contentAccessMode":{"type":"string"},"createdBy":{"type":"string"},"createdDate":{"$ref":"#/definitions/Date"},"entitlementsAttachedQuantity":{"type":"integer"},"lastModified":{"$ref":"#/definitions/Date"},"name":{"type":"string"},"type":{"type":"string"},"uuid":{"type":"string"},"version":{"type":"string"}},"type":"object"},"ManifestVersion":{"description":"List of satellite version","properties":{"description":{"type":"string"},"value":{"type":"string"}},"type":"object"},"OrgSimpleContentAccess":{"properties":{"id":{"type":"string"},"simpleContentAccess":{"type":"string"},"simpleContentAccessCapable":{"type":"boolean"},"systemPurposeAttributes":{"$ref":"#/definitions/SystemPurposeAttributes"}},"title":"Organization Simple Content Access details.","type":"object"},"PoolDetail":{"description":"PoolDetail is an entry in the system/allocation pools listing","properties":{"contractNumber":{"type":"string"},"endDate":{"$ref":"#/definitions/Date"},"entitlementsAvailable":{"type":"integer"},"id":{"type":"string"},"serviceLevel":{"type":"string"},"sku":{"type":"string"},"startDate":{"$ref":"#/definitions/Date"},"subscriptionName":{"type":"string"},"subscriptionNumber":{"type":"string"}},"type":"object"},"ProductList":{"properties":{"capacity":{"$ref":"#/definitions/Capacity"},"name":{"type":"boolean"},"productLine":{"type":"string"},"productName":{"type":"string"},"providedProducts":{"items":{"type":"number"},"type":"array"},"quantity":{"type":"integer"},"serviceLevel":{"type":"string"},"serviceType":{"type":"string"},"sku":{"type":"string"},"subscriptions":{"items":{"properties":{"contractNumber":{"type":"string"},"endDate":{"type":"string"},"number":{"type":"string"},"quantity":{"type":"string"},"startDate":{"type":"string"},"status":{"type":"string"}},"type":"object"},"type":"array"},"usage":{"type":"string"},"virtLimit":{"type":"string"}},"title":"List of products from subscriptions","type":"object"},"StatusCount":{"properties":{"active":{"type":"integer"},"expired":{"type":"integer"},"expiringSoon":{"type":"integer"},"futureDated":{"type":"integer"}},"title":"Status counts of user's subscriptions","type":"object"},"SystemPurposeAttributes":{"description":"System purpose settings available to an organization","properties":{"roles":{"items":{"type":"string"},"type":"array"},"serviceLevel":{"items":{"type":"string"},"type":"array"},"usage":{"items":{"type":"string"},"type":"array"}},"type":"object"},"exportJobResponse":{"properties":{"exportID":{"type":"string"},"href":{"type":"string"}},"type":"object"},"exportResponse":{"properties":{"exportJobID":{"type":"string"},"href":{"type":"string"}},"type":"object"},"ongoingExportJobResponse":{"properties":{"message":{"type":"string"}},"type":"object"},"poolsListMock":{"properties":{"body":{"items":{"$ref":"#/definitions/PoolDetail"},"type":"array"},"pagination":{"$ref":"#/definitions/APIPageParam"}},"type":"object"}},"host":"api.access.redhat.com","info":{"contact":{"url":"https://access.redhat.com/support/cases/"},"description":"API for Red Hat Subscription Management","title":"RHSM-API","version":"2"},"paths":{"/activation_keys":{"get":{"description":"Returns a list of activation keys on the account including service level, role, additionalRepositories, usage, and release version (if applicable). Additional Repositories and release version will be an empty set in case it is not set.","operationId":"listActivationKeys","responses":{"200":{"description":"Array of activation keys","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/ActivationKeys"},"type":"array"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List activation keys","tags":["activationKey"]},"post":{"description":"Creates an activation key by name, release version and system purpose attributes, that are service level, role and usage. In the request body, \"name\" should be present and unique and can only contain letters, numbers, underscores, or hyphens. The response will have name and additionalRepositories as fixed fields. AdditionalRepositories field will always be empty for a new activation key. Role, serviceLevel, usage, releaseVersion and description are conditional fields, will be present in response only when they have values.","operationId":"createActivationKeys","parameters":[{"description":"Create an activation key","in":"body","name":"activationKey","schema":{"properties":{"additionalRepositories":{"items":{"properties":{"repositoryLabel":{"type":"string"}},"type":"object"},"type":"array"},"description":{"description":"should be 255 characters or shorter","type":"string"},"name":{"description":"Name should be present, unique and can only contain letters, numbers, underscores, or hyphens","type":"string"},"releaseVersion":{"type":"string"},"role":{"type":"string"},"serviceLevel":{"type":"string"},"usage":{"type":"string"}},"required":["name"],"type":"object"}}],"responses":{"200":{"description":"Activation key","schema":{"properties":{"body":{"$ref":"#/definitions/ActivationKeys"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Create activation key","tags":["activationKey"]}},"/activation_keys/{name}":{"delete":{"description":"Removes the activation key from the account based on activation key name","operationId":"removeActivationKeys","parameters":[{"in":"path","name":"name","required":true,"type":"string"}],"responses":{"204":{"description":"successfully removed"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Delete activation key","tags":["activationKey"]},"get":{"description":"Get activation key by name","operationId":"showActivationKey","parameters":[{"in":"path","name":"name","required":true,"type":"string"}],"responses":{"200":{"description":"Activation key","schema":{"properties":{"body":{"$ref":"#/definitions/ActivationKeys"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get activation key","tags":["activationKey"]},"put":{"description":"Updates an existing activation key with one or more fields as provided in request. It also returns additionalRepositories field which will be empty set when it is empty","operationId":"updateActivationKeys","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"description":"Update an activation key","in":"body","name":"activationKey","schema":{"properties":{"description":{"type":"string"},"releaseVersion":{"type":"string"},"role":{"type":"string"},"serviceLevel":{"type":"string"},"usage":{"type":"string"}},"type":"object"}}],"responses":{"200":{"description":"Activation key","schema":{"properties":{"body":{"$ref":"#/definitions/ActivationKeys"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Update activation key","tags":["activationKey"]}},"/activation_keys/{name}/additional_repositories":{"delete":{"description":"Removes the additional repositories from an activation key by providing activation key name and repository labels","operationId":"removeActivationKeyAdditionalRepositories","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"in":"body","name":"additionalRepositories","schema":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"}}],"responses":{"204":{"$ref":"#/responses/NoContent"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Delete Additional Repositories","tags":["activationKey"]},"post":{"description":"Add additional repositories to an activation key by providing activation key name and repository labels. Customers can use any respositories listed in the `/v2/activation_keys/{name}/available_repositories` endpoint (use attribute `repositoryLabel`). Empty value is not supported and maximum length of repository label allowed is upto 255 characters.","operationId":"addAdditionalRepositories","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"description":"Add Additional repositories","in":"body","name":"activationKey","schema":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"}}],"responses":{"200":{"description":"list of additional repositories","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Add Additional Repositories","tags":["activationKey"]}},"/activation_keys/{name}/available_repositories":{"get":{"description":"Returns the list of RPM repositories available to an activation key that can be added as an additional repository. Available repositories are calculated by negating the additional repositories from the set of total RPM repositories. It can be an empty set if there are no RPM repositories or all of the repositories are already added to an activation key.","operationId":"listAvailableRepositories","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"description":"max number of results you want","in":"query","name":"limit","type":"integer"},{"description":"index from which you want next items","in":"query","name":"offset","type":"integer"},{"description":"Filters available repos based off default status","enum":["Disabled"],"in":"query","name":"default","type":"string"},{"description":"Repository name to search by","in":"query","name":"repo_name","type":"string"},{"description":"Repository label to search by","in":"query","name":"repo_label","type":"string"},{"description":"Comma separated list of architectures to search by","in":"query","name":"architecture","type":"string"},{"description":"Field to search by. Supported options are repo_name and repo_label. Must be used in combination with sort_direction","in":"query","name":"sort_by","type":"string"},{"description":"Direction to sort available repositories by. Supported options are asc and desc. Must be used in combination with sort_by","in":"query","name":"sort_direction","type":"string"},{"description":"Comma separated list of rpm types to filter by","in":"query","name":"rpm_type","type":"string"}],"responses":{"200":{"description":"list of available repositories","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/AvailableRepositories"},"type":"array"},"pagination":{"$ref":"#/definitions/APIPageParam"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List Available Repositories","tags":["activationKey"]}},"/manifests":{"get":{"description":"The default and max number of results in a response are 100.\nSatellite 6.0 or higher versions are only supported.","operationId":"listManifests","parameters":[{"description":"max number of results you want","in":"query","name":"limit","type":"integer"},{"description":"index from which you want next items","in":"query","name":"offset","type":"integer"}],"responses":{"200":{"description":"list of manifests","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/Manifest"},"type":"array"},"pagination":{"$ref":"#/definitions/APIPageParam"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List all manifests for a user","tags":["manifest"]},"post":{"description":"Create Manifest by name and version(optional).\nCustomers can use any version listed in the `/v2/manifests/versions`\nendpoint (use attribute `value`).\nIf no version is specified, it will take the latest available version\n for Manifest.","operationId":"createManifest","parameters":[{"description":"must be less than 100 characters and use only numbers, letters, underscores, hyphens, and periods","in":"query","name":"Name","required":true,"type":"string"},{"in":"query","name":"version","type":"string"}],"responses":{"200":{"description":"Success","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestSummary"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Create Manifest","tags":["manifest"]}},"/manifests/versions":{"get":{"description":"Returns list of Satellite version 6.0 and above","operationId":"listVersionsManifest","responses":{"200":{"description":"list of Satellite version","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/ManifestVersion"},"type":"array"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List Satellite versions","tags":["manifest"]}},"/manifests/{uuid}":{"delete":{"description":"The default success response will be 204\n\nSystem, RHUI, Hypervisor, SAM are unsupported manifet types","operationId":"removeManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"description":"Deleting a subscription manifest can have significant impacts on your hosts and activation keys.\nWe require a force parameter to make sure the delete operation is intentional.","enum":[true],"in":"query","name":"force","required":true,"type":"boolean"}],"responses":{"204":{"description":"Successfully removed"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"},"504":{"$ref":"#/responses/GatewayTimeout"}},"summary":"Remove manifest profile","tags":["manifest"]},"get":{"description":"System, RHUI, Hypervisor, SAM are unsupported manifest types","operationId":"showManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"description":"Show more details about a manifest","enum":["entitlements"],"in":"query","maxItems":1,"name":"include","type":"string"}],"responses":{"200":{"description":"success response","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestDetails"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get an Manifest by UUID","tags":["manifest"]},"put":{"description":"Allows to update simpleContentAccess for Satellite of version 6.3 and\nabove\nPossible value for simpleContentAccess are:\n\n- enabled\n- disabled","operationId":"updateManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"body","name":"manifest","schema":{"properties":{"simpleContentAccess":{"type":"string"}},"required":["simpleContentAccess"],"type":"object"}}],"responses":{"204":{"$ref":"#/responses/NoContent"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Update a manifest","tags":["manifest"]}},"/manifests/{uuid}/entitlements":{"post":{"description":"Satellite 5.6 or higher versions are only supported.","operationId":"attachEntitlementManifest","parameters":[{"in":"query","maxItems":1,"minItems":1,"name":"pool","required":true,"type":"string"},{"description":"quantity you want to attach","in":"query","name":"quantity","type":"integer"},{"in":"path","name":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestDetails"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"},"504":{"$ref":"#/responses/GatewayTimeout"}},"summary":"Attach entitlement to Manifest","tags":["manifest"]}},"/manifests/{uuid}/entitlements/{EntitlementID}":{"delete":{"description":"The default success response will be 204.","operationId":"removeManifestEntitlement","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"EntitlementID","required":true,"type":"string"}],"responses":{"204":{"description":"successfully removed"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Remove entitlement from the manifest","tags":["manifest"]},"put":{"description":"The default success response will be 200.\n\nSystem, RHUI, Hypervisor, SAM are unsupported manifest types","operationId":"updateEntitlementManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"EntitlementID","required":true,"type":"string"},{"description":"maxItem: quantity must be less than or equal to the maximum number of allowed entitlements in the entitlement pool\nminItem: 1","in":"query","name":"quantity","type":"integer"}],"responses":{"200":{"description":"Success response","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestDetails"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Update attached entitlement to manifest","tags":["manifest"]}},"/manifests/{uuid}/export":{"get":{"description":"Starts job to generate export for a manifest. To check the status of the export job visit the href in the response.\n\nSatellite 6.0 or higher versions are only supported.","operationId":"exportManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"ExportManifest200 is the success response","schema":{"properties":{"body":{"$ref":"#/definitions/exportResponse"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Trigger manifest export","tags":["manifest"]}},"/manifests/{uuid}/export/{ExportID}":{"get":{"description":"Success response contains a zip file. The link is one-time download and expires after one try. Trigger export job to get another download link.\n\nContent-Type: application/zip","operationId":"getExportManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"ExportID","required":true,"type":"string"}],"produces":["application/zip"],"responses":{"200":{"description":"GetExportManifest200 is the success response","schema":{"items":{"type":"integer"},"type":"array"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Download manifest","tags":["manifest"]}},"/manifests/{uuid}/exportJob/{ExportJobID}":{"get":{"description":"Returns export download link in response.","operationId":"exportJobManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"ExportJobID","required":true,"type":"string"}],"responses":{"200":{"description":"ExportJobManifest200 is the success response","schema":{"properties":{"body":{"$ref":"#/definitions/exportJobResponse"}},"type":"object"}},"202":{"description":"AcceptedExportJob202 is a response for accepted and in progress job","schema":{"properties":{"body":{"$ref":"#/definitions/ongoingExportJobResponse"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"406":{"$ref":"#/responses/NotAcceptable"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Check status of manifest export","tags":["manifest"]}},"/manifests/{uuid}/pools":{"get":{"description":"Satellite 5.6 or higher versions are only supported.","operationId":"listManifestPools","parameters":[{"description":"max number of results you want","in":"query","name":"limit","type":"integer"},{"description":"index from which you want next items","in":"query","name":"offset","type":"integer"},{"description":"include future dated pools for satellite 6.3 or higher","enum":[true],"in":"query","name":"future","type":"boolean"},{"in":"path","name":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"list of pools available for the manifest","schema":{"$ref":"#/definitions/poolsListMock"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List all pools for a manifest","tags":["manifest"]}},"/organization":{"get":{"description":"Show Simple Content Access details of user's organization","operationId":"checkOrgSCACapability","parameters":[{"description":"Request for system purpose attributes in response","in":"query","name":"include","type":"string"}],"responses":{"200":{"description":"Organization details","schema":{"properties":{"body":{"$ref":"#/definitions/OrgSimpleContentAccess"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get details of the user's organization","tags":["organization"]}},"/products":{"get":{"description":"Get list of all the products of user's subscription. The products are from subscriptions that have not expired or expired within last 30 days.\n","operationId":"listProducts","parameters":[{"description":"Filters products based on subscription status","enum":["expired","expiringSoon","active","futureDated"],"in":"query","name":"status","type":"string"},{"description":"Request additional attributes per product in response","enum":["providedProducts"],"in":"query","name":"include","type":"string"},{"description":"Filters products based on the comma separated list of engineering product oids passed. When multiple values are passed, the products matching with all the oids within their providedProducts will be returned\n","in":"query","name":"oids","type":"string"}],"responses":{"200":{"description":"Product list","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/ProductList"},"type":"array"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List all the products from user's subscription","tags":["products"]}},"/products/RHEL/extended-update-support-products":{"get":{"description":"Returns the list of currently supported RHEL product-repo mappings for Extended Update Support","responses":{"200":{"description":"Extended Update Support versions","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/EusProductList"},"type":"array"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List RHEL EUS products","tags":["products"]}},"/products/RHEL/extended-update-support-versions":{"get":{"description":"Returns the list of currently supported RHEL versions for Extended Update Support","responses":{"200":{"description":"Extended Update Support versions","schema":{"properties":{"body":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List RHEL EUS versions","tags":["products"]}},"/products/export":{"get":{"description":"Export a csv file of all subscriptions","produces":["text/csv"],"responses":{"200":{"description":"Export","examples":{"text/csv":"Name,SKU,Service level,Support type,Capacity name,Capacity quantity,Contract number,Quantity,Start date,End date,Status (Active, Expired, Future Dated)\nExample Name, Example SKU, Example Service level, Example Support type, Example Capacity name, Example Contract number, Example Quantity, Example Start date, Example End date, Example Status\n"},"schema":{"type":"file"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Export subscriptions","tags":["products"]}},"/products/status":{"get":{"description":"Get counts of user's subscriptions by status such as\n- active\n- expired\n- expiring soon\n- future dated ","operationId":"statusCounts","responses":{"200":{"description":"Status counts","schema":{"properties":{"body":{"$ref":"#/definitions/StatusCount"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get user's subscription quantities by status","tags":["products"]}},"/products/{SKU}":{"get":{"description":"Get a single product by SKU","operationId":"showProduct","parameters":[{"description":"SKU of the product to show","in":"path","name":"SKU","required":true,"type":"string"}],"responses":{"200":{"description":"Product","schema":{"properties":{"body":{"$ref":"#/definitions/ProductList"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Show product","tags":["products"]}}},"produces":["application/json"],"responses":{"BadRequest":{"description":"BadRequest error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"Forbidden":{"description":"Forbidden error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"GatewayTimeout":{"description":"GatewayTimeout error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"InternalServerError":{"description":"InternalServerError error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"NoContent":{"description":"No Content"},"NotAcceptable":{"description":"NotAcceptable error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"NotFound":{"description":"NotFound error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"Unauthorized":{"description":"Unauthorized error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}}},"schemes":["https"],"swagger":"2.0"} \ No newline at end of file diff --git a/src/Components/CreateImageWizard/steps/Review/ReviewStepTextLists.tsx b/src/Components/CreateImageWizard/steps/Review/ReviewStepTextLists.tsx index c43ea0f3..16bc04d0 100644 --- a/src/Components/CreateImageWizard/steps/Review/ReviewStepTextLists.tsx +++ b/src/Components/CreateImageWizard/steps/Review/ReviewStepTextLists.tsx @@ -232,7 +232,7 @@ export const TargetEnvAWSList = () => { }, { selectFromResult: ({ data }) => ({ - source: data?.data?.find((source) => source.id === sourceId), + source: data?.data?.find((source) => source?.id === sourceId), }), } ); @@ -364,7 +364,7 @@ export const TargetEnvAzureList = () => { { rawAzureSources?.data?.find( - (source) => source.id === azureSource + (source) => source?.id === azureSource )?.name } diff --git a/src/Components/CreateImageWizard/steps/TargetEnvironment/Aws/AwsSourcesSelect.tsx b/src/Components/CreateImageWizard/steps/TargetEnvironment/Aws/AwsSourcesSelect.tsx index 061b1837..f7c62d84 100644 --- a/src/Components/CreateImageWizard/steps/TargetEnvironment/Aws/AwsSourcesSelect.tsx +++ b/src/Components/CreateImageWizard/steps/TargetEnvironment/Aws/AwsSourcesSelect.tsx @@ -36,18 +36,18 @@ export const AwsSourcesSelect = () => { }); const sources = data?.data; - const chosenSource = sources?.find((source) => source.id === sourceId); + const chosenSource = sources?.find((source) => source?.id === sourceId); const [selectOptions, setSelectOptions] = useState<(string | undefined)[]>( - sources ? sources.map((source) => source.name) : [] + sources ? sources.map((source) => source?.name) : [] ); useEffect(() => { - let filteredSources = sources?.map((source) => source.name); + let filteredSources = sources?.map((source) => source?.name); if (sources && filterValue) { filteredSources = sources - .map((source) => source.name) + .map((source) => source?.name) .filter((source: string) => String(source).toLowerCase().includes(filterValue.toLowerCase()) ); @@ -87,7 +87,7 @@ export const AwsSourcesSelect = () => { _event: React.MouseEvent, value: string ) => { - const source = sources?.find((source) => source.name === value); + const source = sources?.find((source) => source?.name === value); dispatch(changeAwsSourceId(source?.id)); setIsOpen(false); }; diff --git a/src/Components/CreateImageWizard/steps/TargetEnvironment/Azure/AzureSourcesSelect.tsx b/src/Components/CreateImageWizard/steps/TargetEnvironment/Azure/AzureSourcesSelect.tsx index 9fb9153a..fcedc100 100644 --- a/src/Components/CreateImageWizard/steps/TargetEnvironment/Azure/AzureSourcesSelect.tsx +++ b/src/Components/CreateImageWizard/steps/TargetEnvironment/Azure/AzureSourcesSelect.tsx @@ -57,7 +57,7 @@ export const AzureSourcesSelect = () => { ); const [selectOptions, setSelectOptions] = useState<(string | undefined)[]>( - rawSources?.data?.map((source) => source.name) || [] + rawSources?.data?.map((source) => source?.name) || [] ); useEffect(() => { @@ -75,11 +75,11 @@ export const AzureSourcesSelect = () => { ]); useEffect(() => { - let filteredSources = rawSources?.data?.map((source) => source.name); + let filteredSources = rawSources?.data?.map((source) => source?.name); if (filterValue) { filteredSources = rawSources?.data - ?.map((source) => source.name) + ?.map((source) => source?.name) .filter((source: string) => String(source).toLowerCase().includes(filterValue.toLowerCase()) ); @@ -119,7 +119,7 @@ export const AzureSourcesSelect = () => { sourceName: string ) => { const sourceId = rawSources?.data?.find( - (source) => source.name === sourceName + (source) => source?.name === sourceName )?.id; dispatch(changeAzureSource(sourceId || '')); dispatch(changeAzureResourceGroup('')); @@ -145,7 +145,7 @@ export const AzureSourcesSelect = () => { }; const selectedSource = azureSource - ? rawSources?.data?.find((source) => source.id === azureSource)?.name + ? rawSources?.data?.find((source) => source?.id === azureSource)?.name : undefined; const toggle = (toggleRef: React.Ref) => ( diff --git a/src/Components/ImagesTable/ImageDetails.tsx b/src/Components/ImagesTable/ImageDetails.tsx index 2d7cb5ac..ebf4cbfa 100644 --- a/src/Components/ImagesTable/ImageDetails.tsx +++ b/src/Components/ImagesTable/ImageDetails.tsx @@ -88,7 +88,7 @@ const AzureSourceName = ({ id }: AzureSourceNamePropTypes) => { const sources = extractProvisioningList(rawSources); - const sourcename = sources?.find((source) => source.id === id); + const sourcename = sources?.find((source) => source?.id === id); if (sourcename) { return

{sourcename.name}

; } @@ -111,7 +111,7 @@ const AwsSourceName = ({ id }: AwsSourceNamePropTypes) => { const sources = extractProvisioningList(rawSources); - const sourcename = sources?.find((source) => source.id === id); + const sourcename = sources?.find((source) => source?.id === id); if (sourcename) { return

{sourcename.name}

; } diff --git a/src/Components/ImagesTable/Instance.tsx b/src/Components/ImagesTable/Instance.tsx index b0f67942..09a33a96 100644 --- a/src/Components/ImagesTable/Instance.tsx +++ b/src/Components/ImagesTable/Instance.tsx @@ -390,6 +390,7 @@ export const AwsS3Instance = ({ 'rhel-edge-installer': '', vhd: '', oci: '', + 'openshift-virt': '.tar', }; const status = composeStatus?.image_status.status; diff --git a/src/constants.ts b/src/constants.ts index ab617b88..3f518e6c 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -82,6 +82,7 @@ export const targetOptions: { [key in ImageTypes]: string } = { 'rhel-edge-installer': 'RHEL Edge Installer', vhd: '', oci: 'Oracle Cloud Infrastructure', + 'openshift-virt': 'OpenShift Virtualization', }; export const UNIT_KIB = 1024 ** 1; diff --git a/src/store/cockpit/composerCloudApi.ts b/src/store/cockpit/composerCloudApi.ts index 82ec7d81..ec20eecf 100644 --- a/src/store/cockpit/composerCloudApi.ts +++ b/src/store/cockpit/composerCloudApi.ts @@ -131,6 +131,7 @@ export type ImageTypes = | "aws-rhui" | "aws-sap-rhui" | "azure" + | "azure-cvm" | "azure-eap7-rhui" | "azure-rhui" | "azure-sap-rhui" @@ -536,11 +537,11 @@ export type FilesystemTyped = { */ part_type?: string | undefined; minsize?: Minsize | undefined; - mountpoint: string; + mountpoint?: string | undefined; label?: string | undefined; - /** The filesystem type + /** The filesystem type. Swap partitions must have an empty mountpoint. */ - fs_type?: ("ext4" | "xfs" | "vfat") | undefined; + fs_type: "ext4" | "xfs" | "vfat" | "swap"; }; export type BtrfsSubvolume = { /** The name of the subvolume, which defines the location (path) on the root volume @@ -551,7 +552,7 @@ export type BtrfsSubvolume = { mountpoint: string; }; export type BtrfsVolume = { - type?: "btrfs" | undefined; + type: "btrfs"; /** The partition type GUID for GPT partitions. For DOS partitions, this field can be used to set the (2 hex digit) partition type. If not set, the type will be automatically set based on the mountpoint or the payload type. */ part_type?: string | undefined; @@ -563,14 +564,14 @@ export type LogicalVolume = { minsize?: Minsize | undefined; /** Mountpoint for the logical volume */ - mountpoint: string; + mountpoint?: string | undefined; label?: string | undefined; - /** The filesystem type for the logical volume + /** The filesystem type for the logical volume. Swap LVs must have an empty mountpoint. */ - fs_type?: ("ext4" | "xfs" | "vfat") | undefined; + fs_type: "ext4" | "xfs" | "vfat" | "swap"; }; export type VolumeGroup = { - type?: "lvm" | undefined; + type: "lvm"; /** The partition type GUID for GPT partitions. For DOS partitions, this field can be used to set the (2 hex digit) partition type. If not set, the type will be automatically set based on the mountpoint or the payload type. */ part_type?: string | undefined; diff --git a/src/store/service/edgeApi.ts b/src/store/service/edgeApi.ts index 6034c289..16c55889 100644 --- a/src/store/service/edgeApi.ts +++ b/src/store/service/edgeApi.ts @@ -82,7 +82,7 @@ const injectedRtkApi = api.injectEndpoints({ query: (queryArg) => ({ url: `/images`, method: "POST", - body: queryArg.createImage, + body: queryArg.modelsCreateImageApi, }), }), checkImageName: build.mutation< @@ -92,7 +92,7 @@ const injectedRtkApi = api.injectEndpoints({ query: (queryArg) => ({ url: `/images/checkImageName`, method: "POST", - body: queryArg.createImage, + body: queryArg.modelsCreateImageApi, }), }), createInstallerForImage: build.mutation< @@ -102,7 +102,7 @@ const injectedRtkApi = api.injectEndpoints({ query: (queryArg) => ({ url: `/images/${queryArg.imageId}/installer`, method: "POST", - body: queryArg.createImage, + body: queryArg.modelsCreateImageApi, }), }), createKickStartForImage: build.mutation< @@ -112,7 +112,7 @@ const injectedRtkApi = api.injectEndpoints({ query: (queryArg) => ({ url: `/images/${queryArg.imageId}/kickstart`, method: "POST", - body: queryArg.createImage, + body: queryArg.modelsCreateImageApi, }), }), getMetadataForImage: build.query< @@ -134,7 +134,7 @@ const injectedRtkApi = api.injectEndpoints({ query: (queryArg) => ({ url: `/images/${queryArg.imageId}/retry`, method: "POST", - body: queryArg.createImage, + body: queryArg.modelsCreateImageApi, }), }), createImageUpdate: build.mutation< @@ -144,7 +144,7 @@ const injectedRtkApi = api.injectEndpoints({ query: (queryArg) => ({ url: `/images/${queryArg.imageId}/update`, method: "POST", - body: queryArg.createImage, + body: queryArg.modelsCreateImageApi, }), }), getImageByOstree: build.query< @@ -239,13 +239,13 @@ export type GetAllImagesApiArg = { export type CreateImageApiResponse = /** status 200 OK */ ImageResponse; export type CreateImageApiArg = { /** request body */ - createImage: CreateImage; + modelsCreateImageApi: ModelsCreateImageApi; }; export type CheckImageNameApiResponse = /** status 200 OK */ ModelsSuccessPlaceholderResponse; export type CheckImageNameApiArg = { /** request body */ - createImage: CreateImage; + modelsCreateImageApi: ModelsCreateImageApi; }; export type CreateInstallerForImageApiResponse = /** status 200 OK */ ModelsSuccessPlaceholderResponse; @@ -253,7 +253,7 @@ export type CreateInstallerForImageApiArg = { /** Image ID */ imageId: number; /** request body */ - createImage: CreateImage; + modelsCreateImageApi: ModelsCreateImageApi; }; export type CreateKickStartForImageApiResponse = /** status 200 OK */ ModelsSuccessPlaceholderResponse; @@ -261,7 +261,7 @@ export type CreateKickStartForImageApiArg = { /** Image ID */ imageId: number; /** request body */ - createImage: CreateImage; + modelsCreateImageApi: ModelsCreateImageApi; }; export type GetMetadataForImageApiResponse = /** status 200 OK */ ModelsSuccessPlaceholderResponse; @@ -281,7 +281,7 @@ export type RetryCreateImageApiArg = { /** Image ID */ imageId: number; /** request body */ - createImage: CreateImage; + modelsCreateImageApi: ModelsCreateImageApi; }; export type CreateImageUpdateApiResponse = /** status 200 OK */ ModelsSuccessPlaceholderResponse; @@ -289,7 +289,7 @@ export type CreateImageUpdateApiArg = { /** Image ID */ imageId: number; /** request body */ - createImage: CreateImage; + modelsCreateImageApi: ModelsCreateImageApi; }; export type GetImageByOstreeApiResponse = /** status 200 OK */ ModelsSuccessPlaceholderResponse; @@ -308,10 +308,7 @@ export type GormDeletedAt = { valid?: boolean | undefined; }; export type ModelsInstalledPackage = { - CreatedAt?: ModelsEdgeApiTime | undefined; - DeletedAt?: GormDeletedAt | undefined; ID?: number | undefined; - UpdatedAt?: ModelsEdgeApiTime | undefined; arch?: string | undefined; commits?: ModelsCommit[] | undefined; epoch?: string | undefined; @@ -326,9 +323,17 @@ export type ModelsRepo = { CreatedAt?: ModelsEdgeApiTime | undefined; DeletedAt?: GormDeletedAt | undefined; ID?: number | undefined; + /** AWS repo upload status */ RepoStatus?: string | undefined; + /** AWS repo URL */ RepoURL?: string | undefined; UpdatedAt?: ModelsEdgeApiTime | undefined; + /** Pulp Repo ID (used for updates) */ + pulp_repo_id?: string | undefined; + /** Status of Pulp repo import */ + pulp_repo_status?: string | undefined; + /** Distribution URL returned from Pulp */ + pulp_repo_url?: string | undefined; }; export type ModelsCommit = { Account?: string | undefined; @@ -422,6 +427,7 @@ export type ModelsImage = { TotalPackages?: number | undefined; UpdatedAt?: ModelsEdgeApiTime | undefined; Version?: number | undefined; + activationKey?: string | undefined; org_id?: string | undefined; /** storing for logging reference on resume */ request_id?: string | undefined; @@ -547,11 +553,12 @@ export type ImageResponse = { TotalPackages?: number | undefined; UpdatedAt?: ModelsEdgeApiTime | undefined; Version?: number | undefined; + activationKey?: string | undefined; org_id?: string | undefined; /** storing for logging reference on resume */ request_id?: string | undefined; }; -export type CreateImage = object; +export type ModelsCreateImageApi = object; export const { useListAllImageSetsQuery, useGetImageSetsViewQuery, diff --git a/src/store/service/imageBuilderApi.ts b/src/store/service/imageBuilderApi.ts index dc36c493..520efe19 100644 --- a/src/store/service/imageBuilderApi.ts +++ b/src/store/service/imageBuilderApi.ts @@ -462,6 +462,7 @@ export type ImageTypes = | "guest-image" | "image-installer" | "oci" + | "openshift-virt" | "vsphere" | "vsphere-ova" | "wsl" @@ -998,14 +999,12 @@ export type DistributionProfileItem = export type DistributionProfileResponse = DistributionProfileItem[]; export type RecommendationsResponse = { packages: string[]; - /** Version of the recommendation model used */ modelVersion?: string | undefined; }; export type RecommendPackageRequest = { packages: string[]; recommendedPackages: number; - /** RHEL major release (e.g. "rhel8", "rhel9", "rhel10") */ - distribution?: string | undefined; + distribution: string; }; export const { useGetArchitecturesQuery, diff --git a/src/store/service/provisioningApi.ts b/src/store/service/provisioningApi.ts index b1f6ae82..2b42001d 100644 --- a/src/store/service/provisioningApi.ts +++ b/src/store/service/provisioningApi.ts @@ -6,6 +6,8 @@ const injectedRtkApi = api.injectEndpoints({ url: `/sources`, params: { provider: queryArg.provider, + limit: queryArg.limit, + offset: queryArg.offset, }, }), }), @@ -23,6 +25,10 @@ export type GetSourceListApiResponse = /** status 200 Returned on success. */ V1ListSourceResponse; export type GetSourceListApiArg = { provider?: "aws" | "azure" | "gcp"; + /** The number of items to return. */ + limit?: number; + /** The number of items to skip before starting to collect the result set. */ + offset?: number; }; export type GetSourceUploadInfoApiResponse = /** status 200 Return on success. */ V1SourceUploadInfoResponse; @@ -32,12 +38,26 @@ export type GetSourceUploadInfoApiArg = { }; export type V1ListSourceResponse = { data?: - | { + | ({ id?: string | undefined; name?: string | undefined; + /** One of ('azure', 'aws', 'gcp') */ + provider?: string | undefined; source_type_id?: string | undefined; + status?: string | undefined; uid?: string | undefined; - }[] + } | null)[] + | undefined; + metadata?: + | { + links?: + | { + next?: string | undefined; + previous?: string | undefined; + } + | undefined; + total?: number | undefined; + } | undefined; }; export type V1ResponseError = { diff --git a/src/store/service/rhsmApi.ts b/src/store/service/rhsmApi.ts index c37d922e..31320868 100644 --- a/src/store/service/rhsmApi.ts +++ b/src/store/service/rhsmApi.ts @@ -43,6 +43,8 @@ export type CreateActivationKeysApiArg = { repositoryLabel?: string | undefined; }[] | undefined; + /** should be 255 characters or shorter */ + description?: string | undefined; /** Name should be present, unique and can only contain letters, numbers, underscores, or hyphens */ name: string; releaseVersion?: string | undefined; @@ -59,15 +61,16 @@ export type ShowActivationKeyApiArg = { }; export type AdditionalRepositories = { repositoryLabel?: string | undefined; - repositoryName?: string | undefined; }; export type ActivationKeys = { additionalRepositories?: AdditionalRepositories[] | undefined; + description?: string | undefined; id?: string | undefined; name?: string | undefined; releaseVersion?: string | undefined; role?: string | undefined; serviceLevel?: string | undefined; + updatedAt?: string | undefined; usage?: string | undefined; }; export type ErrorDetails = {