diff options
Diffstat (limited to 'docs/emco_apis.yaml')
-rw-r--r-- | docs/emco_apis.yaml | 4305 |
1 files changed, 4305 insertions, 0 deletions
diff --git a/docs/emco_apis.yaml b/docs/emco_apis.yaml new file mode 100644 index 00000000..cba2c9ba --- /dev/null +++ b/docs/emco_apis.yaml @@ -0,0 +1,4305 @@ + +openapi: 3.0.2 +info: + version: '2.0.0' + + title: EMCO + + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' + x-logo: + url: 'https://redocly.github.io/openapi-template/logo.png' + + description: | + EMCO - Edge Multi Cluster Orchestrator + # Introduction + Application Orchestration - For applications and services delivered across multiple administrative infrastructures + +externalDocs: + description: Wiki for the API's. + url: 'https://wiki.onap.org/display/DW/V2+API+Specification' + +tags: + - name: v2 + description: | + V2 API's + +paths: + ############################ Project API'S ################################################# + /projects: + post: + tags: + - Projects + summary: Project + description: Add a new `project` + operationId: addProject + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + description: Project data + required: true + + get: # documentation for GET operation for this path + tags: + - Projects + summary: Get all projects + + description: | + Get all `projects` + + operationId: getAllProjects + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/MetadataArray' + '404': + description: No Project found + content: {} + + /projects/{project-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/projectName' + get: # documentation for GET operation for this path + tags: + - Projects + summary: Get project by project name + + description: | + Get `project` + + operationId: getProjectByName + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '404': + description: Project not found + content: {} + put: + tags: + - Projects + summary: Update project + description: Update `project` + operationId: updateProject + responses: + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '400': + description: Invalid data + content: {} + '404': + description: Project not found + content: {} + # request body documentation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + description: Update project object + required: true + delete: # documentation for DELETE operation for this path + tags: + - Projects + summary: Delete project by project name + + description: | + Delete `project` + + operationId: deleteProjectByName + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Project not found + content: {} + + ############################ Application API'S ################################################# + /projects/{project-name}/composite-apps: + parameters: + - $ref: '#/components/parameters/projectName' + post: + tags: + - Composite Application + summary: Add Composite Application + description: Add a new `composite application` + operationId: addCompositeApplication + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/CompositeAppVersion' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CompositeAppVersion' + description: Composite application definition + required: true + + get: # documentation for GET operation for this path + tags: + - Composite Application + summary: Get all Composite Applications + + description: | + Get all `composite applications` + + operationId: getAllCompositeApplications + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/CompositeAppVersionArray' + '404': + description: No Composite App found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + get: # documentation for GET operation for this path + tags: + - Composite Application + summary: Get Composite Application + + description: | + Get `composite application` + + operationId: getCompositeApplicationByName + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/CompositeAppVersion' + '404': + description: Composite Application not found + content: {} + put: + tags: + - Composite Application + summary: Update a Composite Application + description: Update a `Composite Application` + operationId: updateCompositeApplication + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/CompositeAppVersion' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Composite Application not found + content: {} + # request body documentation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CompositeAppVersion' + description: Composite application definition + required: true + + delete: # documentation for DELETE operation for this path + tags: + - Composite Application + summary: Delete Composite Application + + description: | + Delete `Composite Application` + + operationId: deleteCompositeAppByName + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Composite Application not found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/apps: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + post: + tags: + - Composite Application + summary: Add app to Composite Application + description: Add a new `app to composite application` + operationId: addAppToCompositeApplication + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '405': + description: Invalid Input + content: {} + # request body documentation + requestBody: + content: + multipart/form-data: # Media type + schema: # Request payload + $ref: '#/components/schemas/AppData' + required: true + + get: # documentation for GET operation for this path + tags: + - Composite Application + summary: Get all apps in Composite Application + + description: | + Get all `apps in composite application` + + operationId: getAllAppsInCompositeApplication + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/MetadataArray' + '404': + description: No Apps found in Composite Application + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/apps/{app-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/appName' + get: # documentation for GET operation for this path + tags: + - Composite Application + summary: Get Application + + description: | + Get `application` + + operationId: getAppCompositeApplication + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + application/octet-stream: # operation response mime type + schema: + $ref: '#/components/schemas/File' + multipart/form-data: # Media type + schema: # Request payload + $ref: '#/components/schemas/AppData' + + '404': + description: Application not found + content: {} + put: + tags: + - Composite Application + summary: Update app in Composite Application + description: Update app in `Composite Application` + operationId: updateAppToCompositeApplication + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Application not found + content: {} + # request body documentation + requestBody: + content: + multipart/form-data: # Media type + schema: # Request payload + $ref: '#/components/schemas/AppData' + required: true + delete: # documentation for DELETE operation for this path + tags: + - Composite Application + summary: Delete Application + + description: | + Delete `application` + + operationId: deleteAppToCompositeApplication + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Application not found + content: {} + +############################ PROFILE API'S ################################################# + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/composite-profiles: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + post: + tags: + - Composite Profile + summary: Add Composite Profile + description: Add a new `composite profile` + operationId: addCompositeProfile + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + description: Composite Profile definition + required: true + + get: # documentation for GET operation for this path + tags: + - Composite Profile + summary: Get all Composite Profiles + + description: | + Get all `profiles in a composite application` + + operationId: getAllProfilesInCompositeApplication + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/MetadataArray' + '404': + description: No composite profile found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/composite-profiles/{composite-profile-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/compositeProfileName' + get: # documentation for GET operation for this path + tags: + - Composite Profile + summary: Get Composite Profile + + description: | + Get `composite profile` + + operationId: getCompositeProfileByName + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '404': + description: Composite Profile not found + content: {} + put: + tags: + - Composite Profile + summary: Update Composite Profile + description: Update `Composite Profile` + operationId: updateCompositeProfile + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Composite Profile not found + content: {} + # request body documentation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + description: Composite Profile definition + required: true + delete: # documentation for DELETE operation for this path + tags: + - Composite Profile + summary: Delete Composite Profile + + description: | + Delete `Composite Profile` + + operationId: deleteCompositeProfileByName + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Composite Profile not found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/composite-profiles/{composite-profile-name}/profiles: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/compositeProfileName' + post: + tags: + - Composite Profile + summary: Add app profile to Composite Profile + description: Add a `profile for application` + operationId: addProfileToCompositeProfile + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ProfileAppSpec' + '405': + description: Invalid Input + content: {} + requestBody: + content: + multipart/form-data: # Media type + schema: # Request payload + $ref: '#/components/schemas/ProfileAppData' + get: # documentation for GET operation for this path + tags: + - Composite Profile + summary: Get all app profiles in Composite Profiles + + description: | + Get all `app profiles in a composite Profile` + + operationId: getAllProfilesInCompositeProfile + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ProfileAppSpecArray' + '404': + description: No profile found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/composite-profiles/{composite-profile-name}/profiles/{profile-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/compositeProfileName' + - $ref: '#/components/parameters/profileName' + get: # documentation for GET operation for this path + tags: + - Composite Profile + summary: Get profile from Composite Profile + + description: | + Get `profile from composite profile` + + operationId: getProfile + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ProfileAppSpec' + application/octet-stream: # operation response mime type + schema: + $ref: '#/components/schemas/File' + multipart/form-data: # Media type + schema: # Request payload + $ref: '#/components/schemas/ProfileAppData' + + '404': + description: Profile not found + content: {} + put: + tags: + - Composite Profile + summary: Update Composite Profile for an app + description: Update `Profile` + operationId: updateProfile + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ProfileAppSpec' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Profile not found + content: {} + # request body documentation + requestBody: + content: + multipart/form-data: # Media type + schema: # Request payload + $ref: '#/components/schemas/ProfileAppData' + required: true + delete: # documentation for DELETE operation for this path + tags: + - Composite Profile + summary: Delete Profile + + description: | + Delete `profile in Composite Profile` + + operationId: deleteProfile + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Profile not found + content: {} + + # Qurey for Profile - Get profile for app-name + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/composite-profiles/{composite-profile-name}/profiles/: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/compositeProfileName' + - in: query + name: app-name + schema: + type: string + maxLength: 128 + required: true + + get: # documentation for GET operation for this path + tags: + - Composite Profile + summary: Query profile for an application + + description: | + Query `profile for an application` + + operationId: queryProfileForApp + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ProfileAppSpec' + application/octet-stream: # operation response mime type + schema: + $ref: '#/components/schemas/File' + multipart/form-data: # Media type + schema: # Request payload + $ref: '#/components/schemas/ProfileAppData' + '404': + description: Profile for application not found + content: {} + + + +############################ Deployment Intent Group API'S ################################################# + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + post: + tags: + - Deployment Intent Group + summary: Add Deployment Intent Group + description: Add a new `deployment intent group` + operationId: addDeploymentIntentGroup + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentGroupIntent' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentGroupIntent' + description: Deployment Intent Group definition + required: true + get: # documentation for GET operation for this path + tags: + - Deployment Intent Group + summary: Get all Deployment Intent Group + + description: | + Get all `Deployment Intent Group` + + operationId: getAllDeploymentIntentGroup + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/DeploymentGroupIntentArray' + '404': + description: No Deployment Intent Group found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + get: # documentation for GET operation for this path + tags: + - Deployment Intent Group + summary: Get Deployment Intent Group + + description: | + Get `Deployment Intent Group` + + operationId: getDeploymentIntentGroupByName + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/DeploymentGroupIntent' + '404': + description: Deployment Intent Group not found + content: {} + put: + tags: + - Deployment Intent Group + summary: Update Deployment Intent Group + description: Update `Deployment Intent Group` + operationId: updateDeploymentIntentGroup + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/DeploymentGroupIntent' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Deployment Intent Group not found + content: {} + # request body documentation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentGroupIntent' + description: Deployment Intent Group definition + required: true + + delete: # documentation for DELETE operation for this path + tags: + - Deployment Intent Group + summary: Delete Deployment Intent Group + + description: | + Delete `Deployment Intent Group` + + operationId: deleteDeploymentIntentGroupByName + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Deployment Intent Group not found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/intents/: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + post: + tags: + - Deployment Intent Group + summary: Add Intent + description: Add `deployment Intent` + operationId: addIntentToDeploymentIntentGroup + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/DeploymentIntent' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: # Media type + schema: # Request payload + $ref: '#/components/schemas/DeploymentIntent' + get: # documentation for GET operation for this path + tags: + - Deployment Intent Group + summary: Get all intents in Deployment Intent Group + + description: | + Get all `intents in deployment intent group` + + operationId: getAllIntentsInDeploymentIntentGroup + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/DeploymentIntentArray' + '404': + description: No Deployment Intent Group found + content: {} + + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/intents/{intent-name}: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - $ref: '#/components/parameters/intentName' + + get: # documentation for GET operation for this path + tags: + - Deployment Intent Group + summary: Get intent for an application + + description: | + Get `Deployment Intent` + + operationId: getIntentForDeploymentIntentGroup + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/DeploymentIntent' + + '404': + description: Deployment Intent not found + content: {} + put: + tags: + - Deployment Intent Group + summary: Update intent + description: Update `deployment intent` + operationId: updateIntentToDeploymentIntentGroup + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/DeploymentIntent' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Intent not found + content: {} + # request body documentation + requestBody: + content: + application/json: # Media type + schema: # Request payload + $ref: '#/components/schemas/DeploymentIntent' + required: true + delete: # documentation for DELETE operation for this path + tags: + - Deployment Intent Group + summary: Delete intent + + description: | + Delete `intent` + + operationId: deleteIntentFromDeploymentIntentGroup + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Deployment intent not found + content: {} + #Query + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/intents: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - in: query + name: intent + schema: + type: string + maxLength: 128 + required: true + + get: # documentation for GET operation for this path + tags: + - Deployment Intent Group + summary: Query intent + + description: | + Query `Deployment Intent` + + operationId: queryIntentForDeploymentIntentGroup + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/DeploymentIntent' + '404': + description: Deployment Intent not found + content: {} + +############################ GENERIC PLACEMENT INTENT API'S ################################################# + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/generic-placement-intents: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + post: + tags: + - Generic Placement Intent + summary: Add Generic Placement Intent + description: Add a new `generic placement intent` + operationId: addGenericPlacementIntent + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + description: Generic Placement Intent definition + required: true + + get: # documentation for GET operation for this path + tags: + - Generic Placement Intent + summary: Get all Generic Placement Intents + + description: | + Get all `Generic Placement Intents` + + operationId: getAllGenericPlacementIntents + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/GenericPlacementIntentArray' + '404': + description: No Generic Placement Intent found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/generic-placement-intents/{generic-placement-intent-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - $ref: '#/components/parameters/genericPlacementIntentName' + get: # documentation for GET operation for this path + tags: + - Generic Placement Intent + summary: Get Generic Placement Intent + + description: | + Get `generic placement intent` + + operationId: getGenericPlacementIntentByName + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '404': + description: Generic Placement Intent not found + content: {} + put: + tags: + - Generic Placement Intent + summary: Update Generic Placement Intent + description: Update `Generic Placement Intent` + operationId: updateGenericPlacementIntent + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Generic Placement Intent not found + content: {} + # request body documentation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + description: Generic Placement Intent definition + required: true + delete: # documentation for DELETE operation for this path + tags: + - Generic Placement Intent + summary: Delete Generic Placement Intent + + description: | + Delete `Generic Placement Intent` + + operationId: deleteGenericPlacementIntentByName + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Generic Placement Intent not found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/generic-placement-intents/{generic-placement-intent-name}/app-intents: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - $ref: '#/components/parameters/genericPlacementIntentName' + post: + tags: + - Generic Placement Intent + summary: Add intent for an application + description: Add a `intent for application` + operationId: addIntentToGenericPlacementIntent + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/GenericPlacementAppIntent' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: # Media type + schema: # Request payload + $ref: '#/components/schemas/GenericPlacementAppIntent' + get: # documentation for GET operation for this path + tags: + - Generic Placement Intent + summary: Get all Intents in Generic Placement + + description: | + Get all ` Intents in Generic Placement Intent` + + operationId: getAllIntentsInGenericPlacementIntents + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/GenericPlacementAppIntentArray' + '404': + description: No Generic Placement Intent found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/generic-placement-intents/{generic-placement-intent-name}/app-intents/{intent-name}: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - $ref: '#/components/parameters/genericPlacementIntentName' + - $ref: '#/components/parameters/intentName' + + get: # documentation for GET operation for this path + tags: + - Generic Placement Intent + summary: Get intent + + description: | + Get `generic placement intent` + + operationId: getIntentfromGenericPlacementIntent + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/GenericPlacementAppIntent' + + '404': + description: Intent not found + content: {} + put: + tags: + - Generic Placement Intent + summary: Update intent for an application + description: Update `generic placement intent for application` + operationId: updateIntentToGenericPlacementIntent + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/GenericPlacementAppIntent' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Generic placement intent not found + content: {} + # request body documentation + requestBody: + content: + application/json: # Media type + schema: # Request payload + $ref: '#/components/schemas/GenericPlacementAppIntent' + required: true + + delete: # documentation for DELETE operation for this path + tags: + - Generic Placement Intent + summary: Delete intent + + description: | + Delete `generic placement intent` + + operationId: deleteIntentFromGenericPlacementIntent + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Intent not found + content: {} + + # Qurey for Intent - Get intent for app-name + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/generic-placement-intents/{generic-placement-intent-name}/app-intents/: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - $ref: '#/components/parameters/genericPlacementIntentName' + - in: query + name: app-name + schema: + type: string + maxLength: 128 + required: true + + get: # documentation for GET operation for this path + tags: + - Generic Placement Intent + summary: Query intent for an application + + description: | + Query `generic placement intent for application` + + operationId: queryIntentfromGenericPlacementIntent + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/GenericPlacementAppIntent' + '404': + description: Generic Placement Intent for application not found + content: {} + + +####################Lifecycle Management####################################### + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/approve: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + post: + tags: + - Deployment Lifecycle + summary: Approve a Deployment + description: Approve a Deployment + operationId: approveDeploymentIntentGroup + responses: + '201': + description: Success + content: {} + '405': + description: Invalid Input + content: {} + requestBody: + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/instantiate: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + post: + tags: + - Deployment Lifecycle + summary: Instantiate a Deployment + description: Instantiate a Deployment + operationId: instantiateDeploymentIntentGroup + responses: + '201': + description: Success + content: {} + '405': + description: Invalid Input + content: {} + requestBody: + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/terminate: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + post: + tags: + - Deployment Lifecycle + summary: Terminate a Deployment + description: Terminate a Deployment + operationId: terminateDeploymentIntentGroup + responses: + '200': + description: Success + content: {} + '405': + description: Invalid Input + content: {} + requestBody: + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/status: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - in: query + name: type + description: source of status information + schema: + type: string + enum: [rsync, cluster] + default: rsync + - in: query + name: output + description: output format + schema: + type: string + enum: [summary, all, detail] + default: all + - in: query + name: instance + description: instance identifier + schema: + type: string + maxLength: 32 + - in: query + name: app + description: app name + schema: + type: string + maxLength: 64 + - in: query + name: cluster + description: cluster-provider+cluster + schema: + type: string + maxLength: 128 + - in: query + name: resource + description: resource name + schema: + type: string + maxLength: 64 + get: + tags: + - Deployment Lifecycle + summary: Status of Deployment + description: Status of Deployment + operationId: statusDeploymentIntentGroup + responses: + '200': + description: Success + content: {} + '404': + description: No Status found + content: {} + +############################ Controller Registration API'S ################################################# + /controllers: + post: + tags: + - Controller Registration + summary: Controller Registration + description: Add a new `controller` + operationId: addController + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Controller' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Controller' + description: Controller Info + required: true + get: # documentation for GET operation for this path + tags: + - Controller Registration + summary: Get all controllers + + description: | + Get all `controllers` + + operationId: getControllers + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ControllerArray' + '404': + description: No controllers found + content: {} + + /controllers/{controller-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/controllerName' + get: # documentation for GET operation for this path + tags: + - Controller Registration + summary: Get controller by name + + description: | + Get `controller` + + operationId: getController + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Controller' + '404': + description: Controller not found + content: {} + put: + tags: + - Controller Registration + summary: Update controller + description: Update `controller` + operationId: updateController + responses: + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Controller' + '400': + description: Invalid data + content: {} + '404': + description: Controller not found + content: {} + # request body documentation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Controller' + description: Update controllers object + required: true + delete: # documentation for DELETE operation for this path + tags: + - Controller Registration + summary: Delete controller + + description: | + Delete `controller` + + operationId: deleteController + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Controller not found + content: {} + +############################ Cluster Provider API'S ################################################# + /cluster-providers: + post: + tags: + - Cluster Providers + summary: Cluster Providers + description: Add a new `cluster provider` + operationId: addClusterProvider + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + description: Cluster Providers Info + required: true + get: # documentation for GET operation for this path + tags: + - Cluster Providers + summary: Get all cluster providers + + description: | + Get all `cluster providers` + + operationId: getAllClusterProviders + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '404': + description: No cluster provider found + content: {} + + /cluster-providers/{cluster-providers-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + get: # documentation for GET operation for this path + tags: + - Cluster Providers + summary: Get cluster provider by name + + description: | + Get `cluster provider` + + operationId: getClusterProviderByName + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '404': + description: Cluster Provider not found + content: {} + put: + tags: + - Cluster Providers + summary: Update cluster provider + description: Update `cluster providers` + operationId: updateClusterProviders + responses: + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '400': + description: Invalid data + content: {} + '404': + description: Cluster Provider not found + content: {} + # request body documentation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + description: Update cluster provider object + required: true + delete: # documentation for DELETE operation for this path + tags: + - Cluster Providers + summary: Delete cluster provider by name + + description: | + Delete `cluster provider` + + operationId: deleteClusterProviderByName + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Cluster Provider not found + content: {} + + /cluster-providers/{cluster-providers-name}/clusters: + parameters: + - $ref: '#/components/parameters/clusterProviderName' + post: + tags: + - Clusters + summary: Add Cluster + description: Add a new `cluster` + operationId: addClusterToClusterProvider + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '405': + description: Invalid Input + content: {} + requestBody: + content: + multipart/form-data: # Media type + schema: # Request payload + $ref: '#/components/schemas/AppData' + get: # documentation for GET operation for this path + tags: + - Clusters + summary: Get all clusters for cluster provider + + description: | + Get all `clusters for cluster provider` + + operationId: getAllClusterForClusterProvider + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/MetadataArray' + '404': + description: No clusters found in cluster provider + content: {} + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + get: # documentation for GET operation for this path + tags: + - Clusters + summary: Get Cluster + + description: | + Get `cluster` + + operationId: getClusterForClusterProvider + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + application/octet-stream: # operation response mime type + schema: + $ref: '#/components/schemas/File' + multipart/form-data: # Media type + schema: # Request payload + $ref: '#/components/schemas/AppData' + + '404': + description: Cluster not found + content: {} + put: + tags: + - Clusters + summary: Update Cluster + description: Update `cluster` + operationId: updateClusterToClusterProvider + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Cluster not found + content: {} + # request body documentation + requestBody: + content: + multipart/form-data: # Media type + schema: # Request payload + $ref: '#/components/schemas/AppData' + required: true + + delete: # documentation for DELETE operation for this path + tags: + - Clusters + summary: Delete cluster + + description: | + Delete `cluster` + + operationId: deleteClusterFromClusterProvider + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Cluster not found + content: {} + +############################ Cluster Labels API'S ################################################# + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/labels: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + post: + tags: + - Clusters + summary: Add label to Cluster + description: Add a new label to `cluster` + operationId: addLabelToCluster + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ClusterLabel' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterLabel' + description: Cluster Label + required: true + get: # documentation for GET operation for this path + tags: + - Clusters + summary: Get all Labels + + description: | + Get all `labels` + + operationId: getAllLabelsForCluster + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ClusterLabel' + '404': + description: No labels found + content: {} + + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/labels/{cluster-label-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + - $ref: '#/components/parameters/clusterLabelName' + get: # documentation for GET operation for this path + tags: + - Clusters + summary: Get label + + description: | + Get `cluster label` + + operationId: getLabelForCluster + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ClusterLabel' + '404': + description: label not found + content: {} + put: + tags: + - Clusters + summary: Update label + description: Update label for `cluster` + operationId: updateLabelForCluster + responses: + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ClusterLabel' + '400': + description: Invalid data + content: {} + '404': + description: Label not found + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterLabel' + description: Cluster Label + required: true + delete: # documentation for DELETE operation for this path + tags: + - Clusters + summary: Delete cluster label + + description: | + Delete `label` + + operationId: deleteLabelForCluster + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Label not found + content: {} + +# Qurey for label - Get clusters for label + /cluster-providers/{cluster-providers-name}/clusters/: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - in: query + name: label + schema: + type: string + maxLength: 128 + required: true + get: # documentation for GET operation for this path + tags: + - Clusters + summary: Get clusters for label + + description: | + Get `clusters for label` + operationId: getClustersForLabel + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/MetadataArray' + '404': + description: label not found + content: {} + +############################ Cluster Key Value API'S ################################################# + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/kv-pairs: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + post: + tags: + - Clusters + summary: Add kv pair to Cluster + description: Add kv pair to `cluster` + operationId: addKvpairToCluster + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ClusterKv' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterKv' + description: Cluster KV Pair + required: true + get: # documentation for GET operation for this path + tags: + - Clusters + summary: Get all KV Pairs + + description: | + Get all `KV Pairs` + + operationId: getAllKvpairForCluster + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ClusterKv' + '404': + description: No labels found + content: {} + + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/kv-pairs/{kv-pair-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + - $ref: '#/components/parameters/clusterKvpairName' + get: # documentation for GET operation for this path + tags: + - Clusters + summary: Get KV Pair + + description: | + Get `KV pair` for cluster + + operationId: getKvpairForCluster + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ClusterKv' + '404': + description: KV pair not found + content: {} + put: + tags: + - Clusters + summary: Update KV Pair + description: Update KV Pair for `cluster` + operationId: updateKvPairForCluster + responses: + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ClusterKv' + '400': + description: Invalid data + content: {} + '404': + description: KV Pair not found + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterKv' + description: Cluster Label + required: true + delete: # documentation for DELETE operation for this path + tags: + - Clusters + summary: Delete cluster KV pair + + description: | + Delete `KV pair` + + operationId: deleteKvpairForCluster + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: KV pair not found + content: {} + + #Query Key Value + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/kv-pairs/{kv-pair-name}/: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + - $ref: '#/components/parameters/clusterKvpairName' + - in: query + name: key + schema: + type: string + maxLength: 128 + required: true + get: # documentation for GET operation for this path + tags: + - Clusters + summary: Query KV Pair + + description: | + Query `KV pair` for cluster + + operationId: queryKvpairForCluster + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Kv' + '404': + description: KV pair not found + content: {} + +############################ Cluster Virtual Networks API'S ################################################# + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/networks: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + post: + tags: + - Networks + summary: Add virtual network in cluster + description: Add a `virtual network in cluster` + operationId: addVirtualNetworkToCluster + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/VirtualNetwork' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/VirtualNetwork' + description: Add virtual network + required: true + get: # documentation for GET operation for this path + tags: + - Networks + summary: Get all cluster virtual networks + + description: | + Get all `virtual networks for a cluster` + + operationId: getAllVirtualNetworksForCluster + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/VirtualNetwork' + '404': + description: No virtual networks found + content: {} + + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/networks/{network-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + - $ref: '#/components/parameters/clusterNetworkName' + get: # documentation for GET operation for this path + tags: + - Networks + summary: Get virtual network + + description: | + Get `virtual network` + + operationId: getVirtualNetworkForCluster + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/VirtualNetwork' + '404': + description: Network not found + content: {} + delete: # documentation for DELETE operation for this path + tags: + - Networks + summary: Delete virtual network + + description: | + Delete `virtual network` + + operationId: deleteVirtualNetworkForCluster + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Network not found + content: {} + +############################ Cluster Provider Networks API'S ################################################# + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/provider-networks: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + post: + tags: + - Networks + summary: Add provider network in cluster + description: Add a `provider network in cluster` + operationId: addProviderNetworkToCluster + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ProviderNetwork' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProviderNetwork' + description: Add provider network + required: true + get: # documentation for GET operation for this path + tags: + - Networks + summary: Get all cluster provider networks + + description: | + Get all `provider networks for a cluster` + + operationId: getAllProviderNetworksForCluster + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ProviderNetwork' + '404': + description: No provider networks found + content: {} + + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/provider-networks/{network-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + - $ref: '#/components/parameters/clusterNetworkName' + get: # documentation for GET operation for this path + tags: + - Networks + summary: Get Provider Network + + description: | + Get `provider network` + + operationId: getProviderNetworkForCluster + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/ProviderNetwork' + '404': + description: Provider network not found + content: {} + delete: # documentation for DELETE operation for this path + tags: + - Networks + summary: Delete Provider Network + + description: | + Delete `Provider Network` + + operationId: deleteProviderNetworkForCluster + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Name not found + content: {} + + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/apply: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + post: + tags: + - Networks + summary: Apply configuration for the cluster + description: Apply configuration for the cluster to create networks + operationId: applyNetworksForCluster + responses: + '201': + description: Success + content: {} + '405': + description: Invalid Input + content: {} + requestBody: + content: {} + + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/terminate: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + post: + tags: + - Networks + summary: Apply configuration for the cluster + description: Apply configuration for the cluster to create networks + operationId: terminateNetworksForCluster + responses: + '201': + description: Success + content: {} + '405': + description: Invalid Input + content: {} + requestBody: + content: {} + + + /cluster-providers/{cluster-providers-name}/clusters/{cluster-name}/status: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/clusterProviderName' + - $ref: '#/components/parameters/clusterName' + - in: query + name: type + description: source of status information + schema: + type: string + enum: [rsync, cluster] + default: rsync + - in: query + name: output + description: output format + schema: + type: string + enum: [summary, all, detail] + default: all + - in: query + name: instance + description: instance identifier + schema: + type: string + maxLength: 32 + - in: query + name: app + description: app name + schema: + type: string + maxLength: 64 + - in: query + name: cluster + description: cluster-provider+cluster + schema: + type: string + maxLength: 128 + - in: query + name: resource + description: resource name + schema: + type: string + maxLength: 64 + get: + tags: + - Networks + summary: Query status of cluster network intents + description: Query status of cluster network intents + operationId: statusNetworksForCluster + responses: + '200': + description: Success + content: {} + '404': + description: No Status found + content: {} + + +######################## Network Controller Intent API's########################################## + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/network-controller-intent: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + post: + tags: + - Network Controller Intent + summary: Network Controller Intent API's + description: Add a new `network controller intent` + operationId: addNetworkControllerIntent + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + get: # documentation for GET operation for this path + tags: + - Network Controller Intent + summary: Get all Network Controller Intent + + description: | + Get all `network controller intent` + + operationId: getAllNetworkControllerIntent + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/MetadataArray' + '404': + description: No Network Controller Intent found + content: {} + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/network-controller-intent/{net-control-intent}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - $ref: '#/components/parameters/netControlIntent' + get: # documentation for GET operation for this path + tags: + - Network Controller Intent + summary: Get Network Controller Intent + + description: | + Get `network controller intent` + + operationId: getNetworkControllerIntent + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + '404': + description: Network Controller Intent not found + content: {} + put: + tags: + - Network Controller Intent + summary: Update Network Controller Intent + description: Update `Network Controller Intent` + operationId: updateNetworkControllerIntent + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Network Controller Intent not found + content: {} + # request body documentation + requestBody: + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/Metadata' + required: true + delete: # documentation for DELETE operation for this path + tags: + - Network Controller Intent + summary: Delete Network Controller Intent + + description: | + Delete `Network Controller Intent` + + operationId: deleteNetworkControllerIntent + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Network Controller Intent not found + content: {} +################## Workload Intents################################## + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/network-controller-intent/{net-control-intent}/workload-intents: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - $ref: '#/components/parameters/netControlIntent' + post: + tags: + - Network Controller Intent + summary: Network Controller Workload Intent API's + description: Add a new `network controller workload intent` + operationId: addNetworkControllerWorkloadIntent + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadSpec' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadSpec' + get: # documentation for GET operation for this path + tags: + - Network Controller Intent + summary: Get Network Controller Workload Intent + + description: | + Get all `network controller workload intent` + + operationId: getAllNetworkControllerWorkloadIntent + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadSpecArray' + '404': + description: No Network Controller Workload Intent found + content: {} + + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/network-controller-intent/{net-control-intent}/workload-intents/{workload-intent-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - $ref: '#/components/parameters/netControlIntent' + - $ref: '#/components/parameters/netControlWorkloadIntent' + get: # documentation for GET operation for this path + tags: + - Network Controller Intent + summary: Get Network Controller Workload Intent + + description: | + Get `network controller workload intent` + + operationId: getNetworkControllerWorkloadIntent + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadSpec' + '404': + description: Network Controller Workload Intent not found + content: {} + put: + tags: + - Network Controller Intent + summary: Update Network Controller Workload Intent + description: Update `Network Controller Workload Intent` + operationId: updateNetworkControllerWorkloadIntent + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadSpec' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Network Controller Workload Intent not found + content: {} + # request body documentation + requestBody: + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadSpec' + required: true + delete: # documentation for DELETE operation for this path + tags: + - Network Controller Intent + summary: Delete Network Controller Workload Intent + + description: | + Delete `Network Controller Workload Intent` + + operationId: deleteNetworkControllerWorkloadIntent + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Network Controller Workload Intent not found + content: {} + +################## Workload Intents Interfaces ################################## + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/network-controller-intent/{net-control-intent}/workload-intents/{workload-intent-name}/interfaces: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - $ref: '#/components/parameters/netControlIntent' + - $ref: '#/components/parameters/netControlWorkloadIntent' + post: + tags: + - Network Controller Intent + summary: Network Controller Workload Interface API's + description: Add a new `network controller workload interface` + operationId: addNetworkControllerWorkloadInterface + responses: + '201': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadInterface' + '405': + description: Invalid Input + content: {} + requestBody: + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadInterface' + get: # documentation for GET operation for this path + tags: + - Network Controller Intent + summary: Get all Network Controller Workload Interface + + description: | + Get all `network controller workload interface` + + operationId: getAllNetworkControllerWorkloadInterface + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadInterfaceArray' + '404': + description: No Network Controller Workload Interface found + content: {} + /projects/{project-name}/composite-apps/{composite-app-name}/{composite-app-version}/deployment-intent-groups/{deployment-intent-group-name}/network-controller-intent/{net-control-intent}/workload-intents/{workload-intent-name}/interfaces/{interface-name}: + # parameters list that are used with each operation for this path + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/compositeAppName' + - $ref: '#/components/parameters/compositeAppVersion' + - $ref: '#/components/parameters/deploymentIntentGroupName' + - $ref: '#/components/parameters/netControlIntent' + - $ref: '#/components/parameters/netControlWorkloadIntent' + - $ref: '#/components/parameters/netControlWorkloadInterface' + get: # documentation for GET operation for this path + tags: + - Network Controller Intent + summary: Get Network Controller Workload Interface + + description: | + Get `network controller workload interface` + + operationId: getNetworkControllerWorkloadInterface + responses: # list of responses + '200': + description: Success + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadInterface' + '404': + description: Network Controller Workload Interface not found + content: {} + put: + tags: + - Network Controller Intent + summary: Update Network Controller Workload Interface + description: Update `Network Controller Workload Interface` + operationId: updateNetworkControllerWorkloadInterface + responses: + '200': + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadInterface' + description: Success + '400': + description: Invalid data + content: {} + '404': + description: Network Controller Workload Interface not found + content: {} + # request body documentation + requestBody: + content: + application/json: # operation response mime type + schema: + $ref: '#/components/schemas/NetworkWorkloadInterface' + required: true + + delete: # documentation for DELETE operation for this path + tags: + - Network Controller Intent + summary: Delete Network Controller Workload Interface + + description: | + Delete `Network Controller Workload Interface` + + operationId: deleteNetworkControllerWorkloadInterface + responses: # list of responses + '204': + description: Deleted + content: {} + '400': + description: Invalid data + content: {} + '404': + description: Network Controller Workload Interface not found + content: {} + +############################ Logical Cloud API's ################################################# + /projects/{project-name}/logical-clouds: + parameters: + - $ref: '#/components/parameters/projectName' + post: + tags: + - Logical Clouds + summary: Add a new Logical Cloud + description: Add a new Logical Cloud + operationId: addLogicalCloud + responses: + '201': + description: Logical Clouds successfully created + content: + application/json: + schema: + $ref: '#/components/schemas/LogicalCloud' + '400': + description: Empty body or missing name + content: {} + '404': + description: The specified project doesn't exist + content: {} + '422': + description: Invalid input + content: {} + '500': + description: Internal error creating or returning Logical Cloud + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LogicalCloud' + description: Logical Cloud info + required: true + get: + tags: + - Logical Clouds + summary: Get all Logical Clouds + description: Get all Logical Clouds + operationId: getAllLogicalCloud + responses: + '200': + description: List of Logical Clouds successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/LogicalCloudArray' + '500': + description: Internal error while looking up Logical Clouds or encoding response + content: {} + + /projects/{project-name}/logical-clouds/{logical-cloud-name}: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + get: + tags: + - Logical Clouds + summary: Get Logical Cloud + description: Get Logical Cloud + operationId: getLogicalCloudByName + responses: + '200': + description: Logical Cloud successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/LogicalCloud' + '404': + description: Logical Cloud not found + content: {} + '500': + description: Internal error while looking up Logical Cloud or encoding response + content: {} + put: + tags: + - Logical Clouds + summary: Update Logical Cloud + description: Update Logical Cloud + operationId: updateLogicalClouds + responses: + '200': + description: Logical Cloud successfully updated + content: + application/json: + schema: + $ref: '#/components/schemas/LogicalCloud' + '400': + description: Empty body or missing name + content: {} + '404': + description: Logical Cloud not found + content: {} + '422': + description: Invalid input + content: {} + '500': + description: Internal error while updating up Logical Cloud or encoding response + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LogicalCloud' + description: Update Logical Cloud object + required: true + delete: + tags: + - Logical Clouds + summary: Delete Logical Cloud + description: Delete `Logical Cloud` + operationId: deleteLogicalCloudByName + responses: + '204': + description: Logical Cloud deleted + content: {} + '404': + description: Logical Cloud not found + content: {} + '409': + description: Logical Cloud is applied or being terminated + content: {} + '500': + description: Internal error + content: {} + /projects/{project-name}/logical-clouds/{logical-cloud-name}/apply: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + post: + tags: + - Logical Clouds + summary: Apply Logical Cloud configuration + description: Apply Logical Cloud configuration + operationId: applyLogicalCloud + responses: + '200': + description: Logical Cloud applied over clusters + content: {} + '400': + description: Logical Cloud lacks the necessary resources + content: {} + '404': + description: Logical Cloud does not exist + content: {} + '409': + description: Logical Cloud has already been applied or is being terminated + content: {} + '500': + description: Internal error + content: {} + requestBody: + content: {} + /projects/{project-name}/logical-clouds/{logical-cloud-name}/terminate: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + post: + tags: + - Logical Clouds + summary: Terminate Logical Cloud deployment + description: Terminate Logical Cloud deployment + operationId: terminateLogicalCloud + responses: + '200': + description: Logical Cloud removed from clusters + content: {} + '404': + description: Logical Cloud does not exist + content: {} + '409': + description: Logical Cloud has not been applied or is already terminating + content: {} + '500': + description: Internal error + content: {} + requestBody: + content: {} + +############################ Logical Cloud Cluster Reference API's ############################### + /projects/{project-name}/logical-clouds/{logical-cloud-name}/cluster-references: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + post: + tags: + - Logical Cloud Cluster References + summary: Add Cluster Reference to Logical Cloud + description: Add Cluster Reference to Logical Cloud + operationId: addClusterReference + responses: + '201': + description: Cluster Reference successfully created + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterReference' + '400': + description: Empty body or missing name + content: {} + '422': + description: Invalid input + content: {} + '500': + description: Internal error + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterReference' + get: + tags: + - Logical Cloud Cluster References + summary: Get all Cluster References for Logical Cloud + description: Get all Cluster References for Logical Cloud + operationId: getAllClusters + responses: + '200': + description: Cluster References successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterReferenceArray' + '500': + description: Internal error + content: {} + /projects/{project-name}/logical-clouds/{logical-cloud-name}/cluster-references/{cluster-reference}: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + - $ref: '#/components/parameters/clusterReference' + get: + tags: + - Logical Cloud Cluster References + summary: Get Cluster Reference + description: Get Cluster Reference + operationId: getClusterReference + responses: + '200': + description: Cluster Reference successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterReference' + + '404': + description: Cluster Reference not found + content: {} + '500': + description: Internal error + content: {} + put: + tags: + - Logical Cloud Cluster References + summary: Update Cluster Reference + description: Update Cluster Reference + operationId: updateClusterReference + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterReference' + description: Cluster Reference successfully updated + '400': + description: Invalid data or missing name + content: {} + '404': + description: Cluster Reference not found + content: {} + '422': + description: Invalid input + content: {} + '500': + description: Internal error + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterReference' + required: true + delete: + tags: + - Logical Cloud Cluster References + summary: Delete Cluster Reference + description: Delete Cluster Reference + operationId: deleteClusterReference + responses: + '204': + description: Deleted + content: {} + '500': + description: Internal error + content: {} + /projects/{project-name}/logical-clouds/{logical-cloud-name}/cluster-references/{cluster-reference}/kubeconfig: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + - $ref: '#/components/parameters/clusterReference' + get: + tags: + - Logical Cloud Cluster References + summary: Get kubeconfig of Cluster Reference + description: Get kubeconfig of Cluster Reference + operationId: getClusterReferenceKubeconfig + responses: + '200': + description: Cluster Reference successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterReference' + '202': + description: User certificate hasn't been issued yet + content: {} + '400': + description: Logical Cloud hasn't been applied + content: {} + '404': + description: Cluster Reference not found + content: {} + '500': + description: Internal error + content: {} +############################ Logical Cloud User Permission API's ################################# + /projects/{project-name}/logical-clouds/{logical-cloud-name}/user-permissions: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + post: + tags: + - Logical Cloud User Permissions + summary: Add User Permission to Logical Cloud + description: Add User Permission to Logical Cloud + operationId: addUserPermission + responses: + '201': + description: User Permission successfully created + content: + application/json: + schema: + $ref: '#/components/schemas/UserPermission' + '400': + description: Empty body or missing name + content: {} + '422': + description: Invalid input + content: {} + '500': + description: Internal error + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserPermission' + get: + tags: + - Logical Cloud User Permissions + summary: Get all User Permissions for Logical Cloud + description: Get all User Permissions for Logical Cloud + operationId: getAllUserPermissions + responses: + '200': + description: User Permissions successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/UserPermissionArray' + '500': + description: Internal error + content: {} + /projects/{project-name}/logical-clouds/{logical-cloud-name}/user-permissions/{user-permission}: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + - $ref: '#/components/parameters/userPermission' + get: + tags: + - Logical Cloud User Permissions + summary: Get User Permission + description: Get User Permission + operationId: getUserPermission + responses: + '200': + description: User Permission successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/UserPermission' + + '404': + description: User Permission not found + content: {} + '500': + description: Internal error + content: {} + put: + tags: + - Logical Cloud User Permissions + summary: Update User Permission + description: Update User Permission + operationId: updateUserPermission + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserPermission' + description: User Permission successfully updated + '400': + description: Invalid data or missing name + content: {} + '404': + description: User Permission not found + content: {} + '422': + description: Invalid input + content: {} + '500': + description: Internal error + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserPermission' + required: true + delete: + tags: + - Logical Cloud User Permissions + summary: Delete User Permission + description: Delete User Permission + operationId: deleteUserPermission + responses: + '204': + description: Deleted + content: {} + '500': + description: Internal error + content: {} +############################ Logical Cloud Cluster Quota API's ################################### + /projects/{project-name}/logical-clouds/{logical-cloud-name}/cluster-quotas: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + post: + tags: + - Logical Cloud Cluster Quotas + summary: Add Cluster Quota to Logical Cloud + description: Add Cluster Quota to Logical Cloud + operationId: addClusterQuota + responses: + '201': + description: Cluster Quota successfully created + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterQuota' + '400': + description: Empty body or missing name + content: {} + '422': + description: Invalid input + content: {} + '500': + description: Internal error + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterQuota' + get: + tags: + - Logical Cloud Cluster Quotas + summary: Get allCluster Quotas for Logical Cloud + description: Get all Cluster Quotas for Logical Cloud + operationId: getAllClusterQuotas + responses: + '200': + description: Cluster Quotas successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterQuotaArray' + '500': + description: Internal error + content: {} + /projects/{project-name}/logical-clouds/{logical-cloud-name}/cluster-quotas/{cluster-quota}: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + - $ref: '#/components/parameters/clusterQuota' + get: + tags: + - Logical Cloud Cluster Quotas + summary: Get Cluster Quota + description: Get Cluster Quota + operationId: getClusterQuota + responses: + '200': + description: Cluster Quota successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterQuota' + + '404': + description: Cluster Quota not found + content: {} + '500': + description: Internal error + content: {} + put: + tags: + - Logical Cloud Cluster Quotas + summary: Update Cluster Quota + description: Update Cluster Quota + operationId: updateClusterQuota + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterQuota' + description: Cluster Quota successfully updated + '400': + description: Invalid data or missing name + content: {} + '404': + description: Cluster Quota not found + content: {} + '422': + description: Invalid input + content: {} + '500': + description: Internal error + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClusterQuota' + required: true + delete: + tags: + - Logical Cloud Cluster Quotas + summary: Delete Cluster Quota + description: Delete Cluster Quota + operationId: deleteClusterQuota + responses: + '204': + description: Deleted + content: {} + '500': + description: Internal error + content: {} +############################ Logical Cloud KV Pair API's ######################################### + /projects/{project-name}/logical-clouds/{logical-cloud-name}/kv-pairs: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + post: + tags: + - Logical Cloud KV Pairs + summary: Add KV Pair to Logical Cloud + description: Add KV Pair to Logical Cloud + operationId: addKVPair + responses: + '201': + description: KV Pair successfully created + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + '400': + description: Empty body or missing name + content: {} + '422': + description: Invalid input + content: {} + '500': + description: Internal error + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/KVPair' + get: + tags: + - Logical Cloud KV Pairs + summary: Get all KV Pairs for Logical Cloud + description: Get all KV Pairs for Logical Cloud + operationId: getAllKVPairs + responses: + '200': + description: KV Pairs successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/KVPairArray' + '500': + description: Internal error + content: {} + /projects/{project-name}/logical-clouds/{logical-cloud-name}/kv-pairs/{kv-pair}: + parameters: + - $ref: '#/components/parameters/projectName' + - $ref: '#/components/parameters/logicalCloudName' + - $ref: '#/components/parameters/kvPair' + get: + tags: + - Logical Cloud KV Pairs + summary: Get KV Pair + description: Get KV Pair + operationId: getKVPair + responses: + '200': + description: KV Pair successfully returned + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + + '404': + description: KV Pair not found + content: {} + '500': + description: Internal error + content: {} + put: + tags: + - Logical Cloud KV Pairs + summary: Update KV Pair + description: Update KV Pair + operationId: updateKVPair + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Metadata' + description: KV Pair successfully updated + '400': + description: Invalid data or missing name + content: {} + '404': + description: KV Pair not found + content: {} + '422': + description: Invalid input + content: {} + '500': + description: Internal error + content: {} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/KVPair' + required: true + delete: + tags: + - Logical Cloud KV Pairs + summary: Delete KV Pair + description: Delete KV Pair + operationId: deleteKVPair + responses: + '204': + description: Deleted + content: {} + '500': + description: Internal error + content: {} + +#########################SCHEMAS#################################################### +# An object to hold reusable parts that can be used across the definition +components: + schemas: + MetadataBase: + type: object + properties: + name: + description: Name of the resource + type: string + maxLength: 128 + example: "ResName" + description: + description: Description for the resource + type: string + maxLength: 1024 + example: "Resource description" + userData1: + description: User relevant data for the resource + type: string + maxLength: 512 + example: "Some data" + userData2: + description: User relevant data for the resource + type: string + maxLength: 512 + example: "Some more data" + Metadata: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + MetadataArray: + type: array + items: + $ref: '#/components/schemas/Metadata' + VersionSpec: + type: object + properties: + version: + description: Composite Application Version + type: string + maxLength: 128 + example: "v1" + CompositeAppVersion: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + $ref: '#/components/schemas/VersionSpec' + CompositeAppVersionArray: + type: array + items: + $ref: '#/components/schemas/CompositeAppVersion' + File: + type: string + format: binary + maxLength: 1073741824 + AppData: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + file: # Part 2 (Helm chart in tar.gz format) + $ref: '#/components/schemas/File' + ProfileAppSpec: + type: object + properties: + spec: + type: object + description: AppProfileSpec contains the Spec for AppProfiles + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + app-name: + type: string + description: Application Name + maxLength: 128 + example: "Application1" + required: + - app-name + ProfileAppSpecArray: + type: array + items: + $ref: '#/components/schemas/ProfileAppSpec' + ProfileAppData: + type: object + properties: + file: # Part 2 (Helm chart in tar.gz format) + $ref: '#/components/schemas/File' + metadata: + $ref: '#/components/schemas/ProfileAppSpec' + GenericPlacementIntent: + type: object + properties: + spec: + type: object + description: Spec + properties: + logical-cloud: + type: string + description: Logical Cloud to use for this intent + maxLength: 128 + example: "cloud1" + required: + - logical-cloud + metadata: + $ref: '#/components/schemas/MetadataBase' + GenericPlacementIntentArray: + type: array + items: + $ref: '#/components/schemas/GenericPlacementIntent' + GenericPlacementAppIntentSpec: + type: object + description: '' + properties: + app-name: + type: string + maxLength: 128 + example: "appl" + allOf: + items: + description: AllOf ProviderName, ClusterName, ClusterLabelName and AnyOfArray + properties: + anyOf: + items: + description: AnyOf consists of Array of ProviderName & ClusterLabelNames + properties: + cluster-label-name: + type: string + maxLength: 128 + example: "east" + cluster-name: + type: string + maxLength: 128 + example: "cluster1" + provider-name: + type: string + maxLength: 128 + example: "provider1" + type: object + type: array + cluster-label-name: + type: string + maxLength: 128 + example: "west" + cluster-name: + type: string + maxLength: 128 + example: "cluster2" + provider-name: + type: string + maxLength: 128 + example: "provider2" + type: object + type: array + anyOf: + items: + description: AnyOf consists of Array of ProviderName & ClusterLabelNames + properties: + cluster-label-name: + type: string + maxLength: 128 + example: "east" + cluster-name: + type: string + maxLength: 128 + example: "cluster1" + provider-name: + type: string + maxLength: 128 + example: "provider1" + type: object + type: array + GenericPlacementAppIntent: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + $ref: '#/components/schemas/GenericPlacementAppIntentSpec' + GenericPlacementAppIntentArray: + type: array + items: + $ref: '#/components/schemas/GenericPlacementAppIntent' + DeploymentIntentSpec: + type: object + description: DepSpecData has profile, version, OverrideValuesObj + properties: + override-values: + items: + description: OverrideValues has appName and ValuesObj + properties: + app-name: + type: string + values: + additionalProperties: + type: string + maxLength: 128 + type: object + required: + - app-name + - values + type: object + type: array + profile: + type: string + maxLength: 128 + version: + type: string + maxLength: 128 + logical-cloud: + type: string + description: Logical Cloud to use for this intent + maxLength: 128 + example: "cloud1" + required: + - profile + - version + - logical-cloud + DeploymentGroupIntent: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + $ref: '#/components/schemas/DeploymentIntentSpec' + DeploymentGroupIntentArray: + type: array + items: + $ref: '#/components/schemas/DeploymentGroupIntent' + DeploymentIntent: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + type: object + description: IntentSpecData has Intent + properties: + intent: + additionalProperties: + type: string + maxLength: 128 + example: + generic-placement-intent: gpi-name + type: object + required: + - intent + DeploymentIntentArray: + type: array + items: + $ref: '#/components/schemas/DeploymentIntent' + Controller: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + type: object + properties: + host: + type: string + description: Controller reachibility information + maxLength: 128 + example: "10.7.100.4" + port: + type: string + description: Port for controller + maxLength: 128 + example: "9029" + type: + type: string + description: Type of controller (placement, action are 2 types supported) + maxLength: 48 + example: "placement" + priority: + type: string + description: Priority of controller to be called + maxLength: 128 + example: "4" + required: + - host + - port + - type + - priority + ControllerArray: + type: array + items: + $ref: '#/components/schemas/Controller' + ClusterLabel: + type: object + properties: + label-name: + type: string + description: Logical Cloud to use for this intent + maxLength: 128 + example: "cluster-label-1" + ClusterKv: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + properties: + kv: + items: + additionalProperties: + type: string + maxLength: 128 + type: object + type: array + required: + - kv + type: object + required: + - metadata + - spec + Kv: + type: object + properties: + value: + type: string + maxLength: 128 + + VirtualNetwork: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + properties: + cniType: + type: string + maxLength: 128 + ipv4Subnets: + items: + properties: + excludeIps: + type: string + maxLength: 1024 + gateway: + type: string + maxLength: 128 + name: + type: string + maxLength: 128 + subnet: + type: string + maxLength: 128 + required: + - excludeIps + - gateway + - name + - subnet + type: object + type: array + VirtualNetworkArray: + type: array + items: + $ref: '#/components/schemas/VirtualNetwork' + ProviderNetwork: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + properties: + cniType: + type: string + maxLength: 128 + ipv4Subnets: + items: + properties: + excludeIps: + type: string + maxLength: 128 + gateway: + type: string + maxLength: 128 + name: + type: string + maxLength: 128 + subnet: + type: string + maxLength: 128 + required: + - excludeIps + - gateway + - name + - subnet + type: object + type: array + providerNetType: + type: string + maxLength: 128 + vlan: + properties: + logicalInterfaceName: + type: string + maxLength: 128 + nodeLabelList: + items: + type: string + maxLength: 128 + type: array + providerInterfaceName: + type: string + maxLength: 128 + vlanID: + type: string + maxLength: 128 + vlanNodeSelector: + type: string + maxLength: 128 + required: + - logicalInterfaceName + - nodeLabelList + - providerInterfaceName + - vlanID + - vlanNodeSelector + type: object + required: + - cniType + - ipv4Subnets + - providerNetType + - vlan + type: object + ProviderNetworkArray: + type: array + items: + $ref: '#/components/schemas/ProviderNetwork' + RouteBasedChain: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + properties: + chainType: + type: string + maxLength: 128 + routingSpec: + properties: + leftNetwork: + items: + properties: + gatewayIp: + type: string + maxLength: 128 + networkName: + type: string + maxLength: 128 + subnet: + type: string + maxLength: 128 + required: + - gatewayIp + - networkName + - subnet + type: object + type: array + namespace: + type: string + maxLength: 128 + networkChain: + type: string + maxLength: 128 + rightNetwork: + items: + properties: + gatewayIp: + type: string + maxLength: 128 + networkName: + type: string + maxLength: 128 + subnet: + type: string + maxLength: 128 + required: + - gatewayIp + - networkName + - subnet + type: object + type: array + required: + - leftNetwork + - namespace + - networkChain + - rightNetwork + type: object + required: + - chainType + - routingSpec + type: object + NetworkWorkloadSpec: + type: object + properties: + spec: + type: object + description: Newtwork Workload Intent + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + type: object + properties: + application-name: + type: string + description: Application Name + maxLength: 128 + example: "Application1" + workload-resource: + type: string + description: Name of the workload + maxLength: 254 + example: "firewall" + type: + type: string + description: Type of the workload + maxLength: 128 + example: "deployment" + NetworkWorkloadSpecArray: + type: array + items: + $ref: '#/components/schemas/NetworkWorkloadSpec' + NetworkWorkloadInterface: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + type: object + properties: + interface: + type: string + description: interface Name + maxLength: 128 + example: "eth0" + name: + type: string + description: Name of the network + maxLength: 128 + example: "provider-1" + defaultGateway: + type: "string" + description: Is this interface default gateway + maxLength: 128 + example: "false" + ipAddress: + type: string + description: Name of the network + maxLength: 128 + example: "0.0.0.0" + macAddress: + type: string + description: Name of the network + maxLength: 128 + example: "x.x.x.x" + required: + - interface + - name + NetworkWorkloadInterfaceArray: + type: array + items: + $ref: '#/components/schemas/NetworkWorkloadInterface' + LogicalCloud: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + type: object + properties: + namespace: + type: string + description: namespace name + maxLength: 128 + example: "ns1" + user: + properties: + user-name: + type: string + description: user name for auth + maxLength: 20 + type: + type: string + description: authentication type + maxLength: 128 + example: "certificate" + user-permissions: + type: array + items: + type: object + properties: + permission-name: + type: string + description: name of permission + maxLength: 128 + apiGroups: + type: array + items: + type: string + description: API group expression + resources: + type: array + description: K8s resource list + items: + type: string + description: K8s resource + verbs: + type: array + description: K8s verb list + items: + type: string + description: K8s verb + ClusterReference: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + type: object + properties: + cluster-provider: + type: string + description: cluster provider name + maxLength: 128 + example: "cp-1" + cluster-name: + type: string + description: cluster name + maxLength: 128 + example: "c1" + loadbalancer-ip: + type: string + description: IP address of load balancer + maxLength: 16 + example: "0.0.0.0" + UserPermission: + type: object + properties: + permission-name: + type: string + description: name of permission + maxLength: 128 + apiGroups: + type: array + items: + type: string + description: API group expression + resources: + type: array + description: K8s resource list + items: + type: string + description: K8s resource + verbs: + type: array + description: K8s verb list + items: + type: string + description: K8s verb + ClusterQuota: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + type: object + properties: + limits.cpu: + type: string + limits.memory: + type: string + requests.cpu: + type: string + requests.memory: + type: string + requests.storage: + type: string + requests.ephemeral-storage: + type: string + limits.ephemeral-storage: + type: string + persistentvolumeclaims: + type: string + pods: + type: string + configmaps: + type: string + replicationcontrollers: + type: string + resourcequotas: + type: string + services: + type: string + services.loadbalancers: + type: string + services.nodeports: + type: string + secrets: + type: string + count/replicationcontrollers: + type: string + count/deployments.apps: + type: string + count/replicasets.apps: + type: string + count/statefulsets.apps: + type: string + count/jobs.batch: + type: string + count/cronjobs.batch: + type: string + count/deployments.extensions: + type: string + KVPair: + type: object + properties: + metadata: + $ref: '#/components/schemas/MetadataBase' + spec: + type: object + properties: + kv: + type: array + description: list of key-value pairs + items: + type: object + properties: + key: + type: string + value: + type: string + LogicalCloudArray: + type: array + items: + $ref: '#/components/schemas/LogicalCloud' + ClusterReferenceArray: + type: array + items: + $ref: '#/components/schemas/ClusterReference' + UserPermissionArray: + type: array + items: + $ref: '#/components/schemas/UserPermission' + ClusterQuotaArray: + type: array + items: + $ref: '#/components/schemas/ClusterQuota' + KVPairArray: + type: array + items: + $ref: '#/components/schemas/KVPair' + + parameters: + projectName: + name: project-name + in: path + description: Name of the project + required: true + schema: + type: string + compositeAppName: + name: composite-app-name + in: path + description: Name of the Composite Application + required: true + schema: + type: string + maxLength: 128 + compositeAppVersion: + name: composite-app-version + in: path + description: Version of the Composite Application + required: true + schema: + type: string + maxLength: 128 + appName: + name: app-name + in: path + description: Name of the Application + required: true + schema: + type: string + maxLength: 128 + compositeProfileName: + name: composite-profile-name + in: path + description: Name of the Composite Profile + required: true + schema: + type: string + maxLength: 128 + profileName: + name: profile-name + in: path + description: Name of the Profile + required: true + schema: + type: string + maxLength: 128 + genericPlacementIntentName: + name: generic-placement-intent-name + in: path + description: Name of Generic Placement Intent + required: true + schema: + type: string + maxLength: 128 + intentName: + name: intent-name + in: path + description: Name of Generic Placement Intent for application + required: true + schema: + type: string + maxLength: 128 + deploymentIntentGroupName: + name: deployment-intent-group-name + in: path + description: Name of Deployment Intent Group + required: true + schema: + type: string + maxLength: 128 + clusterProviderName: + name: cluster-providers-name + in: path + description: Name of the cluster provider + required: true + schema: + type: string + maxLength: 128 + clusterName: + name: cluster-name + in: path + description: Name of the cluster + required: true + schema: + type: string + maxLength: 128 + clusterLabelName: + name: cluster-label-name + in: path + description: Name of the cluster + required: true + schema: + type: string + maxLength: 128 + clusterKvpairName: + name: kv-pair-name + in: path + description: Name of the cluster + required: true + schema: + type: string + maxLength: 128 + clusterNetworkName: + name: network-name + in: path + description: Name of the network + required: true + schema: + type: string + maxLength: 128 + netControlIntent: + name: net-control-intent + in: path + description: Name of the network + required: true + schema: + type: string + maxLength: 128 + netControlWorkloadIntent: + name: workload-intent-name + in: path + description: Name of the network + required: true + schema: + type: string + maxLength: 128 + netControlWorkloadInterface: + name: interface-name + in: path + description: Name of the network + required: true + schema: + type: string + maxLength: 128 + controllerName: + name: controller-name + in: path + description: Controller name + required: true + schema: + type: string + maxLength: 128 + logicalCloudName: + name: logical-cloud-name + in: path + description: Logical Cloud name + required: true + schema: + type: string + maxLength: 128 + clusterReference: + name: cluster-reference + in: path + description: Cluster Reference name + required: true + schema: + type: string + maxLength: 128 + userPermission: + name: user-permission + in: path + description: User Permission name + required: true + schema: + type: string + maxLength: 128 + clusterQuota: + name: cluster-quota + in: path + description: Cluster Quota name + required: true + schema: + type: string + maxLength: 128 + kvPair: + name: kv-pair + in: path + description: KV Pair name + required: true + schema: + type: string + maxLength: 128 |