openapi: 3.2.0 info: version: latest description: '# Introduction The NVIDIA Run:ai Control-Plane API reference is a guide that provides an easy-to-use programming interface for adding various tasks to your application, including workload submission, resource management, and administrative operations.' title: NVIDIA Run:ai Notification Channels API x-logo: url: https://api.redocly.com/registry/raw/runai-xq8/saas/latest/public/runai-logo-api.png altText: NVIDIA Run:ai href: https://run.ai license: name: NVIDIA Run:ai url: https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-software-license-agreement/ servers: - url: https://app.run.ai security: - bearerAuth: [] tags: - name: Notification Channels description: Notification Channels are the medium through which notifications are sent. paths: /api/v1/notification-channels: get: tags: - Notification Channels operationId: getNotificationChannels summary: Get supported Notification Channels responses: '200': description: Notification Channel types content: application/json: schema: type: array items: $ref: '#/components/schemas/NotificationChannelMeta' '401': $ref: '#/components/responses/401Unauthorized' '403': $ref: '#/components/responses/403Forbidden' '404': $ref: '#/components/responses/404NotFound' '500': $ref: '#/components/responses/500InternalServerError' '501': $ref: '#/components/responses/501NotImplemented' '503': $ref: '#/components/responses/503ServiceUnavailable' post: tags: - Notification Channels operationId: createNotificationChannelConfig summary: Create configuration of notification channel requestBody: content: application/json: schema: $ref: '#/components/schemas/NotificationChannel' responses: '200': description: Notification Channel config created '400': $ref: '#/components/responses/400BadRequest' '401': $ref: '#/components/responses/401Unauthorized' '403': $ref: '#/components/responses/403Forbidden' '404': $ref: '#/components/responses/404NotFound' '409': $ref: '#/components/responses/409Conflict' '500': $ref: '#/components/responses/500InternalServerError' '501': $ref: '#/components/responses/501NotImplemented' '503': $ref: '#/components/responses/503ServiceUnavailable' /api/v1/notification-channels/slack/create-app: post: tags: - Notification Channels operationId: createSlackApp summary: Create Slack app requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateSlackAppRequestBody' responses: '200': description: Created Slack app response content: application/json: schema: $ref: '#/components/schemas/CreateSlackAppResponse' '400': $ref: '#/components/responses/400BadRequest' '401': $ref: '#/components/responses/401Unauthorized' '403': $ref: '#/components/responses/403Forbidden' '404': $ref: '#/components/responses/404NotFound' '500': $ref: '#/components/responses/500InternalServerError' '501': $ref: '#/components/responses/501NotImplemented' '503': $ref: '#/components/responses/503ServiceUnavailable' /api/v1/notification-channels/{name}: parameters: - $ref: '#/components/parameters/NotificationChannelName' get: tags: - Notification Channels operationId: getNotificationChannelConfig summary: Get configuration of notification channel responses: '200': description: Notification channel config content: application/json: schema: $ref: '#/components/schemas/NotificationChannelResponse' '400': $ref: '#/components/responses/400BadRequest' '401': $ref: '#/components/responses/401Unauthorized' '403': $ref: '#/components/responses/403Forbidden' '404': $ref: '#/components/responses/404NotFound' '500': $ref: '#/components/responses/500InternalServerError' '501': $ref: '#/components/responses/501NotImplemented' '503': $ref: '#/components/responses/503ServiceUnavailable' patch: tags: - Notification Channels operationId: patchNotificationChannelConfig summary: Patch configuration of Notification Channel requestBody: content: application/json: schema: $ref: '#/components/schemas/NotificationChannelForPatch' responses: '200': description: Notification Channel config patched '400': $ref: '#/components/responses/400BadRequest' '401': $ref: '#/components/responses/401Unauthorized' '403': $ref: '#/components/responses/403Forbidden' '404': $ref: '#/components/responses/404NotFound' '500': $ref: '#/components/responses/500InternalServerError' '501': $ref: '#/components/responses/501NotImplemented' '503': $ref: '#/components/responses/503ServiceUnavailable' put: tags: - Notification Channels operationId: updateNotificationChannelConfig summary: Update configuration of Notification Channel requestBody: content: application/json: schema: $ref: '#/components/schemas/NotificationChannel' responses: '200': description: Notification Channel config updated '400': $ref: '#/components/responses/400BadRequest' '401': $ref: '#/components/responses/401Unauthorized' '403': $ref: '#/components/responses/403Forbidden' '404': $ref: '#/components/responses/404NotFound' '500': $ref: '#/components/responses/500InternalServerError' '501': $ref: '#/components/responses/501NotImplemented' '503': $ref: '#/components/responses/503ServiceUnavailable' delete: tags: - Notification Channels operationId: deleteNotificationChannelConfig summary: Delete configuration of Notification Channel responses: '204': description: Notification Channel config deleted '400': $ref: '#/components/responses/400BadRequest' '401': $ref: '#/components/responses/401Unauthorized' '403': $ref: '#/components/responses/403Forbidden' '404': $ref: '#/components/responses/404NotFound' '500': $ref: '#/components/responses/500InternalServerError' '501': $ref: '#/components/responses/501NotImplemented' '503': $ref: '#/components/responses/503ServiceUnavailable' /api/v1/validate-notification-channel: post: tags: - Notification Channels operationId: validateNotificationChannel summary: Validate configuration of Notification Channel requestBody: content: application/json: schema: $ref: '#/components/schemas/NotificationChannelForValidate' responses: '200': description: Notification Channel validity content: application/json: schema: example: true type: boolean '400': $ref: '#/components/responses/400BadRequest' '401': $ref: '#/components/responses/401Unauthorized' '403': $ref: '#/components/responses/403Forbidden' '404': $ref: '#/components/responses/404NotFound' '409': $ref: '#/components/responses/409Conflict' '500': $ref: '#/components/responses/500InternalServerError' '501': $ref: '#/components/responses/501NotImplemented' '503': $ref: '#/components/responses/503ServiceUnavailable' components: responses: 404NotFound: description: The specified resource was not found content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 404 message: Resource id not found. 500InternalServerError: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 500 message: Something went wrong. 503ServiceUnavailable: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 503 message: Please try again in few minutes. 409Conflict: description: The specified resource already exists content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 409 message: Resource with this name already exists 400BadRequest: description: Bad request. content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 400 message: Required parameter is missing 403Forbidden: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 403 message: You do not have sufficient permissions. 501NotImplemented: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 501 message: Not implemented 401Unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 401 message: Issuer is not familiar. schemas: NotificationChannelMeta: type: object required: - name - type properties: name: type: string type: type: string enum: - email - slack default: email example: name: my-email type: email NotificationChannelConfig: type: object allOf: - $ref: '#/components/schemas/EmailNotificationChannelConfig' - $ref: '#/components/schemas/SlackNotificationChannelConfig' SlackNotificationChannelConfig: type: object properties: recipients: type: array items: type: string default: [] directNotifications: type: - boolean - 'null' apiToken: type: string example: apiToken: NotificationChannelForValidate: type: object required: - type - config allOf: - $ref: '#/components/schemas/NotificationChannelForPatch' CreateSlackAppResponse: type: object required: - slackAppUrl properties: slackAppUrl: type: string example: slackAppUrl: https://api.slack.com/apps/A089PHD5S0Q CreateSlackAppRequestBody: type: object required: - accessToken properties: accessToken: type: string description: The access token required for creating slack app example: accessToken: REDACTED_SLACK_TOKEN NotificationChannel: type: object required: - type - config allOf: - $ref: '#/components/schemas/NotificationChannelForPatch' NotificationChannelType: type: string enum: - email - slack default: email Error: required: - code - message properties: code: type: integer minimum: 100 maximum: 599 message: type: string details: type: string example: code: 400 message: Bad request - Resource should have a name EmailNotificationChannelConfig: type: object properties: username: type: string password: type: string smtpHost: type: string from: type: string smtpPort: type: integer default: 587 authType: $ref: '#/components/schemas/EmailAuthType' smtpTlsEnabled: type: - boolean - 'null' recipients: type: array items: type: string default: [] fromDisplayName: type: string default: Run:ai directNotifications: type: - boolean - 'null' useAttachments: type: - boolean - 'null' subject: type: string default: Run:ai notification - {{ .category }} {{ .reason }} example: username: email@gmail.com password: 123456 smtpHost: smtp.gmail.com from: email@gmail.com subject: My subject NotificationChannelResponse: type: object required: - type - config - name allOf: - $ref: '#/components/schemas/NotificationChannel' - type: object properties: name: type: string EmailAuthType: type: string enum: - auth_login - auth_plain - auth_none - '' default: auth_login NotificationChannelForPatch: type: object properties: type: $ref: '#/components/schemas/NotificationChannelType' config: allOf: - $ref: '#/components/schemas/NotificationChannelConfig' example: username: email@gmail.com password: 123456 smtpHost: smtp.gmail.com from: email@gmail.com subject: My subject parameters: NotificationChannelName: name: name in: path description: Notification Channel name required: true schema: type: string securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: Bearer authentication x-tagGroups: - name: Organizations tags: - Clusters - Departments - Reports - NodePools - Nodes - Projects - Tenant - Logo - Researcher Command Line Interface - Researcher Command Line Interface Deprecated - Administrator Command Line Interface - Network Topologies - name: Authentication and Authorization tags: - Access Keys - Access rules - Permissions - Applications - Service Accounts - Roles - Tokens - Users - User Applications - Idps - Me - Settings - Org unit - name: Audit tags: - AuditLogs - name: Datavolumes tags: - Datavolumes - name: Workloads tags: - Events - Pods - Workloads - Workloads V2 - NVIDIA NIM - Workspaces - Trainings - Inferences - Revisions - Distributed - Workloads batch - Workload properties - Workload templates - Distributed Inferences - name: Workload assets tags: - Compute - Credentials - Datasources - Environment - Storage Classes - Storage Class Configuration - Git - HostPath - NFS - PVC - Registry - S3 - ConfigMap - Secret - Template - name: Policies tags: - Policy - name: Notifications tags: - Notification State - Notification Types - NotificationChannels - Subscriptions - name: AI Applications tags: - AI Applications