diff --git a/build/latest_release.sh b/build/latest_release.sh index 3dd2058bba..16cfc97f29 100644 --- a/build/latest_release.sh +++ b/build/latest_release.sh @@ -1,26 +1,26 @@ -#!/bin/bash -# GIT_REF=`git symbolic-ref HEAD` -# if [[ $GIT_REF = refs/tags* ]] -# then -# RELEASE_CHANNEL="stable" -# # export RELEASE_CHANNEL="stable" -# else -# RELEASE_CHANNEL="edge" -# # export RELEASE_CHANNEL="edge" -# fi -# # echo "Release channel determined to be $RELEASE_CHANNEL" -# LATEST_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`) -GIT_REF=`git symbolic-ref HEAD` -if [[ $GIT_REF = refs/tags* ]] -then -RELEASE_CHANNEL="stable" -# export RELEASE_CHANNEL="stable" -else -RELEASE_CHANNEL="edge" -# export RELEASE_CHANNEL="edge" -fi -echo "Release channel determined to be $RELEASE_CHANNEL" -echo LATEST_VERSION=$(git describe --tags `git rev-list --tags --max-count=1` --always) -echo GIT_VERSION=$(git describe --tags `git rev-list --tags --max-count=1` --always) -echo GIT_STRIPPED_VERSION=$(git describe --tags `git rev-list --tags --max-count=1` --always | cut -c 2-) +#!/usr/bin/env bash +# GIT_REF=`git symbolic-ref HEAD` +# if [[ $GIT_REF = refs/tags* ]] +# then +# RELEASE_CHANNEL="stable" +# # export RELEASE_CHANNEL="stable" +# else +# RELEASE_CHANNEL="edge" +# # export RELEASE_CHANNEL="edge" +# fi +# # echo "Release channel determined to be $RELEASE_CHANNEL" +# LATEST_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`) +GIT_REF=`git symbolic-ref HEAD` +if [[ $GIT_REF = refs/tags* ]] +then +RELEASE_CHANNEL="stable" +# export RELEASE_CHANNEL="stable" +else +RELEASE_CHANNEL="edge" +# export RELEASE_CHANNEL="edge" +fi +echo "Release channel determined to be $RELEASE_CHANNEL" +echo LATEST_VERSION=$(git describe --tags `git rev-list --tags --max-count=1` --always) +echo GIT_VERSION=$(git describe --tags `git rev-list --tags --max-count=1` --always) +echo GIT_STRIPPED_VERSION=$(git describe --tags `git rev-list --tags --max-count=1` --always | cut -c 2-) # env \ No newline at end of file diff --git a/compile-types.sh b/compile-types.sh index 8e8e8a4590..0bb19dc823 100755 --- a/compile-types.sh +++ b/compile-types.sh @@ -64,7 +64,7 @@ traverse_directory() { # Start traversing from the provided input directory traverse_directory "$INPUT_DIR" -# Generate OpenApi types from single openapi.yaml file +# Generate OpenApi types from single openapi.yaml file OPENAPI_FILE="$INPUT_DIR/openapi.yml" if [ -f "$OPENAPI_FILE" ]; then npx openapi-typescript "$OPENAPI_FILE" --output "$OUTPUT_DIR/openapi.d.ts" @@ -74,4 +74,4 @@ else fi -echo "Processing complete. Output files are in '$OUTPUT_DIR'." +echo "Processing complete. Output files are in '$OUTPUT_DIR'." \ No newline at end of file diff --git a/openapi.d.ts b/openapi.d.ts deleted file mode 100644 index 9bb124d473..0000000000 --- a/openapi.d.ts +++ /dev/null @@ -1,7822 +0,0 @@ -/** - * This file was auto-generated by openapi-typescript. - * Do not make direct changes to the file. - */ - -export interface paths { - "/api/content/applications": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get Applications - * @description Get paginated applications - */ - get: operations["GetApplications"]; - put?: never; - /** - * Upsert Application - * @description It will insert the application if not present else it will update the matching entry - */ - post: operations["UpsertApplication"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/content/applications/upload/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Upsert application source content - * @description Upserts only application source content - */ - post: operations["UpsertApplicationSourceContent"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/content/applications/download/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get application source content - * @description Get application source content - */ - get: operations["GetApplicationSourceContent"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/content/applications/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get application by ID - * @description Get application by ID - */ - get: operations["GetApplication"]; - put?: never; - post?: never; - /** - * Delete application by ID - * @description Delete application associated with ID - */ - delete: operations["DeleteApplication"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/capabilities": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Capabilities - * @deprecated - * @description Get available capabilities for logged in user - */ - get: operations["GetCapabilitie"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/{meshery-version}/capabilities": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Capabilities By server version - * @description Get available capabilities for logged in user - */ - get: operations["GetCapabilities"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/collaboration": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Collaboration - * @description Collaboration - */ - get: operations["CollaborationHandler"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/integrations/connections": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get connections - * @description Get connections - */ - get: operations["GetConnections"]; - put?: never; - /** - * Register Connection - * @description Register with Meshery Cloud - */ - post: operations["RegisterConnection"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/integrations/connections/{connectionId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** - * Edit Connection by ID - * @description Edit registered connection using the connection ID - */ - put: operations["EditConnectionByID"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/integrations/connections/status": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get status of all connections - * @description Get summary about the status of all connections - */ - get: operations["GetConnectionStatus"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/integrations/connections/{connectionKind}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get connections by kind - * @description Get connections by kind - */ - get: operations["GetConnectionsByKind"]; - put?: never; - post?: never; - /** - * Delete connection - * @description Delete registered connection - */ - delete: operations["DeleteConnection"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/integrations/connections/{connectionKind}/{connectionId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get connections by kind and connectionID. - * @description Get connections by kind (kind is required because this API returns the results in non std format of a connection) - */ - get: operations["GetConnectionsByKindAndConnectionID"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/integrations/connections/meshery/{mesheryServerID}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post?: never; - /** - * Delete Meshery connection - * @description Deletes a given meshery connection. This is generally used for deleting connections from Meshery Server UI where UI is not aware of connection IDs. - */ - delete: operations["DeleteMesheryConnection"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/system/user/credentials": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get user's credentials - * @description Get all user's credentials for logged in user - */ - get: operations["GetUserCredentials"]; - /** - * Update credential - * @description Update credentials for logged in user - */ - put: operations["UpdateUserCredential"]; - /** - * Create Credential - * @description Create new credentials for logged in user - */ - post: operations["SaveUserCredential"]; - /** - * Delete user's credentials - * @description Delete user's credentials (tombstoned records) for logged in user - */ - delete: operations["DeleteUserCredential"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/events": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get Events Aggregate - * @description Get Events Aggreate Count - */ - get: operations["GetEventsAggregate"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/events/date": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Events by Date - * @description Get Events by date - */ - get: operations["RetrieveResultsByDate"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/events/week": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Events by Week - * @description Get Events by week - */ - get: operations["RetrieveResultsByWeek"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/events/month": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Events by Month - * @description Get Events by month - */ - get: operations["RetrieveResultsByMonth"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/events/list": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * All Events - * @description Get All events - */ - get: operations["GetEvents"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/events/summary": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Events Summary - * @description Get Events summary for a user - */ - get: operations["GetEventSummaryByUser"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/content/filters": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get Filters - * @description Get paginated filters - */ - get: operations["GetFilters"]; - put?: never; - /** - * Upsert Filter - * @description It will insert the filter if not present else it will update the matching entry - */ - post: operations["UpsertFilter"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/content/filters/file/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Filter file - * @description Get the filter associated with the given filter id without any metadata - */ - get: operations["GetFilterFile"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/content/filters/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get filter by ID - * @description Get filter by ID - */ - get: operations["GetFilter"]; - put?: never; - post?: never; - /** - * Delete filter by ID - * @description Delete filter associated with ID - */ - delete: operations["DeleteFilter"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/content/filters/clone/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Clone filter - * @description Clone filter associated with ID - */ - post: operations["CloneFilter"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/system/roles": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get All Roles - * @description Get All supported roles - */ - get: operations["GetAllRoles"]; - put?: never; - /** - * Assign role - * @description Assign role to user - */ - post: operations["AddRoleHolder"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/system/roles/edit": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Edit Role - * @description Edit role of user - */ - post: operations["EditRoleHolder"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/system/roles/edit/bulk": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Bulk Edit Role - * @description Edit roles of user in bulk - */ - post: operations["BulkEditRoleHolder"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/system/roles/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post?: never; - /** - * Delete Role - * @description Edit roles of user in bulk - */ - delete: operations["DeleteRole"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performance/smp/profiles": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Performance Profiles - * @description Get Performance Profiles for SMP Dashboard - */ - get: operations["SMPDashboardPerfProfiles"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performance/smp/profiles/{id}/results": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Performance Profiles Results by ID - * @description Get Performance Profiles results by ID for SMP Dashboard - */ - get: operations["SMPDashboardTestResults"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performance/profiles": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get Performance Profiles - * @description Get performance profiles - */ - get: operations["GetPerformanceProfiles"]; - put?: never; - /** - * Upsert Performance Profiles - * @description Update performance profiles or create a new performance profile if no id is provided - */ - post: operations["UpsertPerformanceProfile"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performance/profiles/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Performance Profile by Id - * @description Get Performance Profile by ID - */ - get: operations["GetPerformanceProfile"]; - put?: never; - post?: never; - /** - * Delete Performance Profiles - * @description Delete performance profiles by ID - */ - delete: operations["DeletePerformanceProfile"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performance/profiles/{id}/results": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Performance Profiles result - * @description Get paginated Performance Profiles result - */ - get: operations["GetPerformanceProfileResults"]; - put?: never; - /** - * Add performance profiles result - * @description Add performance profile result in given performance profile id - */ - post: operations["AddPerformanceProfileResult"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performance/profiles/{id}/results/{resultID}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Performance Profiles result - * @description Get the performance test result associated with the given profile id and with the given test id - */ - get: operations["GetPerformanceProfileResult"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/system/user/tokens": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get Tokens - * @description Get tokens associated with logged in user - */ - get: operations["GetUserTokens"]; - put?: never; - /** - * Generate token for logged in user - * @description Generates infinite token (i.e. tokens that do not expire) for the logged in user. - */ - post: operations["GenerateToken"]; - /** - * Delete token - * @description Delete token for logged in user - */ - delete: operations["DeleteUserTokens"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/system/token": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Infinite token - * @description Get Infinite Token - */ - get: operations["IssueIndefiniteLifetimeToken"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/users/invite": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * User Invite - * @description Send invitation request to users - */ - post: operations["HandleUserInvite"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/users/preferences": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** - * User Preference - * @description Upsert user preferences - */ - put: operations["UpdateUserPreference"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/users/keys": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get User Keys - * @description Get all keys based on roles assigned to user - */ - get: operations["GetUserKeys"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/user/{user_id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get User by ID - * @description Get specific user by user id - */ - get: operations["GetUserById"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/users/{delete_on}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * Delete users - * @description Delete users based on delete_for parameter - */ - post: operations["DeleteUsers"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/system/delete/user/{user_id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Delete account by ID - * @description Delete account by ID - */ - get: operations["DeleteUserAccountById"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/users": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get All users - * @description Get All users - */ - get: operations["GetRoleHolders"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/users": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get All users - * @description Get All users - */ - get: operations["GetUsers"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/users/profile/{id}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get user profile by Id - * @description Get user profile of given user Id - */ - get: operations["GetUserProfileById"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/users/profile": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Get User details - * @description Get user details for logged in user - */ - get: operations["GetUser"]; - /** - * Update Profile - * @description Update user profile data (also updates kratos identity) - */ - put: operations["UpdateProfile"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/users/profile/details": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Profile Overview - * @description Get Profile overview for logged in user - */ - get: operations["GetProfileOverview"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/users/{user_id}/profile/activity": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * User Activity - * @description Get last 10 user activities - */ - get: operations["GetUserActivity"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/users/online": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Online users - * @description Get info of active / online users in last 24 hours - */ - get: operations["GetRecentlyOnlineUsers"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/identity/badges": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * Gets available badges - * @description Gets available badges - */ - get: operations["GetAvailableBadges"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; -} -export type webhooks = Record; -export interface components { - schemas: { - mesheryApplication: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description Application file */ - application_file?: string; - /** @description Pattern Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - /** - * @description Source type (K8s manifest, Helm chart, Docker compose) - * @enum {unknown} - */ - source_type?: "k8s_manifest" | "docker_compose" | "helm_chart"; - /** - * Format: byte - * @description Source content - */ - source_content?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - mesheryApplicationPage: { - resultType: "mesheryApplicationPage"; - } & (Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - applications?: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description Application file */ - application_file?: string; - /** @description Pattern Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - /** - * @description Source type (K8s manifest, Helm chart, Docker compose) - * @enum {unknown} - */ - source_type?: "k8s_manifest" | "docker_compose" | "helm_chart"; - /** - * Format: byte - * @description Source content - */ - source_content?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }); - resultsPage: { - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }; - /** Format: uuid */ - id: string; - text: string; - map_object: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - time: string; - /** - * Format: byte - * @description Source content - */ - source_content: string; - capability: { - /** @description Provider type */ - provider_type?: string; - /** @description Package version */ - package_version?: string; - /** @description Package url */ - package_url?: string; - /** @description Provider name */ - provider_name?: string; - provider_description?: string[]; - extensions?: { - navigator?: { - /** @description Title */ - title?: string; - on_click_callback?: number; - href?: { - /** Format: uri */ - uri?: string; - external?: boolean; - }; - /** @description Component */ - component?: string; - /** @description Icon link */ - icon?: string; - /** - * Format: uri - * @description link - */ - link?: string; - /** @description Controls whether to show the extension or not */ - show?: boolean; - /** @description Extension type */ - type?: string; - allowedTo?: Record; - }[]; - user_prefs?: { - /** @description Component */ - component?: string; - /** @description Extension type */ - type?: string; - }[]; - graphql?: { - /** @description Component */ - component?: string; - /** @description Path */ - path?: string; - /** @description Extension type */ - type?: string; - }[]; - account?: { - /** @description Title */ - title?: string; - on_click_callback?: number; - href?: { - /** Format: uri */ - uri?: string; - external?: boolean; - }; - /** @description Component */ - component?: string; - /** - * Format: uri - * @description link - */ - link?: string; - /** @description Controls whether to show the extension or not */ - show?: boolean; - /** @description Extension type */ - type?: string; - }[]; - }; - capabilities?: { - /** @description Feature name */ - feature?: string; - endpoint?: string; - }; - restrictedAccess?: { - isMesheryUIRestricted?: boolean; - allowedComponents?: { - navigator?: Record; - header?: Record; - }; - }; - }; - capabilityNavigatorExtension: { - /** @description Title */ - title?: string; - on_click_callback?: number; - href?: { - /** Format: uri */ - uri?: string; - external?: boolean; - }; - /** @description Component */ - component?: string; - /** @description Icon link */ - icon?: string; - /** - * Format: uri - * @description link - */ - link?: string; - /** @description Controls whether to show the extension or not */ - show?: boolean; - /** @description Extension type */ - type?: string; - allowedTo?: Record; - }; - capabilityUserPrefExtension: { - /** @description Component */ - component?: string; - /** @description Extension type */ - type?: string; - }; - capabilityGraphQLExtension: { - /** @description Component */ - component?: string; - /** @description Path */ - path?: string; - /** @description Extension type */ - type?: string; - }; - capabilitiesAccountExtension: { - /** @description Title */ - title?: string; - on_click_callback?: number; - href?: { - /** Format: uri */ - uri?: string; - external?: boolean; - }; - /** @description Component */ - component?: string; - /** - * Format: uri - * @description link - */ - link?: string; - /** @description Controls whether to show the extension or not */ - show?: boolean; - /** @description Extension type */ - type?: string; - }; - restrictedAccess: { - isMesheryUIRestricted?: boolean; - allowedComponents?: { - navigator?: Record; - header?: Record; - }; - }; - capabilityGeneralCapability: { - /** @description Feature name */ - feature?: string; - endpoint?: string; - }; - capabilityExtension: { - navigator?: { - /** @description Title */ - title?: string; - on_click_callback?: number; - href?: { - /** Format: uri */ - uri?: string; - external?: boolean; - }; - /** @description Component */ - component?: string; - /** @description Icon link */ - icon?: string; - /** - * Format: uri - * @description link - */ - link?: string; - /** @description Controls whether to show the extension or not */ - show?: boolean; - /** @description Extension type */ - type?: string; - allowedTo?: Record; - }[]; - user_prefs?: { - /** @description Component */ - component?: string; - /** @description Extension type */ - type?: string; - }[]; - graphql?: { - /** @description Component */ - component?: string; - /** @description Path */ - path?: string; - /** @description Extension type */ - type?: string; - }[]; - account?: { - /** @description Title */ - title?: string; - on_click_callback?: number; - href?: { - /** Format: uri */ - uri?: string; - external?: boolean; - }; - /** @description Component */ - component?: string; - /** - * Format: uri - * @description link - */ - link?: string; - /** @description Controls whether to show the extension or not */ - show?: boolean; - /** @description Extension type */ - type?: string; - }[]; - }; - /** @description One of (meshery-cloud, github, google) */ - provider: string; - mesheryInstance: { - /** - * Format: uuid - * @description Connection id - */ - id?: string; - /** @description Connection name */ - name?: string; - /** @description Connected server id */ - server_id?: string; - /** @description Running server version */ - server_version?: string; - server_location?: string; - /** @description Server build SHA */ - server_build_sha?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** Format: date-time */ - deleted_at?: string; - /** @description Status */ - status?: string; - }; - connection: { - /** - * Format: uuid - * @description ID - */ - id?: string; - /** @description Connection Name */ - name?: string; - /** - * Format: uuid - * @description Credential ID - */ - credential_id?: string; - /** @description Connection Type */ - type?: string; - /** @description Connection Subtype */ - sub_type?: string; - /** @description Connection Kind */ - kind?: string; - metadata?: { - [key: string]: string | undefined; - }; - /** - * @description Connection Status - * @enum {string} - */ - status?: "discovered" | "registered" | "connected" | "ignored" | "maintenance" | "disconnected" | "deleted" | "not found"; - /** Format: uuid */ - user_id?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** Format: date-time */ - deleted_at?: string; - }; - connectionPage: { - resultType: "connectionPage"; - } & (Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - connections?: { - /** - * Format: uuid - * @description ID - */ - id?: string; - /** @description Connection Name */ - name?: string; - /** - * Format: uuid - * @description Credential ID - */ - credential_id?: string; - /** @description Connection Type */ - type?: string; - /** @description Connection Subtype */ - sub_type?: string; - /** @description Connection Kind */ - kind?: string; - metadata?: { - [key: string]: string | undefined; - }; - /** - * @description Connection Status - * @enum {string} - */ - status?: "discovered" | "registered" | "connected" | "ignored" | "maintenance" | "disconnected" | "deleted" | "not found"; - /** Format: uuid */ - user_id?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** Format: date-time */ - deleted_at?: string; - }[]; - }); - connectionStatusInfo: { - /** @description Connection status */ - status?: string; - /** @description Number of connections having the status */ - count?: number; - }; - connectionsStatusPage: { - connections_status?: { - /** @description Connection status */ - status?: string; - /** @description Number of connections having the status */ - count?: number; - }[]; - }; - k8sContext: { - /** Format: uuid */ - id?: string; - name?: string; - auth?: { - [key: string]: string | undefined; - }; - cluster?: { - [key: string]: string | undefined; - }; - server?: string; - /** Format: uuid */ - owner?: string; - /** Format: uuid */ - created_by?: string; - /** Format: uuid */ - meshery_instance_id?: string; - /** Format: uuid */ - kubernetes_server_id?: string; - deployment_type?: string; - /** Format: date-time */ - updated_at?: string; - /** Format: date-time */ - created_at?: string; - }; - k8sContextPersistResponse: { - k8sContext?: { - /** Format: uuid */ - id?: string; - name?: string; - auth?: { - [key: string]: string | undefined; - }; - cluster?: { - [key: string]: string | undefined; - }; - server?: string; - /** Format: uuid */ - owner?: string; - /** Format: uuid */ - created_by?: string; - /** Format: uuid */ - meshery_instance_id?: string; - /** Format: uuid */ - kubernetes_server_id?: string; - deployment_type?: string; - /** Format: date-time */ - updated_at?: string; - /** Format: date-time */ - created_at?: string; - }; - inserted?: boolean; - }; - credential: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - name?: string; - type?: string; - secret?: { - [key: string]: string | undefined; - }; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }; - credentialsPage: { - resultType: "credentialsPage"; - } & (Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - credential?: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - name?: string; - type?: string; - secret?: { - [key: string]: string | undefined; - }; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }[]; - }); - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at: string; - eventType: string; - /** @description Defines model for event_trackers */ - event: { - /** - * Format: uuid - * @description UUID of the event. - * - */ - id: string; - /** - * Format: uuid - * @description UUID of the user that initiated the event. In most cases this would be present, but not always. - * - */ - user_id?: string; - /** - * Format: uuid - * @description The system from which the request is sourced. In the case of Meshery Server, - * the ID is meshery_instance_id of Meshery Server (which can be found in the metadata of`Connections` table). - * - */ - system_id: string; - /** - * Format: uuid - * @description Each Event will have a OperationID. This field is never NULL, which is to say an operation can result in series of events, for eg: Different stages of Pattern Engine / activities of Workflow engine. Each operation (and sub-operation) will have a different operation ID. - * - */ - operation_id: string; - /** - * @description Resource name on which the operation is invoked. - * - * @example pattern - */ - category: string; - /** - * @description Action taken on the resource. - * - * @example deployed - */ - action: string; - /** - * @description Status for the event. - * - * @enum {string} - */ - status: "read" | "unread"; - /** - * Format: uuid - * @description UUID of the entity on which the event was performed. - * - * @example 110020-123230-434231-000213 - */ - acted_upon: string; - /** - * @description A summary/receipt of event that occured. - * - * @example “Prometheus” pattern deployed in K8s ctx “Meshery Cloud”. - */ - description: string; - /** - * @description A set of seven standard event levels. - * - * @example info - * @enum {string} - */ - severity: "emergency" | "critical" | "alert" | "error" | "warning" | "debug" | "informational" | "success"; - /** @description Contains meaningful information, specific to the type of event. - * Structure of metadata can be different for different events. - * */ - metadata: Record; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }; - events_filter: { - provider: string[]; - category: string[]; - action: string[]; - severity: string[]; - limit: number; - offset: number; - /** @description Field on which records are sorted */ - sort_on: string; - /** @description order of sort asc/desc, default is asc */ - order: string; - }; - eventTrackerGrouped: { - count?: number; - event_type?: string; - /** Format: date-time */ - dt?: string; - week?: string; - month?: string; - year?: string; - }; - eventTrackerGroupedArray: { - count?: number; - event_type?: string; - /** Format: date-time */ - dt?: string; - week?: string; - month?: string; - year?: string; - }[]; - eventResult: { - /** @description Defines model for event_trackers */ - event: { - /** - * Format: uuid - * @description UUID of the event. - * - */ - id: string; - /** - * Format: uuid - * @description UUID of the user that initiated the event. In most cases this would be present, but not always. - * - */ - user_id?: string; - /** - * Format: uuid - * @description The system from which the request is sourced. In the case of Meshery Server, - * the ID is meshery_instance_id of Meshery Server (which can be found in the metadata of`Connections` table). - * - */ - system_id: string; - /** - * Format: uuid - * @description Each Event will have a OperationID. This field is never NULL, which is to say an operation can result in series of events, for eg: Different stages of Pattern Engine / activities of Workflow engine. Each operation (and sub-operation) will have a different operation ID. - * - */ - operation_id: string; - /** - * @description Resource name on which the operation is invoked. - * - * @example pattern - */ - category: string; - /** - * @description Action taken on the resource. - * - * @example deployed - */ - action: string; - /** - * @description Status for the event. - * - * @enum {string} - */ - status: "read" | "unread"; - /** - * Format: uuid - * @description UUID of the entity on which the event was performed. - * - * @example 110020-123230-434231-000213 - */ - acted_upon: string; - /** - * @description A summary/receipt of event that occured. - * - * @example “Prometheus” pattern deployed in K8s ctx “Meshery Cloud”. - */ - description: string; - /** - * @description A set of seven standard event levels. - * - * @example info - * @enum {string} - */ - severity: "emergency" | "critical" | "alert" | "error" | "warning" | "debug" | "informational" | "success"; - /** @description Contains meaningful information, specific to the type of event. - * Structure of metadata can be different for different events. - * */ - metadata: Record; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }; - events_count: number; - }; - eventsPage: { - recordType: "eventsPage"; - } & (Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** @description Defines model for event_trackers */ - event: { - /** - * Format: uuid - * @description UUID of the event. - * - */ - id: string; - /** - * Format: uuid - * @description UUID of the user that initiated the event. In most cases this would be present, but not always. - * - */ - user_id?: string; - /** - * Format: uuid - * @description The system from which the request is sourced. In the case of Meshery Server, - * the ID is meshery_instance_id of Meshery Server (which can be found in the metadata of`Connections` table). - * - */ - system_id: string; - /** - * Format: uuid - * @description Each Event will have a OperationID. This field is never NULL, which is to say an operation can result in series of events, for eg: Different stages of Pattern Engine / activities of Workflow engine. Each operation (and sub-operation) will have a different operation ID. - * - */ - operation_id: string; - /** - * @description Resource name on which the operation is invoked. - * - * @example pattern - */ - category: string; - /** - * @description Action taken on the resource. - * - * @example deployed - */ - action: string; - /** - * @description Status for the event. - * - * @enum {string} - */ - status: "read" | "unread"; - /** - * Format: uuid - * @description UUID of the entity on which the event was performed. - * - * @example 110020-123230-434231-000213 - */ - acted_upon: string; - /** - * @description A summary/receipt of event that occured. - * - * @example “Prometheus” pattern deployed in K8s ctx “Meshery Cloud”. - */ - description: string; - /** - * @description A set of seven standard event levels. - * - * @example info - * @enum {string} - */ - severity: "emergency" | "critical" | "alert" | "error" | "warning" | "debug" | "informational" | "success"; - /** @description Contains meaningful information, specific to the type of event. - * Structure of metadata can be different for different events. - * */ - metadata: Record; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }; - events_count: number; - }[]; - }); - eventSummary: { - /** @description user's email or username */ - user_id: string; - provider: string; - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - activity_count: number; - login_count: number; - signup_count: number; - perf_results_count: number; - smi_results_count: number; - meshery_apps_count: number; - meshery_patterns_count: number; - meshery_filters_count: number; - /** Format: data-time */ - last_login_time: string; - }; - eventSummaryPage: { - recordType: "eventSummaryPage"; - } & (Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** @description user's email or username */ - user_id: string; - provider: string; - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - activity_count: number; - login_count: number; - signup_count: number; - perf_results_count: number; - smi_results_count: number; - meshery_apps_count: number; - meshery_patterns_count: number; - meshery_filters_count: number; - /** Format: data-time */ - last_login_time: string; - }[]; - }); - eventsAggregate: { - /** @description Number of audit events */ - audit?: number; - /** @description Number of summary events */ - summary?: number; - }; - recordsPage: { - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }; - /** Format: uuid */ - user_uuid: string; - /** Format: uuid */ - system_id: string; - /** Format: uuid */ - operation_id: string; - mesheryFilter: { - /** - * Format: uuid - * @description Connection id - */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** - * Format: byte - * @description Filter file - */ - filter_file?: string; - /** @description Filter Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - mesheryFilterPage: { - resultType: "mesheryFilterPage"; - } & (Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - filters?: { - /** - * Format: uuid - * @description Connection id - */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** - * Format: byte - * @description Filter file - */ - filter_file?: string; - /** @description Filter Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }); - /** - * Format: byte - * @description Filter file - */ - filter_file: string; - roleHolderRequest: { - role_names: string[]; - /** - * Format: email - * @description email - */ - email: string; - }; - role: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - }; - roleNames: string[]; - /** - * Format: email - * @description email - */ - email: string; - /** @description user's email or username */ - user_id: string; - username: string; - status: string; - email_preference: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - performanceProfile: { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: uuid */ - user_id?: string; - /** Format: uuid */ - schedule?: string; - load_generators?: string; - endpoints?: string; - service_mesh?: string; - concurrent_request?: number; - qps?: number; - duration?: string; - /** Format: date-time */ - last_run?: string; - total_results?: number; - request_headers?: string; - request_cookies?: string; - request_body?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - performanceProfilePage: { - resultType: "performanceProfilePage"; - } & (Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - profiles?: { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: uuid */ - user_id?: string; - /** Format: uuid */ - schedule?: string; - load_generators?: string; - endpoints?: string; - service_mesh?: string; - concurrent_request?: number; - qps?: number; - duration?: string; - /** Format: date-time */ - last_run?: string; - total_results?: number; - request_headers?: string; - request_cookies?: string; - request_body?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }); - performanceResult: { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: date-time */ - test_start_time?: string; - mesh?: string; - runner_results?: { - [key: string]: string | undefined; - }; - deleted?: boolean; - server_metrics?: { - [key: string]: string | undefined; - }; - server_board_config?: { - [key: string]: string | undefined; - }; - /** Format: uuid */ - performance_profile?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - mesheryResultPage: { - resultType: "mesheryResultPage"; - } & (Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - results?: { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: date-time */ - test_start_time?: string; - mesh?: string; - runner_results?: { - [key: string]: string | undefined; - }; - deleted?: boolean; - server_metrics?: { - [key: string]: string | undefined; - }; - server_board_config?: { - [key: string]: string | undefined; - }; - /** Format: uuid */ - performance_profile?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }); - tokenPage: { - resultType: "tokenPage"; - } & (Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - tokens?: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description One of (meshery-cloud, github, google) */ - provider?: string; - access_token?: string; - refresh_token?: string; - name?: string; - purpose?: string; - is_oauth?: boolean; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }); - userToken: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description One of (meshery-cloud, github, google) */ - provider?: string; - access_token?: string; - refresh_token?: string; - name?: string; - purpose?: string; - is_oauth?: boolean; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - userInvite: { - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - /** - * Format: email - * @description email - */ - email: string; - }; - bulkDelete: { - /** Format: uuid */ - user_ids: string; - user_emails: string[]; - }; - user: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - /** @description One of (meshery-cloud, github, google) */ - provider: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - /** @description Link for profile picture */ - avatar_url?: string; - status: string; - bio?: string; - preferences?: { - [key: string]: string | undefined; - }; - accepted_terms_at?: string; - /** Format: date-time */ - first_login_time?: string; - /** Format: date-time */ - last_login_time: string; - }; - recentUsers: { - /** Format: uuid */ - id?: string; - /** @description First Name */ - first_name?: string; - /** @description Last Name */ - last_name?: string; - /** @description Link for profile picture */ - avatar_url?: string; - }; - rolesPage: { - recordType: "rolesPage"; - } & (Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - }[]; - }); - key: { - /** Format: uuid */ - ID?: string; - subcategory?: string; - function?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** @description SQL null Timestamp to handle null values of time. */ - deleted_at?: string; - category?: string; - description?: string; - /** Format: uuid */ - owner?: string; - }; - userKeys: { - keys?: { - /** Format: uuid */ - ID?: string; - subcategory?: string; - function?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** @description SQL null Timestamp to handle null values of time. */ - deleted_at?: string; - category?: string; - description?: string; - /** Format: uuid */ - owner?: string; - }[]; - total_count?: number; - }; - /** @enum {string} */ - deleteOn: "self" | "bulk"; - usersPageForAdmin: { - recordType: "usersPageForAdmin"; - } & (Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - /** @description Link for profile picture */ - avatar_url?: string; - preferences?: { - [key: string]: string | undefined; - }; - }[]; - }); - usersWithRolesForAdmin: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - /** @description Link for profile picture */ - avatar_url?: string; - preferences?: { - [key: string]: string | undefined; - }; - }; - teamMembers: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - joined_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - /** @description Link for profile picture */ - avatar_url?: string; - }; - teamMembersPage: { - recordType: "teamMembersPage"; - } & (Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - joined_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - /** @description Link for profile picture */ - avatar_url?: string; - }[]; - }); - usersForNonAdmin: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - /** @description Link for profile picture */ - avatar_url?: string; - preferences?: { - [key: string]: string | undefined; - }; - }; - usersPageForNonAdmin: { - recordType: "usersPageForNonAdmin"; - } & (Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - /** @description Link for profile picture */ - avatar_url?: string; - preferences?: { - [key: string]: string | undefined; - }; - }[]; - }); - recentActivityPage: { - recent_activity?: { - /** - * Format: uuid - * @description UUID of the event. - * - */ - id: string; - /** - * Format: uuid - * @description UUID of the user that initiated the event. In most cases this would be present, but not always. - * - */ - user_id?: string; - /** - * Format: uuid - * @description The system from which the request is sourced. In the case of Meshery Server, - * the ID is meshery_instance_id of Meshery Server (which can be found in the metadata of`Connections` table). - * - */ - system_id: string; - /** - * Format: uuid - * @description Each Event will have a OperationID. This field is never NULL, which is to say an operation can result in series of events, for eg: Different stages of Pattern Engine / activities of Workflow engine. Each operation (and sub-operation) will have a different operation ID. - * - */ - operation_id: string; - /** - * @description Resource name on which the operation is invoked. - * - * @example pattern - */ - category: string; - /** - * @description Action taken on the resource. - * - * @example deployed - */ - action: string; - /** - * @description Status for the event. - * - * @enum {string} - */ - status: "read" | "unread"; - /** - * Format: uuid - * @description UUID of the entity on which the event was performed. - * - * @example 110020-123230-434231-000213 - */ - acted_upon: string; - /** - * @description A summary/receipt of event that occured. - * - * @example “Prometheus” pattern deployed in K8s ctx “Meshery Cloud”. - */ - description: string; - /** - * @description A set of seven standard event levels. - * - * @example info - * @enum {string} - */ - severity: "emergency" | "critical" | "alert" | "error" | "warning" | "debug" | "informational" | "success"; - /** @description Contains meaningful information, specific to the type of event. - * Structure of metadata can be different for different events. - * */ - metadata: Record; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }[]; - }; - accountOverview: { - k8s_count?: number; - app_count?: number; - pattern_count?: number; - }; - badge: { - /** Format: uuid */ - id?: string; - name?: string; - description?: string; - label?: string; - svg_location?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** @description SQL null Timestamp to handle null values of time. */ - deleted_at?: string; - }; - badges: { - badges?: { - [key: string]: { - /** Format: uuid */ - id?: string; - name?: string; - description?: string; - label?: string; - svg_location?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** @description SQL null Timestamp to handle null values of time. */ - deleted_at?: string; - } | undefined; - }; - total_count?: number; - }; - /** @description SQL null Timestamp to handle null values of time. */ - nullTime: string; - /** @description Link for profile picture */ - avatar_url: string; - bio: string; - accepted_terms_at: string; - emails: string[]; - /** @description Body for empty request */ - empty: Record; - }; - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - parameters: { - /** @description Get reponses by page */ - page: string; - /** @description Get reponses by pageSize */ - page_size: string; - /** @description Get responses that match search param value */ - search: string; - /** @description Get ordered responses */ - order: string; - /** @description Unique identifier */ - id: string; - /** @description user's os */ - os: string; - /** @description Is playground mode */ - playground: string; - /** @description meshery version */ - mesheryVersion: string; - /** @description Connection kind (eg: Meshery) */ - connectionKind: string; - /** @description Connection ID */ - connectionId: string; - /** @description Meshery server ID */ - serverId: string; - /** @description credential Id */ - credentialId: string; - /** @description Cumulative events */ - cumulative: string; - /** @description Filter for retrieving events */ - eventsFilter: { - provider?: string[]; - event_type?: string[]; - }; - /** @description Result id */ - resultId: string; - /** @description Performance Result Id */ - resultID: string; - /** @description To get OAuth tokens as well */ - isOAuth: string; - /** @description Name of the resource */ - name: string; - /** @description Purpose for which token is generated */ - purpose: string; - /** @description User's user_id */ - userId: string; - /** @description Remote provider */ - provider: string; - /** @description Defines on whom the delete operation is to be performed */ - deleteOn: "self" | "bulk"; - /** @description Get filtered reponses */ - filter: string; - }; - requestBodies: { - mesheryApplicationRequestBody: { - content: { - "application/json": { - url?: string; - path?: string; - save?: boolean; - application_data?: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description Application file */ - application_file?: string; - /** @description Pattern Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - /** - * @description Source type (K8s manifest, Helm chart, Docker compose) - * @enum {unknown} - */ - source_type?: "k8s_manifest" | "docker_compose" | "helm_chart"; - /** - * Format: byte - * @description Source content - */ - source_content?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - source_type?: string; - }; - }; - }; - connectionPayload: { - content: { - "application/json": { - /** @description Kind */ - kind?: string; - /** @description Connection type */ - type?: string; - /** @description Connection subtype */ - sub_type?: string; - credential_secret?: { - [key: string]: string | undefined; - }; - metadata?: { - [key: string]: string | undefined; - }; - }; - }; - }; - /** @description Body for user credential */ - credentialBody: { - content: { - "application/json": { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - name?: string; - type?: string; - secret?: { - [key: string]: string | undefined; - }; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }; - }; - }; - mesheryFilterRequestBody: { - content: { - "application/json": { - url?: string; - path?: string; - save?: boolean; - filter_data?: { - /** - * Format: uuid - * @description Connection id - */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** - * Format: byte - * @description Filter file - */ - filter_file?: string; - /** @description Filter Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - }; - /** @description Body for user invite request */ - userInvite: { - content: { - "application/json": { - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - /** - * Format: email - * @description email - */ - email: string; - }; - }; - }; - /** @description Body for delete of user accounts */ - deleteUsers: { - content: { - "application/json": { - /** Format: uuid */ - user_ids: string; - user_emails: string[]; - } | Record; - }; - }; - /** @description Body for upserting user */ - user: { - content: { - "application/json": { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - /** @description One of (meshery-cloud, github, google) */ - provider: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - /** @description Link for profile picture */ - avatar_url?: string; - status: string; - bio?: string; - preferences?: { - [key: string]: string | undefined; - }; - accepted_terms_at?: string; - /** Format: date-time */ - first_login_time?: string; - /** Format: date-time */ - last_login_time: string; - }; - }; - }; - }; - headers: never; - pathItems: never; -} -export type $defs = Record; -export interface operations { - GetApplications: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Applications */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - applications?: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description Application file */ - application_file?: string; - /** @description Pattern Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - /** - * @description Source type (K8s manifest, Helm chart, Docker compose) - * @enum {unknown} - */ - source_type?: "k8s_manifest" | "docker_compose" | "helm_chart"; - /** - * Format: byte - * @description Source content - */ - source_content?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - UpsertApplication: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": { - url?: string; - path?: string; - save?: boolean; - application_data?: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description Application file */ - application_file?: string; - /** @description Pattern Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - /** - * @description Source type (K8s manifest, Helm chart, Docker compose) - * @enum {unknown} - */ - source_type?: "k8s_manifest" | "docker_compose" | "helm_chart"; - /** - * Format: byte - * @description Source content - */ - source_content?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - source_type?: string; - }; - }; - }; - responses: { - /** @description Upserted application */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description Application file */ - application_file?: string; - /** @description Pattern Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - /** - * @description Source type (K8s manifest, Helm chart, Docker compose) - * @enum {unknown} - */ - source_type?: "k8s_manifest" | "docker_compose" | "helm_chart"; - /** - * Format: byte - * @description Source content - */ - source_content?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - UpsertApplicationSourceContent: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - /** @description Body for upserting meshery application source content */ - requestBody: { - content: { - "text/plain": string; - }; - }; - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetApplicationSourceContent: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description application source content associated with ID */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetApplication: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description application associated with ID */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description Application file */ - application_file?: string; - /** @description Pattern Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - /** - * @description Source type (K8s manifest, Helm chart, Docker compose) - * @enum {unknown} - */ - source_type?: "k8s_manifest" | "docker_compose" | "helm_chart"; - /** - * Format: byte - * @description Source content - */ - source_content?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - DeleteApplication: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Deleted application */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description Application file */ - application_file?: string; - /** @description Pattern Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - /** - * @description Source type (K8s manifest, Helm chart, Docker compose) - * @enum {unknown} - */ - source_type?: "k8s_manifest" | "docker_compose" | "helm_chart"; - /** - * Format: byte - * @description Source content - */ - source_content?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetCapabilitie: { - parameters: { - query?: { - /** @description user's os */ - os?: string; - /** @description Is playground mode */ - playground?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description capabilities */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** @description Provider type */ - provider_type?: string; - /** @description Package version */ - package_version?: string; - /** @description Package url */ - package_url?: string; - /** @description Provider name */ - provider_name?: string; - provider_description?: string[]; - extensions?: { - navigator?: { - /** @description Title */ - title?: string; - on_click_callback?: number; - href?: { - /** Format: uri */ - uri?: string; - external?: boolean; - }; - /** @description Component */ - component?: string; - /** @description Icon link */ - icon?: string; - /** - * Format: uri - * @description link - */ - link?: string; - /** @description Controls whether to show the extension or not */ - show?: boolean; - /** @description Extension type */ - type?: string; - allowedTo?: Record; - }[]; - user_prefs?: { - /** @description Component */ - component?: string; - /** @description Extension type */ - type?: string; - }[]; - graphql?: { - /** @description Component */ - component?: string; - /** @description Path */ - path?: string; - /** @description Extension type */ - type?: string; - }[]; - account?: { - /** @description Title */ - title?: string; - on_click_callback?: number; - href?: { - /** Format: uri */ - uri?: string; - external?: boolean; - }; - /** @description Component */ - component?: string; - /** - * Format: uri - * @description link - */ - link?: string; - /** @description Controls whether to show the extension or not */ - show?: boolean; - /** @description Extension type */ - type?: string; - }[]; - }; - capabilities?: { - /** @description Feature name */ - feature?: string; - endpoint?: string; - }; - restrictedAccess?: { - isMesheryUIRestricted?: boolean; - allowedComponents?: { - navigator?: Record; - header?: Record; - }; - }; - }; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetCapabilities: { - parameters: { - query?: { - /** @description user's os */ - os?: string; - /** @description Is playground mode */ - playground?: string; - }; - header?: never; - path: { - /** @description meshery version */ - "meshery-version": string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description capabilities */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** @description Provider type */ - provider_type?: string; - /** @description Package version */ - package_version?: string; - /** @description Package url */ - package_url?: string; - /** @description Provider name */ - provider_name?: string; - provider_description?: string[]; - extensions?: { - navigator?: { - /** @description Title */ - title?: string; - on_click_callback?: number; - href?: { - /** Format: uri */ - uri?: string; - external?: boolean; - }; - /** @description Component */ - component?: string; - /** @description Icon link */ - icon?: string; - /** - * Format: uri - * @description link - */ - link?: string; - /** @description Controls whether to show the extension or not */ - show?: boolean; - /** @description Extension type */ - type?: string; - allowedTo?: Record; - }[]; - user_prefs?: { - /** @description Component */ - component?: string; - /** @description Extension type */ - type?: string; - }[]; - graphql?: { - /** @description Component */ - component?: string; - /** @description Path */ - path?: string; - /** @description Extension type */ - type?: string; - }[]; - account?: { - /** @description Title */ - title?: string; - on_click_callback?: number; - href?: { - /** Format: uri */ - uri?: string; - external?: boolean; - }; - /** @description Component */ - component?: string; - /** - * Format: uri - * @description link - */ - link?: string; - /** @description Controls whether to show the extension or not */ - show?: boolean; - /** @description Extension type */ - type?: string; - }[]; - }; - capabilities?: { - /** @description Feature name */ - feature?: string; - endpoint?: string; - }; - restrictedAccess?: { - isMesheryUIRestricted?: boolean; - allowedComponents?: { - navigator?: Record; - header?: Record; - }; - }; - }; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - CollaborationHandler: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description initate cross server collaboration */ - 101: { - headers: { - [name: string]: unknown; - }; - content?: never; - }; - }; - }; - GetConnections: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Paginated list of connections */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - connections?: { - /** - * Format: uuid - * @description ID - */ - id?: string; - /** @description Connection Name */ - name?: string; - /** - * Format: uuid - * @description Credential ID - */ - credential_id?: string; - /** @description Connection Type */ - type?: string; - /** @description Connection Subtype */ - sub_type?: string; - /** @description Connection Kind */ - kind?: string; - metadata?: { - [key: string]: string | undefined; - }; - /** - * @description Connection Status - * @enum {string} - */ - status?: "discovered" | "registered" | "connected" | "ignored" | "maintenance" | "disconnected" | "deleted" | "not found"; - /** Format: uuid */ - user_id?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** Format: date-time */ - deleted_at?: string; - }[]; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - RegisterConnection: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: { - content: { - "application/json": { - /** @description Kind */ - kind?: string; - /** @description Connection type */ - type?: string; - /** @description Connection subtype */ - sub_type?: string; - credential_secret?: { - [key: string]: string | undefined; - }; - metadata?: { - [key: string]: string | undefined; - }; - }; - }; - }; - responses: { - /** @description Inserted connection */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** - * Format: uuid - * @description ID - */ - id?: string; - /** @description Connection Name */ - name?: string; - /** - * Format: uuid - * @description Credential ID - */ - credential_id?: string; - /** @description Connection Type */ - type?: string; - /** @description Connection Subtype */ - sub_type?: string; - /** @description Connection Kind */ - kind?: string; - metadata?: { - [key: string]: string | undefined; - }; - /** - * @description Connection Status - * @enum {string} - */ - status?: "discovered" | "registered" | "connected" | "ignored" | "maintenance" | "disconnected" | "deleted" | "not found"; - /** Format: uuid */ - user_id?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** Format: date-time */ - deleted_at?: string; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - EditConnectionByID: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Connection ID */ - connectionId: string; - }; - cookie?: never; - }; - requestBody?: { - content: { - "application/json": { - /** @description Kind */ - kind?: string; - /** @description Connection type */ - type?: string; - /** @description Connection subtype */ - sub_type?: string; - credential_secret?: { - [key: string]: string | undefined; - }; - metadata?: { - [key: string]: string | undefined; - }; - }; - }; - }; - responses: { - /** @description Edited connection */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** - * Format: uuid - * @description ID - */ - id?: string; - /** @description Connection Name */ - name?: string; - /** - * Format: uuid - * @description Credential ID - */ - credential_id?: string; - /** @description Connection Type */ - type?: string; - /** @description Connection Subtype */ - sub_type?: string; - /** @description Connection Kind */ - kind?: string; - metadata?: { - [key: string]: string | undefined; - }; - /** - * @description Connection Status - * @enum {string} - */ - status?: "discovered" | "registered" | "connected" | "ignored" | "maintenance" | "disconnected" | "deleted" | "not found"; - /** Format: uuid */ - user_id?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** Format: date-time */ - deleted_at?: string; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetConnectionStatus: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Status of connections */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - connections_status?: { - /** @description Connection status */ - status?: string; - /** @description Number of connections having the status */ - count?: number; - }[]; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetConnectionsByKind: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path: { - /** @description Connection kind (eg: Meshery) */ - connectionKind: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Connections by kind */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Record; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - DeleteConnection: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Connection kind (eg: Meshery) */ - connectionKind: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Deleted connection */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** - * Format: uuid - * @description ID - */ - id?: string; - /** @description Connection Name */ - name?: string; - /** - * Format: uuid - * @description Credential ID - */ - credential_id?: string; - /** @description Connection Type */ - type?: string; - /** @description Connection Subtype */ - sub_type?: string; - /** @description Connection Kind */ - kind?: string; - metadata?: { - [key: string]: string | undefined; - }; - /** - * @description Connection Status - * @enum {string} - */ - status?: "discovered" | "registered" | "connected" | "ignored" | "maintenance" | "disconnected" | "deleted" | "not found"; - /** Format: uuid */ - user_id?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** Format: date-time */ - deleted_at?: string; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetConnectionsByKindAndConnectionID: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path: { - /** @description Connection kind (eg: Meshery) */ - connectionKind: string; - /** @description Connection ID */ - connectionId: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Connections by kind */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - k8sContext?: { - /** Format: uuid */ - id?: string; - name?: string; - auth?: { - [key: string]: string | undefined; - }; - cluster?: { - [key: string]: string | undefined; - }; - server?: string; - /** Format: uuid */ - owner?: string; - /** Format: uuid */ - created_by?: string; - /** Format: uuid */ - meshery_instance_id?: string; - /** Format: uuid */ - kubernetes_server_id?: string; - deployment_type?: string; - /** Format: date-time */ - updated_at?: string; - /** Format: date-time */ - created_at?: string; - }; - inserted?: boolean; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - DeleteMesheryConnection: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Meshery server ID */ - mesheryServerID: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetUserCredentials: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description credentials */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - credential?: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - name?: string; - type?: string; - secret?: { - [key: string]: string | undefined; - }; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }[]; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - UpdateUserCredential: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** @description Body for user credential */ - requestBody: { - content: { - "application/json": { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - name?: string; - type?: string; - secret?: { - [key: string]: string | undefined; - }; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }; - }; - }; - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - SaveUserCredential: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** @description Body for user credential */ - requestBody: { - content: { - "application/json": { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - name?: string; - type?: string; - secret?: { - [key: string]: string | undefined; - }; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at?: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }; - }; - }; - responses: { - /** @description created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - DeleteUserCredential: { - parameters: { - query: { - /** @description credential Id */ - credential_id: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetEventsAggregate: { - parameters: { - query?: { - /** @description Cumulative events */ - cumulative?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Events Aggregate Count */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** @description Number of audit events */ - audit?: number; - /** @description Number of summary events */ - summary?: number; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - RetrieveResultsByDate: { - parameters: { - query?: { - /** @description Cumulative events */ - cumulative?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Events by date */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - count?: number; - event_type?: string; - /** Format: date-time */ - dt?: string; - week?: string; - month?: string; - year?: string; - }[]; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - RetrieveResultsByWeek: { - parameters: { - query?: { - /** @description Cumulative events */ - cumulative?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Events by week */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - count?: number; - event_type?: string; - /** Format: date-time */ - dt?: string; - week?: string; - month?: string; - year?: string; - }[]; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - RetrieveResultsByMonth: { - parameters: { - query?: { - /** @description Cumulative events */ - cumulative?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Events by month */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - count?: number; - event_type?: string; - /** Format: date-time */ - dt?: string; - week?: string; - month?: string; - year?: string; - }[]; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetEvents: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - /** @description Filter for retrieving events */ - filter?: { - provider?: string[]; - event_type?: string[]; - }; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Events list */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** @description Defines model for event_trackers */ - event: { - /** - * Format: uuid - * @description UUID of the event. - * - */ - id: string; - /** - * Format: uuid - * @description UUID of the user that initiated the event. In most cases this would be present, but not always. - * - */ - user_id?: string; - /** - * Format: uuid - * @description The system from which the request is sourced. In the case of Meshery Server, - * the ID is meshery_instance_id of Meshery Server (which can be found in the metadata of`Connections` table). - * - */ - system_id: string; - /** - * Format: uuid - * @description Each Event will have a OperationID. This field is never NULL, which is to say an operation can result in series of events, for eg: Different stages of Pattern Engine / activities of Workflow engine. Each operation (and sub-operation) will have a different operation ID. - * - */ - operation_id: string; - /** - * @description Resource name on which the operation is invoked. - * - * @example pattern - */ - category: string; - /** - * @description Action taken on the resource. - * - * @example deployed - */ - action: string; - /** - * @description Status for the event. - * - * @enum {string} - */ - status: "read" | "unread"; - /** - * Format: uuid - * @description UUID of the entity on which the event was performed. - * - * @example 110020-123230-434231-000213 - */ - acted_upon: string; - /** - * @description A summary/receipt of event that occured. - * - * @example “Prometheus” pattern deployed in K8s ctx “Meshery Cloud”. - */ - description: string; - /** - * @description A set of seven standard event levels. - * - * @example info - * @enum {string} - */ - severity: "emergency" | "critical" | "alert" | "error" | "warning" | "debug" | "informational" | "success"; - /** @description Contains meaningful information, specific to the type of event. - * Structure of metadata can be different for different events. - * */ - metadata: Record; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }; - events_count: number; - }[]; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetEventSummaryByUser: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Events Summary */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** @description user's email or username */ - user_id: string; - provider: string; - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - activity_count: number; - login_count: number; - signup_count: number; - perf_results_count: number; - smi_results_count: number; - meshery_apps_count: number; - meshery_patterns_count: number; - meshery_filters_count: number; - /** Format: data-time */ - last_login_time: string; - }[]; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetFilters: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Filters */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - filters?: { - /** - * Format: uuid - * @description Connection id - */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** - * Format: byte - * @description Filter file - */ - filter_file?: string; - /** @description Filter Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - UpsertFilter: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": { - url?: string; - path?: string; - save?: boolean; - filter_data?: { - /** - * Format: uuid - * @description Connection id - */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** - * Format: byte - * @description Filter file - */ - filter_file?: string; - /** @description Filter Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - }; - responses: { - /** @description Upserted filter */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** - * Format: uuid - * @description Connection id - */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** - * Format: byte - * @description Filter file - */ - filter_file?: string; - /** @description Filter Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetFilterFile: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Filter file */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": string; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetFilter: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Filter associated with ID */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** - * Format: uuid - * @description Connection id - */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** - * Format: byte - * @description Filter file - */ - filter_file?: string; - /** @description Filter Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - DeleteFilter: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Deleted filter */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** - * Format: uuid - * @description Connection id - */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** - * Format: byte - * @description Filter file - */ - filter_file?: string; - /** @description Filter Name */ - name?: string; - location?: { - [key: string]: string | undefined; - }; - visibility?: string; - catalog_data?: { - [key: string]: string | undefined; - }; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - CloneFilter: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - /** @description Body for cloning design */ - requestBody: { - content: { - "application/json": { - name: string; - }; - }; - }; - responses: { - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetAllRoles: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Get all roles */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": string[]; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - AddRoleHolder: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** @description Body for assigning role to the user */ - requestBody: { - content: { - "application/json": { - role_names: string[]; - /** - * Format: email - * @description email - */ - email: string; - }; - }; - }; - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - EditRoleHolder: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** @description Body for editing role of the user */ - requestBody: { - content: { - "application/json": { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - }; - }; - }; - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - BulkEditRoleHolder: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** @description Body for editing role of the users in bulk */ - requestBody: { - content: { - "application/json": { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - }[]; - }; - }; - responses: { - /** @description created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - DeleteRole: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Deleted roles */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - }[]; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - SMPDashboardPerfProfiles: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Get Performance Profiles with pagination */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - profiles?: { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: uuid */ - user_id?: string; - /** Format: uuid */ - schedule?: string; - load_generators?: string; - endpoints?: string; - service_mesh?: string; - concurrent_request?: number; - qps?: number; - duration?: string; - /** Format: date-time */ - last_run?: string; - total_results?: number; - request_headers?: string; - request_cookies?: string; - request_body?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - SMPDashboardTestResults: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Get Performance Profiles Results with pagination */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - results?: { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: date-time */ - test_start_time?: string; - mesh?: string; - runner_results?: { - [key: string]: string | undefined; - }; - deleted?: boolean; - server_metrics?: { - [key: string]: string | undefined; - }; - server_board_config?: { - [key: string]: string | undefined; - }; - /** Format: uuid */ - performance_profile?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid path parameter "id" */ - 502: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetPerformanceProfiles: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Performance Profiles */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - profiles?: { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: uuid */ - user_id?: string; - /** Format: uuid */ - schedule?: string; - load_generators?: string; - endpoints?: string; - service_mesh?: string; - concurrent_request?: number; - qps?: number; - duration?: string; - /** Format: date-time */ - last_run?: string; - total_results?: number; - request_headers?: string; - request_cookies?: string; - request_body?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - UpsertPerformanceProfile: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** @description Body for upserting performance profile */ - requestBody: { - content: { - "application/json": { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: uuid */ - user_id?: string; - /** Format: uuid */ - schedule?: string; - load_generators?: string; - endpoints?: string; - service_mesh?: string; - concurrent_request?: number; - qps?: number; - duration?: string; - /** Format: date-time */ - last_run?: string; - total_results?: number; - request_headers?: string; - request_cookies?: string; - request_body?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - responses: { - /** @description updated performance profile */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: uuid */ - user_id?: string; - /** Format: uuid */ - schedule?: string; - load_generators?: string; - endpoints?: string; - service_mesh?: string; - concurrent_request?: number; - qps?: number; - duration?: string; - /** Format: date-time */ - last_run?: string; - total_results?: number; - request_headers?: string; - request_cookies?: string; - request_body?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetPerformanceProfile: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Performance Profile for provided performance profile id */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: uuid */ - user_id?: string; - /** Format: uuid */ - schedule?: string; - load_generators?: string; - endpoints?: string; - service_mesh?: string; - concurrent_request?: number; - qps?: number; - duration?: string; - /** Format: date-time */ - last_run?: string; - total_results?: number; - request_headers?: string; - request_cookies?: string; - request_body?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - DeletePerformanceProfile: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Deleted Performance Profile */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: uuid */ - user_id?: string; - /** Format: uuid */ - schedule?: string; - load_generators?: string; - endpoints?: string; - service_mesh?: string; - concurrent_request?: number; - qps?: number; - duration?: string; - /** Format: date-time */ - last_run?: string; - total_results?: number; - request_headers?: string; - request_cookies?: string; - request_body?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Result not found */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetPerformanceProfileResults: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Performance Profile results */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - results?: { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: date-time */ - test_start_time?: string; - mesh?: string; - runner_results?: { - [key: string]: string | undefined; - }; - deleted?: boolean; - server_metrics?: { - [key: string]: string | undefined; - }; - server_board_config?: { - [key: string]: string | undefined; - }; - /** Format: uuid */ - performance_profile?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - AddPerformanceProfileResult: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - /** @description Body for adding perfor mance profile result */ - requestBody?: { - content: { - "application/json": { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: date-time */ - test_start_time?: string; - mesh?: string; - runner_results?: { - [key: string]: string | undefined; - }; - deleted?: boolean; - server_metrics?: { - [key: string]: string | undefined; - }; - server_board_config?: { - [key: string]: string | undefined; - }; - /** Format: uuid */ - performance_profile?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - responses: { - /** @description Performance Profile results */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetPerformanceProfileResult: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - /** @description Performance Result Id */ - resultID: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Performance Profile results */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - name?: string; - /** Format: date-time */ - test_start_time?: string; - mesh?: string; - runner_results?: { - [key: string]: string | undefined; - }; - deleted?: boolean; - server_metrics?: { - [key: string]: string | undefined; - }; - server_board_config?: { - [key: string]: string | undefined; - }; - /** Format: uuid */ - performance_profile?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetUserTokens: { - parameters: { - query?: { - /** @description To get OAuth tokens as well */ - isOAuth?: string; - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description user tokens */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - total_count?: number; - resultType?: string; - }, "resultType"> & { - tokens?: { - /** Format: uuid */ - id?: string; - /** Format: uuid */ - user_id?: string; - /** @description One of (meshery-cloud, github, google) */ - provider?: string; - access_token?: string; - refresh_token?: string; - name?: string; - purpose?: string; - is_oauth?: boolean; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - }[]; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GenerateToken: { - parameters: { - query?: { - /** @description Name of the resource */ - name?: string; - /** @description Purpose for which token is generated */ - purpose?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description generated token */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - DeleteUserTokens: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": { - [key: string]: string | undefined; - }; - }; - }; - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - IssueIndefiniteLifetimeToken: { - parameters: { - query: { - /** @description Remote provider */ - provider: string; - }; - header?: never; - path: { - /** @description User's user_id */ - user_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description generated token */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - HandleUserInvite: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** @description Body for user invite request */ - requestBody: { - content: { - "application/json": { - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - /** - * Format: email - * @description email - */ - email: string; - }; - }; - }; - responses: { - /** @description Invitation sent */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - UpdateUserPreference: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** @description Body for upserting user preferences */ - requestBody: { - content: { - "application/json": { - [key: string]: string | undefined; - }; - }; - }; - responses: { - /** @description Preferences updated */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetUserKeys: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Returns user keys based on roles assigned to user */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - keys?: { - /** Format: uuid */ - ID?: string; - subcategory?: string; - function?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** @description SQL null Timestamp to handle null values of time. */ - deleted_at?: string; - category?: string; - description?: string; - /** Format: uuid */ - owner?: string; - }[]; - total_count?: number; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetUserById: { - parameters: { - query?: never; - header?: never; - path: { - /** @description User's user_id */ - user_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Returns user with given user_id */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - /** @description One of (meshery-cloud, github, google) */ - provider: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - /** @description Link for profile picture */ - avatar_url?: string; - status: string; - bio?: string; - preferences?: { - [key: string]: string | undefined; - }; - accepted_terms_at?: string; - /** Format: date-time */ - first_login_time?: string; - /** Format: date-time */ - last_login_time: string; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - DeleteUsers: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Defines on whom the delete operation is to be performed */ - delete_on: "self" | "bulk"; - }; - cookie?: never; - }; - /** @description Body for delete of user accounts */ - requestBody: { - content: { - "application/json": { - /** Format: uuid */ - user_ids: string; - user_emails: string[]; - } | Record; - }; - }; - responses: { - /** @description created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - DeleteUserAccountById: { - parameters: { - query?: never; - header?: never; - path: { - /** @description User's user_id */ - user_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetRoleHolders: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - /** @description Get filtered reponses */ - filter?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Get all user with pagination */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": (Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - created_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - /** @description Link for profile picture */ - avatar_url?: string; - preferences?: { - [key: string]: string | undefined; - }; - }[]; - }) | (Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - status: string; - role_names: string[]; - /** Format: date-time */ - joined_at: string; - /** Format: date-time */ - updated_at: string; - /** Format: date-time */ - last_login_time: string; - /** Format: date-time */ - deleted_at: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - /** @description Link for profile picture */ - avatar_url?: string; - }[]; - }); - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetUsers: { - parameters: { - query?: { - /** @description Get reponses by page */ - page?: string; - /** @description Get reponses by pageSize */ - page_size?: string; - /** @description Get responses that match search param value */ - search?: string; - /** @description Get ordered responses */ - order?: string; - /** @description Get filtered reponses */ - filter?: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Get all user with pagination */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": Omit<{ - page?: number; - page_size?: number; - records_total?: number; - recordType?: string; - }, "recordType"> & { - data?: { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - username: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - prefs?: { - welcome_email?: boolean; - notify_role_change?: boolean; - }; - /** @description Link for profile picture */ - avatar_url?: string; - preferences?: { - [key: string]: string | undefined; - }; - }[]; - }; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetUserProfileById: { - parameters: { - query?: never; - header?: never; - path: { - /** @description Unique identifier */ - id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Returns user with given id */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - /** @description One of (meshery-cloud, github, google) */ - provider: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - /** @description Link for profile picture */ - avatar_url?: string; - status: string; - bio?: string; - preferences?: { - [key: string]: string | undefined; - }; - accepted_terms_at?: string; - /** Format: date-time */ - first_login_time?: string; - /** Format: date-time */ - last_login_time: string; - }; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetUser: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description user details */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - /** @description One of (meshery-cloud, github, google) */ - provider: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - /** @description Link for profile picture */ - avatar_url?: string; - status: string; - bio?: string; - preferences?: { - [key: string]: string | undefined; - }; - accepted_terms_at?: string; - /** Format: date-time */ - first_login_time?: string; - /** Format: date-time */ - last_login_time: string; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - UpdateProfile: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** @description Body for upserting user */ - requestBody: { - content: { - "application/json": { - /** Format: uuid */ - id: string; - /** @description user's email or username */ - user_id: string; - /** @description One of (meshery-cloud, github, google) */ - provider: string; - /** - * Format: email - * @description email - */ - email: string; - /** @description First Name */ - first_name: string; - /** @description Last Name */ - last_name: string; - /** @description Link for profile picture */ - avatar_url?: string; - status: string; - bio?: string; - preferences?: { - [key: string]: string | undefined; - }; - accepted_terms_at?: string; - /** Format: date-time */ - first_login_time?: string; - /** Format: date-time */ - last_login_time: string; - }; - }; - }; - responses: { - /** @description created */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetProfileOverview: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description user account overview */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - k8s_count?: number; - app_count?: number; - pattern_count?: number; - }; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetUserActivity: { - parameters: { - query?: never; - header?: never; - path: { - /** @description UUID of User */ - user_id: string; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description user activity */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - recent_activity?: { - /** - * Format: uuid - * @description UUID of the event. - * - */ - id: string; - /** - * Format: uuid - * @description UUID of the user that initiated the event. In most cases this would be present, but not always. - * - */ - user_id?: string; - /** - * Format: uuid - * @description The system from which the request is sourced. In the case of Meshery Server, - * the ID is meshery_instance_id of Meshery Server (which can be found in the metadata of`Connections` table). - * - */ - system_id: string; - /** - * Format: uuid - * @description Each Event will have a OperationID. This field is never NULL, which is to say an operation can result in series of events, for eg: Different stages of Pattern Engine / activities of Workflow engine. Each operation (and sub-operation) will have a different operation ID. - * - */ - operation_id: string; - /** - * @description Resource name on which the operation is invoked. - * - * @example pattern - */ - category: string; - /** - * @description Action taken on the resource. - * - * @example deployed - */ - action: string; - /** - * @description Status for the event. - * - * @enum {string} - */ - status: "read" | "unread"; - /** - * Format: uuid - * @description UUID of the entity on which the event was performed. - * - * @example 110020-123230-434231-000213 - */ - acted_upon: string; - /** - * @description A summary/receipt of event that occured. - * - * @example “Prometheus” pattern deployed in K8s ctx “Meshery Cloud”. - */ - description: string; - /** - * @description A set of seven standard event levels. - * - * @example info - * @enum {string} - */ - severity: "emergency" | "critical" | "alert" | "error" | "warning" | "debug" | "informational" | "success"; - /** @description Contains meaningful information, specific to the type of event. - * Structure of metadata can be different for different events. - * */ - metadata: Record; - /** - * Format: date-time - * @description Timestamp when the resource was created. - */ - created_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was updated. - */ - updated_at: string; - /** - * Format: date-time - * @description Timestamp when the resource was deleted. - */ - deleted_at?: string; - }[]; - }; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetRecentlyOnlineUsers: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description active users */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - /** Format: uuid */ - id?: string; - /** @description First Name */ - first_name?: string; - /** @description Last Name */ - last_name?: string; - /** @description Link for profile picture */ - avatar_url?: string; - }[]; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; - GetAvailableBadges: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description Badges */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": { - badges?: { - [key: string]: { - /** Format: uuid */ - id?: string; - name?: string; - description?: string; - label?: string; - svg_location?: string; - /** Format: date-time */ - created_at?: string; - /** Format: date-time */ - updated_at?: string; - /** @description SQL null Timestamp to handle null values of time. */ - deleted_at?: string; - } | undefined; - }; - total_count?: number; - }; - }; - }; - /** @description Invalid request body or request param */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Expired JWT token used or insufficient privilege */ - 401: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - /** @description Internal server error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "text/plain": string; - }; - }; - }; - }; -} diff --git a/schemas/constructs/core.json b/schemas/constructs/core.json index 08b663f22f..58e2a6e1e8 100644 --- a/schemas/constructs/core.json +++ b/schemas/constructs/core.json @@ -13,13 +13,8 @@ "minLength": 2, "maxLength": 100, "description": "API version of the object", - "pattern": "([a-z.])*(?!^\/)v(alpha|beta|[0-9]+)([.-]*[a-z0-9]+)*$", - "example": [ - "v1", - "v1alpha1", - "v2beta3", - "v1.custom-suffix" - ] + "pattern": "([a-z.])*(?!^/)v(alpha|beta|[0-9]+)([.-]*[a-z0-9]+)*$", + "example": ["v1", "v1alpha1", "v2beta3", "v1.custom-suffix"] }, "semverString": { "type": "string", @@ -36,6 +31,419 @@ "x-go-type-import": { "path": "github.com/gofrs/uuid" } + }, + + "styles": { + "type": "object", + "description": "Common styles for all entities", + "additionalProperties": false, + "required": ["primaryColor", "svgColor", "svgWhite"], + "properties": { + "primaryColor": { + "type": "string", + "description": "Primary color of the component used for UI representation." + }, + "secondaryColor": { + "type": "string", + "description": "Secondary color of the entity used for UI representation." + }, + "svgWhite": { + "type": "string", + "description": "White SVG of the entity used for UI representation on dark background." + }, + "svgColor": { + "type": "string", + "description": "Colored SVG of the entity used for UI representation on light background." + }, + "svgComplete": { + "type": "string", + "description": "Complete SVG of the entity used for UI representation, often inclusive of background." + }, + "color": { + "type": "string", + "description": "The color of the element's label. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "text-opacity": { + "type": "number", + "description": "The opacity of the label text, including its outline.", + "minimum": 0, + "maximum": 1 + }, + "font-family": { + "type": "string", + "description": "A comma-separated list of font names to use on the label text." + }, + "font-size": { + "type": "string", + "description": "The size of the label text." + }, + "font-style": { + "type": "string", + "description": "A CSS font style to be applied to the label text." + }, + "font-weight": { + "type": "string", + "description": "A CSS font weight to be applied to the label text." + }, + "text-transform": { + "type": "string", + "description": "A transformation to apply to the label text", + "enum": ["none", "uppercase", "lowercase"] + }, + "opacity": { + "type": "number", + "description": "The opacity of the element, ranging from 0 to 1. Note that the opacity of a compound node parent affects the effective opacity of its children.See https://js.cytoscape.org/#style/visibility", + "minimum": 0, + "maximum": 1 + }, + "z-index": { + "type": "integer", + "description": "An integer value that affects the relative draw order of elements. In general, an element with a higher z-index will be drawn on top of an element with a lower z-index. Note that edges are under nodes despite z-index." + }, + "label": { + "type": "string", + "description": "The text to display for an element\u2019s label. Can give a path, e.g. data(id) will label with the elements id" + } + } + }, + "shape": { + "type": "string", + "description": "The shape of the node\u2019s body. Note that each shape fits within the specified width and height, and so you may have to adjust width and height if you desire an equilateral shape (i.e. width !== height for several equilateral shapes)", + "enum": [ + "ellipse", + "triangle", + "round-triangle", + "rectangle", + "round-rectangle", + "bottom-round-rectangle", + "cut-rectangle", + "barrel", + "rhomboid", + "diamond", + "round-diamond", + "pentagon", + "round-pentagon", + "hexagon", + "round-hexagon", + "concave-hexagon", + "heptagon", + "round-heptagon", + "octagon", + "round-octagon", + "star", + "tag", + "round-tag", + "vee", + "polygon" + ] + }, + + "edgeStyles": { + "type": "object", + "description": "Visualization styles for a relationship", + "allOf": [ + { + "$ref": "#/definitions/styles" + } + ], + "properties": { + "edge-animation": { + "type": "string", + "description": "The animation to use for the edge. Can be like 'marching-ants' , 'blink' , 'moving-gradient',etc ." + }, + "curve-style": { + "type": "string", + "description": "The curving method used to separate two or more edges between two nodes; may be haystack (very fast, bundled straight edges for which loops and compounds are unsupported), straight (straight edges with all arrows supported), bezier (bundled curved edges), unbundled-bezier (curved edges for use with manual control points), segments (a series of straight lines), taxi (right-angled lines, hierarchically bundled). Note that haystack edges work best with ellipse, rectangle, or similar nodes. Smaller node shapes, like triangle, will not be as aesthetically pleasing. Also note that edge endpoint arrows are unsupported for haystack edges.", + "default": "straight", + "enum": ["straight", "haystack", "bezier", "unbundled-bezier", "segments", "taxi"] + }, + "line-color": { + "type": "string", + "description": "The colour of the edge\u2019s line. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "line-style": { + "type": "string", + "description": "The style of the edge\u2019s line.", + "enum": ["solid", "dotted", "dashed"] + }, + "line-cap": { + "type": "string", + "description": "The cap style of the edge\u2019s line; may be butt (default), round, or square. The cap may or may not be visible, depending on the shape of the node and the relative size of the node and edge. Caps other than butt extend beyond the specified endpoint of the edge.", + "enum": ["butt", "round", "square"], + "default": "butt" + }, + "line-opacity": { + "type": "number", + "minimum": 0, + "maximum": 1, + "default": 1, + "description": "The opacity of the edge\u2019s line and arrow. Useful if you wish to have a separate opacity for the edge label versus the edge line. Note that the opacity value of the edge element affects the effective opacity of its line and label subcomponents." + }, + "target-arrow-color": { + "type": "string", + "description": "The colour of the edge\u2019s source arrow. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "target-arrow-shape": { + "type": "string", + "description": "The shape of the edge\u2019s source arrow", + "enum": [ + "triangle", + "triangle-tee", + "circle-triangle", + "triangle-cross", + "triangle-backcurve", + "vee", + "tee", + "square", + "circle", + "diamond", + "chevron", + "none" + ] + }, + "target-arrow-fill": { + "type": "string", + "description": "The fill state of the edge\u2019s source arrow", + "enum": ["filled", "hollow"] + }, + "mid-target-arrow-color": { + "type": "string", + "description": "The colour of the edge\u2019s source arrow. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "mid-target-arrow-shape": { + "type": "string", + "description": "The shape of the edge\u2019s source arrow", + "enum": [ + "triangle", + "triangle-tee", + "circle-triangle", + "triangle-cross", + "triangle-backcurve", + "vee", + "tee", + "square", + "circle", + "diamond", + "chevron", + "none" + ] + }, + "mid-target-arrow-fill": { + "type": "string", + "description": "The fill state of the edge\u2019s source arrow", + "enum": ["filled", "hollow"] + }, + "arrow-scale": { + "type": "number", + "description": "Scaling for the arrow size.", + "minimum": 0 + }, + + "source-label": { + "type": "string", + "description": "The text to display for an edge\u2019s source label. Can give a path, e.g. data(id) will label with the elements id" + }, + "target-label": { + "type": "string", + "description": "The text to display for an edge\u2019s target label. Can give a path, e.g. data(id) will label with the elements id" + } + } + }, + + "componentStyles": { + "type": "object", + "description": "Visualization styles for a component", + "required": ["shape", "primaryColor", "svgColor", "svgWhite"], + "allOf": [ + { + "$ref": "#/definitions/styles" + } + ], + "properties": { + "shape": { + "$ref": "#/definitions/shape" + }, + "position": { + "type": "object", + "additionalProperties": false, + "required": ["x", "y"], + "description": "The position of the node. If the position is set, the node is drawn at that position in the given dimensions. If the position is not set, the node is drawn at a random position.", + "properties": { + "x": { + "type": "number", + "description": "The x-coordinate of the node." + }, + "y": { + "type": "number", + "description": "The y-coordinate of the node." + } + } + }, + + "body-text": { + "type": "string", + "description": "The text to display for an element\u2019s body. Can give a path, e.g. data(id) will label with the elements id" + }, + "body-text-wrap": { + "type": "string", + "description": "How to wrap the text in the node. Can be 'none', 'wrap', or 'ellipsis'." + }, + "body-text-max-width": { + "type": "string", + "description": "The maximum width for wrapping text in the node." + }, + "body-text-opacity": { + "type": "number", + "description": "The opacity of the node\u2019s body text, including its outline.", + "minimum": 0, + "maximum": 1 + }, + "body-text-background-color": { + "type": "string", + "description": "The colour of the node\u2019s body text background. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "body-text-font-size": { + "type": "string", + "description": "The size of the node\u2019s body text." + }, + "body-text-color": { + "type": "string", + "description": "The colour of the node\u2019s body text. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "body-text-weight": { + "type": "string", + "description": "A CSS font weight to be applied to the node\u2019s body text." + }, + "body-text-horizontal-align": { + "type": "string", + "description": "A CSS horizontal alignment to be applied to the node\u2019s body text." + }, + "body-text-decoration": { + "type": "string", + "description": "A CSS text decoration to be applied to the node\u2019s body text." + }, + "body-text-vertical-align": { + "type": "string", + "description": "A CSS vertical alignment to be applied to the node\u2019s body text." + }, + "width": { + "type": "number", + "description": "The width of the node\u2019s body or the width of an edge\u2019s line." + }, + "height": { + "type": "number", + "description": "The height of the node\u2019s body" + }, + + "background-color": { + "type": "string", + "description": "The colour of the node\u2019s body. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "background-blacken": { + "type": "number", + "description": "Blackens the node\u2019s body for values from 0 to 1; whitens the node\u2019s body for values from 0 to -1.", + "maximum": 1, + "minimum": -1 + }, + "background-opacity": { + "type": "number", + "description": "The opacity level of the node\u2019s background colour", + "maximum": 1, + "minimum": 0 + }, + "border-width": { + "type": "number", + "description": "The size of the node\u2019s border.", + "minimum": 0 + }, + "border-style": { + "type": "string", + "description": "The style of the node\u2019s border", + "enum": ["solid", "dotted", "dashed", "double"] + }, + "border-color": { + "type": "string", + "description": "The colour of the node\u2019s border. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "border-opacity": { + "type": "number", + "description": "The opacity of the node\u2019s border", + "minimum": 0, + "maximum": 1 + }, + "padding": { + "type": "number", + "description": "The amount of padding around all sides of the node.", + "minimum": 0 + }, + + "text-halign": { + "type": "string", + "description": "The horizontal alignment of a node\u2019s label", + "enum": ["left", "center", "right"] + }, + "text-valign": { + "type": "string", + "description": "The vertical alignment of a node\u2019s label", + "enum": ["top", "center", "bottom"] + }, + "ghost": { + "type": "string", + "description": "Whether to use the ghost effect, a semitransparent duplicate of the element drawn at an offset.", + "default": "no", + "enum": ["yes", "no"] + }, + "active-bg-color": { + "type": "string", + "description": "The colour of the indicator shown when the background is grabbed by the user. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "active-bg-opacity": { + "type": "string", + "description": " The opacity of the active background indicator. Selector needs to be *core*." + }, + "active-bg-size": { + "type": "string", + "description": " The opacity of the active background indicator. Selector needs to be *core*." + }, + "selection-box-color": { + "type": "string", + "description": "The background colour of the selection box used for drag selection. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "selection-box-border-width": { + "type": "number", + "description": "The size of the border on the selection box. Selector needs to be *core*" + }, + "selection-box-opacity": { + "type": "number", + "description": "The opacity of the selection box. Selector needs to be *core*", + "minimum": 0, + "maximum": 1 + }, + "outside-texture-bg-color": { + "type": "string", + "description": "The colour of the area outside the viewport texture when initOptions.textureOnViewport === true. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%))." + }, + "outside-texture-bg-opacity": { + "type": "number", + "description": "The opacity of the area outside the viewport texture. Selector needs to be *core*", + "minimum": 0, + "maximum": 1 + } + } + }, + + "relationshipStyles": { + "anyOf": [ + { + "$ref": "#/definitions/edgeStyles" + }, + { + "additionalProperties": true, + "$comment": "Extension point for additional styles", + "$ref": "#/definitions/styles" + } + ] } } -} \ No newline at end of file +} + diff --git a/schemas/constructs/v1alpha1/capability.json b/schemas/constructs/v1alpha1/capability.json new file mode 100644 index 0000000000..b13ec4e5e7 --- /dev/null +++ b/schemas/constructs/v1alpha1/capability.json @@ -0,0 +1,93 @@ +{ + "$id": "https://schemas.meshery.io/capability.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Meshery manages entities in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. Entities may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management.", + "additionalProperties": false, + "type": "object", + + "required": ["schemaVersion", "version", "displayName", "kind", "type", "state", "status"], + + "properties": { + "schemaVersion": { + "$ref": "../core.json#/definitions/versionString", + "description": "Specifies the version of the schema to which the capability definition conforms." + }, + "version": { + "$ref": "../core.json#/definitions/semverString", + "description": "Version of the capability definition." + }, + "displayName": { + "$ref": "../core.json#/definitions/inputString", + "description": "Name of the capability in human-readible format." + }, + "description": { + "type": "string", + "description": "A written representation of the purpose and characteristics of the capability." + }, + + "kind": { + "$ref": "../core.json#/definitions/inputString", + "description": "Top-level categorization of the capability", + "additionalProperties": false, + "anyOf": [ + { + "const": "action", + "description": "For capabilities related to executing actions on entities. Example: initiate log streaming on a Pod. Example: initiate deployment of a component." + }, + { + "const": "mutate", + "description": "For capabilities related to mutating an entity. Example: the ability to change the configuration of a component." + }, + + { + "const": "view", + "description": "For capabilities related to viewing an entity. Example: the ability to view a components configuration." + }, + + { + "const": "interaction", + "description": "Catch all for capabilities related to interaction with entities. Example: the ability for a component to be dragged and dropped. Example: supports event bubbling to parent components. " + } + ] + }, + + "type": { + "$ref": "../core.json#/definitions/inputString", + "description": "Classification of capabilities. Used to group capabilities similar in nature." + }, + + "subType": { + "$ref": "../core.json#/definitions/inputString", + "description": "Most granular unit of capability classification. The combination of Kind, Type and SubType together uniquely identify a Capability." + }, + + "key": { + "$ref": "../core.json#/definitions/inputString", + "description": "Key that backs the capability." + }, + + "entityState": { + "$ref": "../core.json#/definitions/inputString", + "description": "State of the entity in which the capability is applicable.", + "type": "array", + "items": { + "type": "string", + "enum": ["declaration", "instance"] + } + }, + + "status": { + "type": "string", + "description": "Status of the capability", + "default": "enabled", + "enum": ["enabled", "disabled"] + }, + + "metadata": { + "type": "object", + "description": "Metadata contains additional information associated with the capability. Extension point.", + "additionalProperties": true + } + } +} + diff --git a/schemas/constructs/v1alpha3/relationship.json b/schemas/constructs/v1alpha3/relationship.json index dc712593fc..56bece439f 100644 --- a/schemas/constructs/v1alpha3/relationship.json +++ b/schemas/constructs/v1alpha3/relationship.json @@ -2,14 +2,7 @@ "$id": "https://schemas.meshery.io/relationship.json", "$schema": "http://json-schema.org/draft-07/schema#", "description": "Relationships define the nature of interaction between interconnected components in Meshery. The combination of relationship properties kind, type, and subtype characterize various genealogical relations among and between components. Relationships have selectors, selector sets, metadata, and optional parameters. Learn more at https://docs.meshery.io/concepts/logical/relationships.", - "required": [ - "schemaVersion", - "version", - "model", - "kind", - "type", - "subType" - ], + "required": ["schemaVersion", "version", "model", "kind", "type", "subType"], "additionalProperties": false, "type": "object", "properties": { @@ -28,11 +21,7 @@ "kind": { "$ref": "../core.json#/definitions/inputString", "description": "Kind of the Relationship. Learn more about relationships - https://docs.meshery.io/concepts/logical/relationships.", - "enum": [ - "Hierarchical", - "Edge", - "Sibling" - ] + "enum": ["Hierarchical", "Edge", "Sibling"] }, "type": { "$ref": "../core.json#/definitions/inputString", @@ -46,13 +35,23 @@ "$ref": "../core.json#/definitions/inputString", "description": "Optional. Assigns the policy to be used for the evaluation of the relationship. Deprecation Notice: In the future, this property is either to be removed or to it is to be an array of optional policy $refs." }, + "capabilities": { + "type": "array", + "description": "Capabilities associated with the relationship.", + "items": { + "$ref": "../v1alpha1/capability.json" + } + }, "metadata": { "type": "object", "description": "Metadata contains additional information associated with the Relationship.", "properties": { "description": { "$ref": "../core.json#/definitions/inputString", - "description": "Characteristization of the meaning of the relationship and its relevance to both Meshery and entities under management." + "description": "Characterization of the meaning of the relationship and its relevance to both Meshery and entities under management." + }, + "styles": { + "$ref": "../core.json#/definitions/relationshipStyles" } } }, @@ -64,17 +63,12 @@ "type": "object", "description": "Optional selectors used to match Components. Absence of a selector means that it is applied to all Components.", "additionalProperties": false, - "required": [ - "allow" - ], + "required": ["allow"], "properties": { "deny": { "type": "object", "description": "Optional selectors used to define relationships which should not be created / is restricted.", - "required": [ - "to", - "from" - ], + "required": ["to", "from"], "properties": { "from": { "$ref": "./selectors.json#/definitions/from" @@ -87,10 +81,7 @@ "allow": { "type": "object", "description": "Selectors used to define relationships which are allowed.", - "required": [ - "to", - "from" - ], + "required": ["to", "from"], "properties": { "from": { "$ref": "./selectors.json#/definitions/from" @@ -104,4 +95,5 @@ } } } -} \ No newline at end of file +} + diff --git a/schemas/constructs/v1beta1/component.json b/schemas/constructs/v1beta1/component.json index d98b783bf5..98eb4030d5 100644 --- a/schemas/constructs/v1beta1/component.json +++ b/schemas/constructs/v1beta1/component.json @@ -29,10 +29,7 @@ }, "format": { "type": "string", - "enum": [ - "JSON", - "CUE" - ], + "enum": ["JSON", "CUE"], "default": "JSON", "description": "Format specifies the format used in the `component.schema` field. JSON is the default." }, @@ -40,20 +37,30 @@ "$ref": "./model.json", "description": "Reference to the specific registered model to which the component belongs and from which model version, category, and other properties may be referenced. Learn more at https://docs.meshery.io/concepts/models" }, + "styles": { + "$ref": "../core.json#/definitions/componentStyles" + }, + "capabilities": { + "type": "array", + "description": "Meshery manages components in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. ComponentDefinitions may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management.", + "items": { + "$ref": "../v1alpha1/capability.json" + } + }, + "status": { + "type": "string", + "description": "Status of component, including:\n- duplicate: this component is a duplicate of another. The component that is to be the canonical reference and that is duplicated by other components should not be assigned the 'duplicate' status.\n- maintenance: model is unavailable for a period of time.\n- enabled: model is available for use for all users of this Meshery Server.\n- ignored: model is unavailable for use for all users of this Meshery Server.", + "default": "enabled", + "enum": ["ignored", "enabled", "duplicate"], + "x-oapi-codegen-extra-tags": { + "yaml": "status", + "json": "status" + } + }, "metadata": { "type": "object", "description": "Metadata contains additional information associated with the component.", - "required": [ - "shape", - "primaryColor", - "svgColor", - "svgWhite" - ], "properties": { - "capabilities": { - "type": "object", - "description": "Meshery manages components in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. ComponentDefinitions may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management." - }, "genealogy": { "type": "string", "description": "Genealogy represents the various representational states of the component." @@ -62,56 +69,6 @@ "type": "boolean", "description": "Identifies whether the component is semantically meaningful or not; identifies whether the component should be treated as deployable entity or is for purposes of logical representation." }, - "shape": { - "type": "string", - "description": "Shape of the component used for UI representation.", - "enum": [ - "ellipse", - "triangle", - "round-triangle", - "rectangle", - "round-rectangle", - "bottom-round-rectangle", - "cut-rectangle", - "barrel", - "rhomboid", - "diamond", - "round-diamond", - "pentagon", - "round-pentagon", - "hexagon", - "round-hexagon", - "concave-hexagon", - "heptagon", - "round-heptagon", - "octagon", - "round-octagon", - "star", - "tag", - "round-tag", - "vee" - ] - }, - "primaryColor": { - "type": "string", - "description": "Primary color of the component used for UI representation." - }, - "secondaryColor": { - "type": "string", - "description": "Secondary color of the component used for UI representation." - }, - "svgWhite": { - "type": "string", - "description": "White SVG of the component used for UI representation on dark background." - }, - "svgColor": { - "type": "string", - "description": "Colored SVG of the component used for UI representation on light background." - }, - "svgComplete": { - "type": "string", - "description": "Complete SVG of the component used for UI representation, often inclusive of background." - }, "published": { "type": "boolean", "description": "'published' controls whether the component should be registered in Meshery Registry. When the same 'published' property in Models, is set to 'false', the Model property takes precedence with all Entities in the Model not being registered." @@ -120,7 +77,7 @@ "additionalProperties": true }, "configuration": { - "$comment": "The configuration of the component. The configuration is based on the schema defined within the component definition(component.schema).", + "description": "The configuration of the component. The configuration is based on the schema defined within the component definition(component.schema).", "type": "object" }, "component": { @@ -135,22 +92,15 @@ "type": "string", "description": "The unique identifier (name) assigned by the registrant to this component. Example: A Kubernetes Pod is of kind 'Pod'." }, + "schema": { "type": "string", "description": "JSON schema of the object as defined by the registrant." } }, - "required": [ - "version", - "kind", - "schema" - ] + "required": ["version", "kind", "schema"] } }, - "required": [ - "schemaVersion", - "version", - "model", - "component" - ] -} \ No newline at end of file + "required": ["schemaVersion", "version", "model", "component"] +} + diff --git a/schemas/constructs/v1beta1/model.json b/schemas/constructs/v1beta1/model.json index 98dd384f6f..75444e0458 100644 --- a/schemas/constructs/v1beta1/model.json +++ b/schemas/constructs/v1beta1/model.json @@ -11,12 +11,7 @@ "maxLength": 50, "type": "string", "pattern": "([a-z.])*(?!^/)v(alpha|beta|[0-9]+)([.-]*[a-z0-9]+)*$", - "example": [ - "v1", - "v1alpha1", - "v2beta3", - "v1.custom-suffix" - ], + "example": ["v1", "v1alpha1", "v2beta3", "v1.custom-suffix"], "x-oapi-codegen-extra-tags": { "yaml": "schemaVersion", "json": "schemaVersion" @@ -68,11 +63,7 @@ "status": { "type": "string", "description": "Status of model, including:\n- duplicate: this component is a duplicate of another. The component that is to be the canonical reference and that is duplicated by other components should not be assigned the 'duplicate' status.\n- maintenance: model is unavailable for a period of time.\n- enabled: model is available for use for all users of this Meshery Server.\n- ignored: model is unavailable for use for all users of this Meshery Server.", - "enum": [ - "ignored", - "enabled", - "duplicate" - ], + "enum": ["ignored", "enabled", "duplicate"], "x-oapi-codegen-extra-tags": { "yaml": "status", "json": "status" @@ -108,11 +99,15 @@ "metadata": { "type": "object", "description": "Metadata containing additional information associated with the model.", - "required": [ - "name", - "version" - ], + "required": ["name", "version"], "properties": { + "capabilities": { + "type": "array", + "description": "Capabilities associated with the model", + "items": { + "$ref": "../v1alpha1/capability.json" + } + }, "isAnnotation": { "type": "boolean", "description": "Indicates whether the model and its entities should be treated as deployable entities or as logical representations.", @@ -174,9 +169,7 @@ "model": { "type": "object", "description": "Registrant-defined data associated with the model. Properties pertain to the software being managed (e.g. Kubernetes v1.31)", - "required": [ - "version" - ], + "required": ["version"], "properties": { "version": { "description": "Version of the model as defined by the registrant.", @@ -184,12 +177,7 @@ "maxLength": 100, "type": "string", "pattern": "([a-z.])*(?!^/)v(alpha|beta|[0-9]+)([.-]*[a-z0-9]+)*$", - "example": [ - "v1", - "v1alpha1", - "v2beta3", - "v1.custom-suffix" - ], + "example": ["v1", "v1alpha1", "v2beta3", "v1.custom-suffix"], "x-oapi-codegen-extra-tags": { "yaml": "version", "json": "version" @@ -198,10 +186,6 @@ } } }, - "required": [ - "name", - "version", - "registrant", - "category" - ] -} \ No newline at end of file + "required": ["name", "version", "registrant", "category"] +} + diff --git a/scripts/merge-openapi-specs.sh b/scripts/merge-openapi-specs.sh index f6c9db0717..e69de29bb2 100755 --- a/scripts/merge-openapi-specs.sh +++ b/scripts/merge-openapi-specs.sh @@ -1,35 +0,0 @@ -#!/bin/bash -temp_bundle_dir="./openapi/schemas/temp_schema_bundle" -echo $folderName - -process_spec() { - echo "processing $1 ..." - name=$(basename $1) -redocly bundle --dereferenced $1 -o "$temp_bundle_dir/$name" - echo "\n" -} - - -schemas_dir="./schemas/constructs/openapi" -for s in $schemas_dir/*; do - if [[ -f $s ]]; then - process_spec $s - fi -done - -schemas_to_join='' - -for s in $temp_bundle_dir/*; do -echo $s - if [[ -f $s ]]; then - schemas_to_join+="$s " - fi -done - -echo "\njoining following schemas $schemas_to_join\n" - -redocly join $schemas_to_join -o ./schemas/openapi.yml - -echo "Successfully joined openapi specs. Removing temp dir." - -rm -r $temp_bundle_dir \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 24e9868bfe..32b24591ba 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,8 @@ "declaration": true, "outDir": "./dist", "strict": true, - "esModuleInterop": true + "esModuleInterop": true, + "resolveJsonModule": true }, "include": ["./typescript"] } diff --git a/typescript/constructs/v1alpha1/capability.d.ts b/typescript/constructs/v1alpha1/capability.d.ts new file mode 100644 index 0000000000..ed0cd19e83 --- /dev/null +++ b/typescript/constructs/v1alpha1/capability.d.ts @@ -0,0 +1,60 @@ +/* eslint-disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * State of the entity in which the capability is applicable. + */ +export type InputString = ("declaration" | "instance")[]; + +/** + * Meshery manages entities in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. Entities may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. + */ +export interface HttpsSchemasMesheryIoCapabilityJson { + /** + * Specifies the version of the schema to which the capability definition conforms. + */ + schemaVersion: string; + /** + * Version of the capability definition. + */ + version: string; + /** + * Name of the capability in human-readible format. + */ + displayName: string; + /** + * A written representation of the purpose and characteristics of the capability. + */ + description?: string; + /** + * Top-level categorization of the capability + */ + kind: ("action" | "mutate" | "view" | "interaction") & string; + /** + * Classification of capabilities. Used to group capabilities similar in nature. + */ + type: string; + /** + * Most granular unit of capability classification. The combination of Kind, Type and SubType together uniquely identify a Capability. + */ + subType?: string; + /** + * Key that backs the capability. + */ + key?: string; + entityState?: InputString; + /** + * Status of the capability + */ + status: "enabled" | "disabled"; + /** + * Metadata contains additional information associated with the capability. Extension point. + */ + metadata?: { + [k: string]: unknown; + }; +} diff --git a/typescript/constructs/v1alpha1/componentCapability.d.ts b/typescript/constructs/v1alpha1/componentCapability.d.ts new file mode 100644 index 0000000000..ea716334fb --- /dev/null +++ b/typescript/constructs/v1alpha1/componentCapability.d.ts @@ -0,0 +1,72 @@ +/* eslint-disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * State of the component in which the capability is applicable. + */ +export type InputString = ("declaration" | "instance")[]; + +/** + * Meshery manages components in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. ComponentDefinitions may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. + */ +export interface HttpsSchemasMesheryIoCapabilityJson { + /** + * Specifies the version of the schema to which the capability definition conforms. + */ + schemaVersion: string; + /** + * Version of the capability definition. + */ + version: string; + /** + * Name of the capability in human-readible format. + */ + displayName: string; + /** + * A written representation of the purpose and characteristics of the capability. + */ + description?: string; + /** + * Kind of the capability + */ + kind: ( + | "configuration" + | "visualization" + | "management" + | "interaction" + | "integration" + | "security" + | "performance" + | "workflow" + | "persistence" + | "communication" + ) & + string; + /** + * Classification of capabilities. Used to group capabilities similar in nature. + */ + type: string; + /** + * Most granular unit of capability classification. The combination of Kind, Type and SubType together uniquely identify a Capability. + */ + subType?: string; + /** + * Key that backs the capability. + */ + key?: string; + state: InputString; + /** + * Status of the capability + */ + status: "enabled" | "disabled"; + /** + * Metadata contains additional information associated with the capability. + */ + metadata?: { + [k: string]: unknown; + }; +} diff --git a/typescript/constructs/v1alpha2/relationship.d.ts b/typescript/constructs/v1alpha2/relationship.d.ts index 915600dd1a..abb7495f4a 100644 --- a/typescript/constructs/v1alpha2/relationship.d.ts +++ b/typescript/constructs/v1alpha2/relationship.d.ts @@ -5,6 +5,10 @@ * and run json-schema-to-typescript to regenerate this file. */ +/** + * State of the entity in which the capability is applicable. + */ +export type InputString = ("declaration" | "instance")[]; export type From = { kind?: string; model?: HttpsSchemasMesheryIoModelJson1; @@ -164,6 +168,10 @@ export interface HttpsSchemasMesheryIoModelJson { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ @@ -201,6 +209,54 @@ export interface HttpsSchemasMesheryIoModelJson { [k: string]: unknown; }; } +/** + * Meshery manages entities in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. Entities may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. + */ +export interface HttpsSchemasMesheryIoCapabilityJson { + /** + * Specifies the version of the schema to which the capability definition conforms. + */ + schemaVersion: string; + /** + * Version of the capability definition. + */ + version: string; + /** + * Name of the capability in human-readible format. + */ + displayName: string; + /** + * A written representation of the purpose and characteristics of the capability. + */ + description?: string; + /** + * Top-level categorization of the capability + */ + kind: ("action" | "mutate" | "view" | "interaction") & string; + /** + * Classification of capabilities. Used to group capabilities similar in nature. + */ + type: string; + /** + * Most granular unit of capability classification. The combination of Kind, Type and SubType together uniquely identify a Capability. + */ + subType?: string; + /** + * Key that backs the capability. + */ + key?: string; + entityState?: InputString; + /** + * Status of the capability + */ + status: "enabled" | "disabled"; + /** + * Metadata contains additional information associated with the capability. Extension point. + */ + metadata?: { + [k: string]: unknown; + }; +} /** * Model of the component. Learn more at https://docs.meshery.io/concepts/models */ @@ -248,6 +304,10 @@ export interface HttpsSchemasMesheryIoModelJson1 { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ @@ -332,6 +392,10 @@ export interface HttpsSchemasMesheryIoModelJson2 { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ diff --git a/typescript/constructs/v1alpha3/relationship.d.ts b/typescript/constructs/v1alpha3/relationship.d.ts index 19d96300af..cecde921ed 100644 --- a/typescript/constructs/v1alpha3/relationship.d.ts +++ b/typescript/constructs/v1alpha3/relationship.d.ts @@ -5,6 +5,100 @@ * and run json-schema-to-typescript to regenerate this file. */ +/** + * State of the entity in which the capability is applicable. + */ +export type InputString = ("declaration" | "instance")[]; +/** + * Visualization styles for a relationship + */ +export type EdgeStyles = Styles & { + /** + * The animation to use for the edge. Can be like 'marching-ants' , 'blink' , 'moving-gradient',etc . + */ + "edge-animation"?: string; + /** + * The curving method used to separate two or more edges between two nodes; may be haystack (very fast, bundled straight edges for which loops and compounds are unsupported), straight (straight edges with all arrows supported), bezier (bundled curved edges), unbundled-bezier (curved edges for use with manual control points), segments (a series of straight lines), taxi (right-angled lines, hierarchically bundled). Note that haystack edges work best with ellipse, rectangle, or similar nodes. Smaller node shapes, like triangle, will not be as aesthetically pleasing. Also note that edge endpoint arrows are unsupported for haystack edges. + */ + "curve-style"?: "straight" | "haystack" | "bezier" | "unbundled-bezier" | "segments" | "taxi"; + /** + * The colour of the edge’s line. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "line-color"?: string; + /** + * The style of the edge’s line. + */ + "line-style"?: "solid" | "dotted" | "dashed"; + /** + * The cap style of the edge’s line; may be butt (default), round, or square. The cap may or may not be visible, depending on the shape of the node and the relative size of the node and edge. Caps other than butt extend beyond the specified endpoint of the edge. + */ + "line-cap"?: "butt" | "round" | "square"; + /** + * The opacity of the edge’s line and arrow. Useful if you wish to have a separate opacity for the edge label versus the edge line. Note that the opacity value of the edge element affects the effective opacity of its line and label subcomponents. + */ + "line-opacity"?: number; + /** + * The colour of the edge’s source arrow. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "target-arrow-color"?: string; + /** + * The shape of the edge’s source arrow + */ + "target-arrow-shape"?: + | "triangle" + | "triangle-tee" + | "circle-triangle" + | "triangle-cross" + | "triangle-backcurve" + | "vee" + | "tee" + | "square" + | "circle" + | "diamond" + | "chevron" + | "none"; + /** + * The fill state of the edge’s source arrow + */ + "target-arrow-fill"?: "filled" | "hollow"; + /** + * The colour of the edge’s source arrow. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "mid-target-arrow-color"?: string; + /** + * The shape of the edge’s source arrow + */ + "mid-target-arrow-shape"?: + | "triangle" + | "triangle-tee" + | "circle-triangle" + | "triangle-cross" + | "triangle-backcurve" + | "vee" + | "tee" + | "square" + | "circle" + | "diamond" + | "chevron" + | "none"; + /** + * The fill state of the edge’s source arrow + */ + "mid-target-arrow-fill"?: "filled" | "hollow"; + /** + * Scaling for the arrow size. + */ + "arrow-scale"?: number; + /** + * The text to display for an edge’s source label. Can give a path, e.g. data(id) will label with the elements id + */ + "source-label"?: string; + /** + * The text to display for an edge’s target label. Can give a path, e.g. data(id) will label with the elements id + */ + "target-label"?: string; + [k: string]: unknown; +}; export type From = { kind?: string; model?: HttpsSchemasMesheryIoModelJson1; @@ -93,14 +187,19 @@ export interface HttpsSchemasMesheryIoRelationshipJson { * Optional. Assigns the policy to be used for the evaluation of the relationship. Deprecation Notice: In the future, this property is either to be removed or to it is to be an array of optional policy $refs. */ evaluationQuery?: string; + /** + * Capabilities associated with the relationship. + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Metadata contains additional information associated with the Relationship. */ metadata?: { /** - * Characteristization of the meaning of the relationship and its relevance to both Meshery and entities under management. + * Characterization of the meaning of the relationship and its relevance to both Meshery and entities under management. */ description?: string; + styles?: EdgeStyles | Styles1; [k: string]: unknown; }; /** @@ -172,6 +271,10 @@ export interface HttpsSchemasMesheryIoModelJson { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ @@ -209,6 +312,184 @@ export interface HttpsSchemasMesheryIoModelJson { [k: string]: unknown; }; } +/** + * Meshery manages entities in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. Entities may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. + */ +export interface HttpsSchemasMesheryIoCapabilityJson { + /** + * Specifies the version of the schema to which the capability definition conforms. + */ + schemaVersion: string; + /** + * Version of the capability definition. + */ + version: string; + /** + * Name of the capability in human-readible format. + */ + displayName: string; + /** + * A written representation of the purpose and characteristics of the capability. + */ + description?: string; + /** + * Top-level categorization of the capability + */ + kind: ("action" | "mutate" | "view" | "interaction") & string; + /** + * Classification of capabilities. Used to group capabilities similar in nature. + */ + type: string; + /** + * Most granular unit of capability classification. The combination of Kind, Type and SubType together uniquely identify a Capability. + */ + subType?: string; + /** + * Key that backs the capability. + */ + key?: string; + entityState?: InputString; + /** + * Status of the capability + */ + status: "enabled" | "disabled"; + /** + * Metadata contains additional information associated with the capability. Extension point. + */ + metadata?: { + [k: string]: unknown; + }; +} +/** + * Common styles for all entities + */ +export interface Styles { + /** + * Primary color of the component used for UI representation. + */ + primaryColor: string; + /** + * Secondary color of the entity used for UI representation. + */ + secondaryColor?: string; + /** + * White SVG of the entity used for UI representation on dark background. + */ + svgWhite: string; + /** + * Colored SVG of the entity used for UI representation on light background. + */ + svgColor: string; + /** + * Complete SVG of the entity used for UI representation, often inclusive of background. + */ + svgComplete?: string; + /** + * The color of the element's label. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + color?: string; + /** + * The opacity of the label text, including its outline. + */ + "text-opacity"?: number; + /** + * A comma-separated list of font names to use on the label text. + */ + "font-family"?: string; + /** + * The size of the label text. + */ + "font-size"?: string; + /** + * A CSS font style to be applied to the label text. + */ + "font-style"?: string; + /** + * A CSS font weight to be applied to the label text. + */ + "font-weight"?: string; + /** + * A transformation to apply to the label text + */ + "text-transform"?: "none" | "uppercase" | "lowercase"; + /** + * The opacity of the element. See https://js.cytoscape.org/#style/visibility + */ + opacity?: number; + /** + * An integer value that affects the relative draw order of elements. In general, an element with a higher z-index will be drawn on top of an element with a lower z-index. Note that edges are under nodes despite z-index. + */ + "z-index"?: number; + /** + * The text to display for an element’s label. Can give a path, e.g. data(id) will label with the elements id + */ + label?: string; +} +/** + * Common styles for all entities + */ +export interface Styles1 { + /** + * Primary color of the component used for UI representation. + */ + primaryColor: string; + /** + * Secondary color of the entity used for UI representation. + */ + secondaryColor?: string; + /** + * White SVG of the entity used for UI representation on dark background. + */ + svgWhite: string; + /** + * Colored SVG of the entity used for UI representation on light background. + */ + svgColor: string; + /** + * Complete SVG of the entity used for UI representation, often inclusive of background. + */ + svgComplete?: string; + /** + * The color of the element's label. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + color?: string; + /** + * The opacity of the label text, including its outline. + */ + "text-opacity"?: number; + /** + * A comma-separated list of font names to use on the label text. + */ + "font-family"?: string; + /** + * The size of the label text. + */ + "font-size"?: string; + /** + * A CSS font style to be applied to the label text. + */ + "font-style"?: string; + /** + * A CSS font weight to be applied to the label text. + */ + "font-weight"?: string; + /** + * A transformation to apply to the label text + */ + "text-transform"?: "none" | "uppercase" | "lowercase"; + /** + * The opacity of the element. See https://js.cytoscape.org/#style/visibility + */ + opacity?: number; + /** + * An integer value that affects the relative draw order of elements. In general, an element with a higher z-index will be drawn on top of an element with a lower z-index. Note that edges are under nodes despite z-index. + */ + "z-index"?: number; + /** + * The text to display for an element’s label. Can give a path, e.g. data(id) will label with the elements id + */ + label?: string; +} /** * Name of the model implicated by this selector. Learn more at https://docs.meshery.io/concepts/models */ @@ -256,6 +537,10 @@ export interface HttpsSchemasMesheryIoModelJson1 { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ @@ -340,6 +625,10 @@ export interface HttpsSchemasMesheryIoModelJson2 { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ diff --git a/typescript/constructs/v1beta1/component.d.ts b/typescript/constructs/v1beta1/component.d.ts index 57345c20e9..3415eaa4c4 100644 --- a/typescript/constructs/v1beta1/component.d.ts +++ b/typescript/constructs/v1beta1/component.d.ts @@ -5,6 +5,187 @@ * and run json-schema-to-typescript to regenerate this file. */ +/** + * State of the entity in which the capability is applicable. + */ +export type InputString = ("declaration" | "instance")[]; +/** + * Visualization styles for a component + */ +export type ComponentStyles = Styles & { + /** + * The shape of the node’s body. Note that each shape fits within the specified width and height, and so you may have to adjust width and height if you desire an equilateral shape (i.e. width !== height for several equilateral shapes) + */ + shape: + | "ellipse" + | "triangle" + | "round-triangle" + | "rectangle" + | "round-rectangle" + | "bottom-round-rectangle" + | "cut-rectangle" + | "barrel" + | "rhomboid" + | "diamond" + | "round-diamond" + | "pentagon" + | "round-pentagon" + | "hexagon" + | "round-hexagon" + | "concave-hexagon" + | "heptagon" + | "round-heptagon" + | "octagon" + | "round-octagon" + | "star" + | "tag" + | "round-tag" + | "vee" + | "polygon"; + /** + * The position of the node. If the position is set, the node is drawn at that position in the given dimensions. If the position is not set, the node is drawn at a random position. + */ + position?: { + /** + * The x-coordinate of the node. + */ + x: number; + /** + * The y-coordinate of the node. + */ + y: number; + }; + /** + * The text to display for an element’s body. Can give a path, e.g. data(id) will label with the elements id + */ + "body-text"?: string; + /** + * How to wrap the text in the node. Can be 'none', 'wrap', or 'ellipsis'. + */ + "body-text-wrap"?: string; + /** + * The maximum width for wrapping text in the node. + */ + "body-text-max-width"?: string; + /** + * The opacity of the node’s body text, including its outline. + */ + "body-text-opacity"?: number; + /** + * The colour of the node’s body text background. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "body-text-background-color"?: string; + /** + * The size of the node’s body text. + */ + "body-text-font-size"?: string; + /** + * The colour of the node’s body text. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "body-text-color"?: string; + /** + * A CSS font weight to be applied to the node’s body text. + */ + "body-text-weight"?: string; + /** + * A CSS horizontal alignment to be applied to the node’s body text. + */ + "body-text-horizontal-align"?: string; + /** + * A CSS text decoration to be applied to the node’s body text. + */ + "body-text-decoration"?: string; + /** + * A CSS vertical alignment to be applied to the node’s body text. + */ + "body-text-vertical-align"?: string; + /** + * The width of the node’s body or the width of an edge’s line. + */ + width?: number; + /** + * The height of the node’s body + */ + height?: number; + /** + * The colour of the node’s body. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "background-color"?: string; + /** + * Blackens the node’s body for values from 0 to 1; whitens the node’s body for values from 0 to -1. + */ + "background-blacken"?: number; + /** + * The opacity level of the node’s background colour + */ + "background-opacity"?: number; + /** + * The size of the node’s border. + */ + "border-width"?: number; + /** + * The style of the node’s border + */ + "border-style"?: "solid" | "dotted" | "dashed" | "double"; + /** + * The colour of the node’s border. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "border-color"?: string; + /** + * The opacity of the node’s border + */ + "border-opacity"?: number; + /** + * The amount of padding around all sides of the node. + */ + padding?: number; + /** + * The horizontal alignment of a node’s label + */ + "text-halign"?: "left" | "center" | "right"; + /** + * The vertical alignment of a node’s label + */ + "text-valign"?: "top" | "center" | "bottom"; + /** + * Whether to use the ghost effect, a semitransparent duplicate of the element drawn at an offset. + */ + ghost?: "yes" | "no"; + /** + * The colour of the indicator shown when the background is grabbed by the user. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "active-bg-color"?: string; + /** + * The opacity of the active background indicator. Selector needs to be *core*. + */ + "active-bg-opacity"?: string; + /** + * The opacity of the active background indicator. Selector needs to be *core*. + */ + "active-bg-size"?: string; + /** + * The background colour of the selection box used for drag selection. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "selection-box-color"?: string; + /** + * The size of the border on the selection box. Selector needs to be *core* + */ + "selection-box-border-width"?: number; + /** + * The opacity of the selection box. Selector needs to be *core* + */ + "selection-box-opacity"?: number; + /** + * The colour of the area outside the viewport texture when initOptions.textureOnViewport === true. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "outside-texture-bg-color"?: string; + /** + * The opacity of the area outside the viewport texture. Selector needs to be *core* + */ + "outside-texture-bg-opacity"?: number; + [k: string]: unknown; +}; + /** * Components are reusable building blocks for depicting capabilities defined within models. Learn more at https://docs.meshery.io/concepts/components */ @@ -34,16 +215,23 @@ export interface HttpsSchemasMesheryIoComponentJson { */ format?: "JSON" | "CUE"; model: HttpsSchemasMesheryIoModelJson; + styles?: ComponentStyles; + /** + * Meshery manages components in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. ComponentDefinitions may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; + /** + * Status of component, including: + * - duplicate: this component is a duplicate of another. The component that is to be the canonical reference and that is duplicated by other components should not be assigned the 'duplicate' status. + * - maintenance: model is unavailable for a period of time. + * - enabled: model is available for use for all users of this Meshery Server. + * - ignored: model is unavailable for use for all users of this Meshery Server. + */ + status?: "ignored" | "enabled" | "duplicate"; /** * Metadata contains additional information associated with the component. */ metadata?: { - /** - * Meshery manages components in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. ComponentDefinitions may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. - */ - capabilities?: { - [k: string]: unknown; - }; /** * Genealogy represents the various representational states of the component. */ @@ -52,62 +240,17 @@ export interface HttpsSchemasMesheryIoComponentJson { * Identifies whether the component is semantically meaningful or not; identifies whether the component should be treated as deployable entity or is for purposes of logical representation. */ isAnnotation?: boolean; - /** - * Shape of the component used for UI representation. - */ - shape: - | "ellipse" - | "triangle" - | "round-triangle" - | "rectangle" - | "round-rectangle" - | "bottom-round-rectangle" - | "cut-rectangle" - | "barrel" - | "rhomboid" - | "diamond" - | "round-diamond" - | "pentagon" - | "round-pentagon" - | "hexagon" - | "round-hexagon" - | "concave-hexagon" - | "heptagon" - | "round-heptagon" - | "octagon" - | "round-octagon" - | "star" - | "tag" - | "round-tag" - | "vee"; - /** - * Primary color of the component used for UI representation. - */ - primaryColor: string; - /** - * Secondary color of the component used for UI representation. - */ - secondaryColor?: string; - /** - * White SVG of the component used for UI representation on dark background. - */ - svgWhite: string; - /** - * Colored SVG of the component used for UI representation on light background. - */ - svgColor: string; - /** - * Complete SVG of the component used for UI representation, often inclusive of background. - */ - svgComplete?: string; /** * 'published' controls whether the component should be registered in Meshery Registry. When the same 'published' property in Models, is set to 'false', the Model property takes precedence with all Entities in the Model not being registered. */ published?: boolean; [k: string]: unknown; }; + /** + * The configuration of the component. The configuration is based on the schema defined within the component definition(component.schema). + */ configuration?: { - [k: string]: string; + [k: string]: unknown; }; /** * Component and it's properties. @@ -175,6 +318,10 @@ export interface HttpsSchemasMesheryIoModelJson { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ @@ -212,3 +359,116 @@ export interface HttpsSchemasMesheryIoModelJson { [k: string]: unknown; }; } +/** + * Meshery manages entities in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. Entities may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. + */ +export interface HttpsSchemasMesheryIoCapabilityJson { + /** + * Specifies the version of the schema to which the capability definition conforms. + */ + schemaVersion: string; + /** + * Version of the capability definition. + */ + version: string; + /** + * Name of the capability in human-readible format. + */ + displayName: string; + /** + * A written representation of the purpose and characteristics of the capability. + */ + description?: string; + /** + * Top-level categorization of the capability + */ + kind: ("action" | "mutate" | "view" | "interaction") & string; + /** + * Classification of capabilities. Used to group capabilities similar in nature. + */ + type: string; + /** + * Most granular unit of capability classification. The combination of Kind, Type and SubType together uniquely identify a Capability. + */ + subType?: string; + /** + * Key that backs the capability. + */ + key?: string; + entityState?: InputString; + /** + * Status of the capability + */ + status: "enabled" | "disabled"; + /** + * Metadata contains additional information associated with the capability. Extension point. + */ + metadata?: { + [k: string]: unknown; + }; +} +/** + * Common styles for all entities + */ +export interface Styles { + /** + * Primary color of the component used for UI representation. + */ + primaryColor: string; + /** + * Secondary color of the entity used for UI representation. + */ + secondaryColor?: string; + /** + * White SVG of the entity used for UI representation on dark background. + */ + svgWhite: string; + /** + * Colored SVG of the entity used for UI representation on light background. + */ + svgColor: string; + /** + * Complete SVG of the entity used for UI representation, often inclusive of background. + */ + svgComplete?: string; + /** + * The color of the element's label. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + color?: string; + /** + * The opacity of the label text, including its outline. + */ + "text-opacity"?: number; + /** + * A comma-separated list of font names to use on the label text. + */ + "font-family"?: string; + /** + * The size of the label text. + */ + "font-size"?: string; + /** + * A CSS font style to be applied to the label text. + */ + "font-style"?: string; + /** + * A CSS font weight to be applied to the label text. + */ + "font-weight"?: string; + /** + * A transformation to apply to the label text + */ + "text-transform"?: "none" | "uppercase" | "lowercase"; + /** + * The opacity of the element. See https://js.cytoscape.org/#style/visibility + */ + opacity?: number; + /** + * An integer value that affects the relative draw order of elements. In general, an element with a higher z-index will be drawn on top of an element with a lower z-index. Note that edges are under nodes despite z-index. + */ + "z-index"?: number; + /** + * The text to display for an element’s label. Can give a path, e.g. data(id) will label with the elements id + */ + label?: string; +} diff --git a/typescript/constructs/v1beta1/designs.d.ts b/typescript/constructs/v1beta1/designs.d.ts index bb33679eb7..e71db09942 100644 --- a/typescript/constructs/v1beta1/designs.d.ts +++ b/typescript/constructs/v1beta1/designs.d.ts @@ -5,6 +5,276 @@ * and run json-schema-to-typescript to regenerate this file. */ +/** + * State of the entity in which the capability is applicable. + */ +export type InputString = ("declaration" | "instance")[]; +/** + * Visualization styles for a component + */ +export type ComponentStyles = Styles & { + /** + * The shape of the node’s body. Note that each shape fits within the specified width and height, and so you may have to adjust width and height if you desire an equilateral shape (i.e. width !== height for several equilateral shapes) + */ + shape: + | "ellipse" + | "triangle" + | "round-triangle" + | "rectangle" + | "round-rectangle" + | "bottom-round-rectangle" + | "cut-rectangle" + | "barrel" + | "rhomboid" + | "diamond" + | "round-diamond" + | "pentagon" + | "round-pentagon" + | "hexagon" + | "round-hexagon" + | "concave-hexagon" + | "heptagon" + | "round-heptagon" + | "octagon" + | "round-octagon" + | "star" + | "tag" + | "round-tag" + | "vee" + | "polygon"; + /** + * The position of the node. If the position is set, the node is drawn at that position in the given dimensions. If the position is not set, the node is drawn at a random position. + */ + position?: { + /** + * The x-coordinate of the node. + */ + x: number; + /** + * The y-coordinate of the node. + */ + y: number; + }; + /** + * The text to display for an element’s body. Can give a path, e.g. data(id) will label with the elements id + */ + "body-text"?: string; + /** + * How to wrap the text in the node. Can be 'none', 'wrap', or 'ellipsis'. + */ + "body-text-wrap"?: string; + /** + * The maximum width for wrapping text in the node. + */ + "body-text-max-width"?: string; + /** + * The opacity of the node’s body text, including its outline. + */ + "body-text-opacity"?: number; + /** + * The colour of the node’s body text background. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "body-text-background-color"?: string; + /** + * The size of the node’s body text. + */ + "body-text-font-size"?: string; + /** + * The colour of the node’s body text. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "body-text-color"?: string; + /** + * A CSS font weight to be applied to the node’s body text. + */ + "body-text-weight"?: string; + /** + * A CSS horizontal alignment to be applied to the node’s body text. + */ + "body-text-horizontal-align"?: string; + /** + * A CSS text decoration to be applied to the node’s body text. + */ + "body-text-decoration"?: string; + /** + * A CSS vertical alignment to be applied to the node’s body text. + */ + "body-text-vertical-align"?: string; + /** + * The width of the node’s body or the width of an edge’s line. + */ + width?: number; + /** + * The height of the node’s body + */ + height?: number; + /** + * The colour of the node’s body. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "background-color"?: string; + /** + * Blackens the node’s body for values from 0 to 1; whitens the node’s body for values from 0 to -1. + */ + "background-blacken"?: number; + /** + * The opacity level of the node’s background colour + */ + "background-opacity"?: number; + /** + * The size of the node’s border. + */ + "border-width"?: number; + /** + * The style of the node’s border + */ + "border-style"?: "solid" | "dotted" | "dashed" | "double"; + /** + * The colour of the node’s border. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "border-color"?: string; + /** + * The opacity of the node’s border + */ + "border-opacity"?: number; + /** + * The amount of padding around all sides of the node. + */ + padding?: number; + /** + * The horizontal alignment of a node’s label + */ + "text-halign"?: "left" | "center" | "right"; + /** + * The vertical alignment of a node’s label + */ + "text-valign"?: "top" | "center" | "bottom"; + /** + * Whether to use the ghost effect, a semitransparent duplicate of the element drawn at an offset. + */ + ghost?: "yes" | "no"; + /** + * The colour of the indicator shown when the background is grabbed by the user. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "active-bg-color"?: string; + /** + * The opacity of the active background indicator. Selector needs to be *core*. + */ + "active-bg-opacity"?: string; + /** + * The opacity of the active background indicator. Selector needs to be *core*. + */ + "active-bg-size"?: string; + /** + * The background colour of the selection box used for drag selection. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "selection-box-color"?: string; + /** + * The size of the border on the selection box. Selector needs to be *core* + */ + "selection-box-border-width"?: number; + /** + * The opacity of the selection box. Selector needs to be *core* + */ + "selection-box-opacity"?: number; + /** + * The colour of the area outside the viewport texture when initOptions.textureOnViewport === true. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "outside-texture-bg-color"?: string; + /** + * The opacity of the area outside the viewport texture. Selector needs to be *core* + */ + "outside-texture-bg-opacity"?: number; + [k: string]: unknown; +}; +/** + * Visualization styles for a relationship + */ +export type EdgeStyles = Styles & { + /** + * The animation to use for the edge. Can be like 'marching-ants' , 'blink' , 'moving-gradient',etc . + */ + "edge-animation"?: string; + /** + * The curving method used to separate two or more edges between two nodes; may be haystack (very fast, bundled straight edges for which loops and compounds are unsupported), straight (straight edges with all arrows supported), bezier (bundled curved edges), unbundled-bezier (curved edges for use with manual control points), segments (a series of straight lines), taxi (right-angled lines, hierarchically bundled). Note that haystack edges work best with ellipse, rectangle, or similar nodes. Smaller node shapes, like triangle, will not be as aesthetically pleasing. Also note that edge endpoint arrows are unsupported for haystack edges. + */ + "curve-style"?: "straight" | "haystack" | "bezier" | "unbundled-bezier" | "segments" | "taxi"; + /** + * The colour of the edge’s line. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "line-color"?: string; + /** + * The style of the edge’s line. + */ + "line-style"?: "solid" | "dotted" | "dashed"; + /** + * The cap style of the edge’s line; may be butt (default), round, or square. The cap may or may not be visible, depending on the shape of the node and the relative size of the node and edge. Caps other than butt extend beyond the specified endpoint of the edge. + */ + "line-cap"?: "butt" | "round" | "square"; + /** + * The opacity of the edge’s line and arrow. Useful if you wish to have a separate opacity for the edge label versus the edge line. Note that the opacity value of the edge element affects the effective opacity of its line and label subcomponents. + */ + "line-opacity"?: number; + /** + * The colour of the edge’s source arrow. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "target-arrow-color"?: string; + /** + * The shape of the edge’s source arrow + */ + "target-arrow-shape"?: + | "triangle" + | "triangle-tee" + | "circle-triangle" + | "triangle-cross" + | "triangle-backcurve" + | "vee" + | "tee" + | "square" + | "circle" + | "diamond" + | "chevron" + | "none"; + /** + * The fill state of the edge’s source arrow + */ + "target-arrow-fill"?: "filled" | "hollow"; + /** + * The colour of the edge’s source arrow. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "mid-target-arrow-color"?: string; + /** + * The shape of the edge’s source arrow + */ + "mid-target-arrow-shape"?: + | "triangle" + | "triangle-tee" + | "circle-triangle" + | "triangle-cross" + | "triangle-backcurve" + | "vee" + | "tee" + | "square" + | "circle" + | "diamond" + | "chevron" + | "none"; + /** + * The fill state of the edge’s source arrow + */ + "mid-target-arrow-fill"?: "filled" | "hollow"; + /** + * Scaling for the arrow size. + */ + "arrow-scale"?: number; + /** + * The text to display for an edge’s source label. Can give a path, e.g. data(id) will label with the elements id + */ + "source-label"?: string; + /** + * The text to display for an edge’s target label. Can give a path, e.g. data(id) will label with the elements id + */ + "target-label"?: string; + [k: string]: unknown; +}; export type From = { kind?: string; model?: HttpsSchemasMesheryIoModelJson2; @@ -68,6 +338,10 @@ export type To = { * Designs are your primary tool for collaborative authorship of your infrastructure, workflow, and processes. */ export interface DesignSchema { + /** + * A Universally Unique Identifier used to uniquely identify entites in Meshery. The UUID core defintion is used across different schemas. + */ + id?: string; /** * Name of the design; a descriptive, but concise title for the design document. */ @@ -105,7 +379,7 @@ export interface DesignSchema { */ export interface HttpsSchemasMesheryIoComponentJson { /** - * Uniquely identifies the entity (i.e. component) as defined in a declaration (i.e. design). + * A Universally Unique Identifier used to uniquely identify entites in Meshery. The UUID core defintion is used across different schemas. */ id?: string; /** @@ -129,16 +403,23 @@ export interface HttpsSchemasMesheryIoComponentJson { */ format?: "JSON" | "CUE"; model: HttpsSchemasMesheryIoModelJson; + styles?: ComponentStyles; + /** + * Meshery manages components in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. ComponentDefinitions may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; + /** + * Status of component, including: + * - duplicate: this component is a duplicate of another. The component that is to be the canonical reference and that is duplicated by other components should not be assigned the 'duplicate' status. + * - maintenance: model is unavailable for a period of time. + * - enabled: model is available for use for all users of this Meshery Server. + * - ignored: model is unavailable for use for all users of this Meshery Server. + */ + status?: "ignored" | "enabled" | "duplicate"; /** * Metadata contains additional information associated with the component. */ metadata?: { - /** - * Meshery manages components in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. ComponentDefinitions may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. - */ - capabilities?: { - [k: string]: unknown; - }; /** * Genealogy represents the various representational states of the component. */ @@ -147,62 +428,17 @@ export interface HttpsSchemasMesheryIoComponentJson { * Identifies whether the component is semantically meaningful or not; identifies whether the component should be treated as deployable entity or is for purposes of logical representation. */ isAnnotation?: boolean; - /** - * Shape of the component used for UI representation. - */ - shape: - | "ellipse" - | "triangle" - | "round-triangle" - | "rectangle" - | "round-rectangle" - | "bottom-round-rectangle" - | "cut-rectangle" - | "barrel" - | "rhomboid" - | "diamond" - | "round-diamond" - | "pentagon" - | "round-pentagon" - | "hexagon" - | "round-hexagon" - | "concave-hexagon" - | "heptagon" - | "round-heptagon" - | "octagon" - | "round-octagon" - | "star" - | "tag" - | "round-tag" - | "vee"; - /** - * Primary color of the component used for UI representation. - */ - primaryColor: string; - /** - * Secondary color of the component used for UI representation. - */ - secondaryColor?: string; - /** - * White SVG of the component used for UI representation on dark background. - */ - svgWhite: string; - /** - * Colored SVG of the component used for UI representation on light background. - */ - svgColor: string; - /** - * Complete SVG of the component used for UI representation, often inclusive of background. - */ - svgComplete?: string; /** * 'published' controls whether the component should be registered in Meshery Registry. When the same 'published' property in Models, is set to 'false', the Model property takes precedence with all Entities in the Model not being registered. */ published?: boolean; [k: string]: unknown; }; + /** + * The configuration of the component. The configuration is based on the schema defined within the component definition(component.schema). + */ configuration?: { - [k: string]: string; + [k: string]: unknown; }; /** * Component and it's properties. @@ -270,6 +506,10 @@ export interface HttpsSchemasMesheryIoModelJson { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ @@ -307,6 +547,119 @@ export interface HttpsSchemasMesheryIoModelJson { [k: string]: unknown; }; } +/** + * Meshery manages entities in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. Entities may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. + */ +export interface HttpsSchemasMesheryIoCapabilityJson { + /** + * Specifies the version of the schema to which the capability definition conforms. + */ + schemaVersion: string; + /** + * Version of the capability definition. + */ + version: string; + /** + * Name of the capability in human-readible format. + */ + displayName: string; + /** + * A written representation of the purpose and characteristics of the capability. + */ + description?: string; + /** + * Top-level categorization of the capability + */ + kind: ("action" | "mutate" | "view" | "interaction") & string; + /** + * Classification of capabilities. Used to group capabilities similar in nature. + */ + type: string; + /** + * Most granular unit of capability classification. The combination of Kind, Type and SubType together uniquely identify a Capability. + */ + subType?: string; + /** + * Key that backs the capability. + */ + key?: string; + entityState?: InputString; + /** + * Status of the capability + */ + status: "enabled" | "disabled"; + /** + * Metadata contains additional information associated with the capability. Extension point. + */ + metadata?: { + [k: string]: unknown; + }; +} +/** + * Common styles for all entities + */ +export interface Styles { + /** + * Primary color of the component used for UI representation. + */ + primaryColor: string; + /** + * Secondary color of the entity used for UI representation. + */ + secondaryColor?: string; + /** + * White SVG of the entity used for UI representation on dark background. + */ + svgWhite: string; + /** + * Colored SVG of the entity used for UI representation on light background. + */ + svgColor: string; + /** + * Complete SVG of the entity used for UI representation, often inclusive of background. + */ + svgComplete?: string; + /** + * The color of the element's label. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + color?: string; + /** + * The opacity of the label text, including its outline. + */ + "text-opacity"?: number; + /** + * A comma-separated list of font names to use on the label text. + */ + "font-family"?: string; + /** + * The size of the label text. + */ + "font-size"?: string; + /** + * A CSS font style to be applied to the label text. + */ + "font-style"?: string; + /** + * A CSS font weight to be applied to the label text. + */ + "font-weight"?: string; + /** + * A transformation to apply to the label text + */ + "text-transform"?: "none" | "uppercase" | "lowercase"; + /** + * The opacity of the element. See https://js.cytoscape.org/#style/visibility + */ + opacity?: number; + /** + * An integer value that affects the relative draw order of elements. In general, an element with a higher z-index will be drawn on top of an element with a lower z-index. Note that edges are under nodes despite z-index. + */ + "z-index"?: number; + /** + * The text to display for an element’s label. Can give a path, e.g. data(id) will label with the elements id + */ + label?: string; +} /** * Relationships define the nature of interaction between interconnected components in Meshery. The combination of relationship properties kind, type, and subtype characterize various genealogical relations among and between components. Relationships have selectors, selector sets, metadata, and optional parameters. Learn more at https://docs.meshery.io/concepts/logical/relationships. */ @@ -336,14 +689,19 @@ export interface HttpsSchemasMesheryIoRelationshipJson { * Optional. Assigns the policy to be used for the evaluation of the relationship. Deprecation Notice: In the future, this property is either to be removed or to it is to be an array of optional policy $refs. */ evaluationQuery?: string; + /** + * Capabilities associated with the relationship. + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Metadata contains additional information associated with the Relationship. */ metadata?: { /** - * Characteristization of the meaning of the relationship and its relevance to both Meshery and entities under management. + * Characterization of the meaning of the relationship and its relevance to both Meshery and entities under management. */ description?: string; + styles?: EdgeStyles | Styles1; [k: string]: unknown; }; /** @@ -415,6 +773,10 @@ export interface HttpsSchemasMesheryIoModelJson1 { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ @@ -452,6 +814,71 @@ export interface HttpsSchemasMesheryIoModelJson1 { [k: string]: unknown; }; } +/** + * Common styles for all entities + */ +export interface Styles1 { + /** + * Primary color of the component used for UI representation. + */ + primaryColor: string; + /** + * Secondary color of the entity used for UI representation. + */ + secondaryColor?: string; + /** + * White SVG of the entity used for UI representation on dark background. + */ + svgWhite: string; + /** + * Colored SVG of the entity used for UI representation on light background. + */ + svgColor: string; + /** + * Complete SVG of the entity used for UI representation, often inclusive of background. + */ + svgComplete?: string; + /** + * The color of the element's label. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + color?: string; + /** + * The opacity of the label text, including its outline. + */ + "text-opacity"?: number; + /** + * A comma-separated list of font names to use on the label text. + */ + "font-family"?: string; + /** + * The size of the label text. + */ + "font-size"?: string; + /** + * A CSS font style to be applied to the label text. + */ + "font-style"?: string; + /** + * A CSS font weight to be applied to the label text. + */ + "font-weight"?: string; + /** + * A transformation to apply to the label text + */ + "text-transform"?: "none" | "uppercase" | "lowercase"; + /** + * The opacity of the element. See https://js.cytoscape.org/#style/visibility + */ + opacity?: number; + /** + * An integer value that affects the relative draw order of elements. In general, an element with a higher z-index will be drawn on top of an element with a lower z-index. Note that edges are under nodes despite z-index. + */ + "z-index"?: number; + /** + * The text to display for an element’s label. Can give a path, e.g. data(id) will label with the elements id + */ + label?: string; +} /** * Name of the model implicated by this selector. Learn more at https://docs.meshery.io/concepts/models */ @@ -499,6 +926,10 @@ export interface HttpsSchemasMesheryIoModelJson2 { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ @@ -583,6 +1014,10 @@ export interface HttpsSchemasMesheryIoModelJson3 { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ diff --git a/typescript/constructs/v1beta1/model.d.ts b/typescript/constructs/v1beta1/model.d.ts index 700e9d284a..ee18091d80 100644 --- a/typescript/constructs/v1beta1/model.d.ts +++ b/typescript/constructs/v1beta1/model.d.ts @@ -5,6 +5,11 @@ * and run json-schema-to-typescript to regenerate this file. */ +/** + * State of the entity in which the capability is applicable. + */ +export type InputString = ("declaration" | "instance")[]; + /** * Meshery Models serve as a portable unit of packaging to define managed entities, their relationships, and capabilities. */ @@ -52,6 +57,10 @@ export interface HttpsSchemasMesheryIoModelJson { * Metadata containing additional information associated with the model. */ metadata?: { + /** + * Capabilities associated with the model + */ + capabilities?: HttpsSchemasMesheryIoCapabilityJson[]; /** * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. */ @@ -89,3 +98,51 @@ export interface HttpsSchemasMesheryIoModelJson { [k: string]: unknown; }; } +/** + * Meshery manages entities in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. Entities may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. + */ +export interface HttpsSchemasMesheryIoCapabilityJson { + /** + * Specifies the version of the schema to which the capability definition conforms. + */ + schemaVersion: string; + /** + * Version of the capability definition. + */ + version: string; + /** + * Name of the capability in human-readible format. + */ + displayName: string; + /** + * A written representation of the purpose and characteristics of the capability. + */ + description?: string; + /** + * Top-level categorization of the capability + */ + kind: ("action" | "mutate" | "view" | "interaction") & string; + /** + * Classification of capabilities. Used to group capabilities similar in nature. + */ + type: string; + /** + * Most granular unit of capability classification. The combination of Kind, Type and SubType together uniquely identify a Capability. + */ + subType?: string; + /** + * Key that backs the capability. + */ + key?: string; + entityState?: InputString; + /** + * Status of the capability + */ + status: "enabled" | "disabled"; + /** + * Metadata contains additional information associated with the capability. Extension point. + */ + metadata?: { + [k: string]: unknown; + }; +} diff --git a/typescript/constructs/v1beta2/component.d.ts b/typescript/constructs/v1beta2/component.d.ts new file mode 100644 index 0000000000..7793319af3 --- /dev/null +++ b/typescript/constructs/v1beta2/component.d.ts @@ -0,0 +1,405 @@ +/* eslint-disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Components are reusable building blocks for depicting capabilities defined within models. Learn more at https://docs.meshery.io/concepts/components + */ +export interface HttpsSchemasMesheryIoComponentJson { + /** + * Uniquely identifies the entity (i.e. component) as defined in a declaration (i.e. design). + */ + id?: string; + /** + * Specifies the version of the schema to which the component definition conforms. + */ + schemaVersion: string; + /** + * Version of the component definition. + */ + version: string; + /** + * Name of the component in human-readible format. + */ + displayName?: string; + /** + * A written representation of the purpose and characteristics of the component. + */ + description?: string; + /** + * Format specifies the format used in the `component.schema` field. JSON is the default. + */ + format?: "JSON" | "CUE"; + model: HttpsSchemasMesheryIoModelJson; + /** + * Metadata contains additional information associated with the component. + */ + metadata?: { + /** + * Meshery manages components in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. ComponentDefinitions may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management. + */ + capabilities?: { + designer?: { + capabilities?: { + config?: boolean; + label?: boolean; + policy?: boolean; + relationships?: boolean; + "json-schema"?: boolean; + permissions?: boolean; + workflow?: boolean; + gitops?: boolean; + history?: boolean; + [k: string]: unknown; + }; + state?: { + fsm?: { + [k: string]: unknown; + }; + [k: string]: unknown; + }; + "pass-events-to"?: "parent"; + supportsCompoundDragAndDrop?: boolean; + edit?: { + config?: boolean; + style?: boolean; + text?: boolean; + copy?: boolean; + delete?: boolean; + duplicate?: boolean; + "reset-styles"?: boolean; + resolve?: boolean; + lock?: boolean; + shape?: { + "convert-shape"?: boolean; + [k: string]: unknown; + }; + [k: string]: unknown; + }; + label?: { + edit?: boolean; + "sync-with-config-property"?: string; + show?: boolean; + [k: string]: unknown; + }; + [k: string]: unknown; + }; + visualizer?: { + actions?: { + "perf-test"?: boolean; + terminal?: boolean; + "log-streamer"?: boolean; + [k: string]: unknown; + }; + [k: string]: unknown; + }; + [k: string]: unknown; + }; + /** + * Contains properties related to visual representation of the component. + */ + style?: { + /** + * Specify the styles + */ + style?: { + /** + * Primary color of the component used for UI representation. + */ + primaryColor?: string; + /** + * Secondary color of the component used for UI representation. + */ + secondaryColor?: string; + /** + * White SVG of the component used for UI representation on dark background. + */ + svgWhite?: string; + /** + * Colored SVG of the component used for UI representation on light background. + */ + svgColor?: string; + /** + * Complete SVG of the component used for UI representation, often inclusive of background. + */ + svgComplete?: string; + /** + * The width of the node’s body or the width of an edge’s line. + */ + width?: number; + /** + * The height of the node’s body + */ + height?: number; + /** + * The shape of the node’s body. Note that each shape fits within the specified width and height, and so you may have to adjust width and height if you desire an equilateral shape (i.e. width !== height for several equilateral shapes) + */ + shape?: + | "ellipse" + | "triangle" + | "round-triangle" + | "rectangle" + | "round-rectangle" + | "bottom-round-rectangle" + | "cut-rectangle" + | "barrel" + | "rhomboid" + | "diamond" + | "round-diamond" + | "pentagon" + | "round-pentagon" + | "hexagon" + | "round-hexagon" + | "concave-hexagon" + | "heptagon" + | "round-heptagon" + | "octagon" + | "round-octagon" + | "star" + | "tag" + | "round-tag" + | "vee" + | "polygon"; + /** + * The colour of the node’s body. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "background-color"?: string; + /** + * Blackens the node’s body for values from 0 to 1; whitens the node’s body for values from 0 to -1. + */ + "background-blacken"?: number; + /** + * The opacity level of the node’s background colour + */ + "background-opacity"?: number; + /** + * The size of the node’s border. + */ + "border-width"?: number; + /** + * The style of the node’s border + */ + "border-style"?: "solid" | "dotted" | "dashed" | "double"; + /** + * The colour of the node’s border. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "border-color"?: string; + /** + * The opacity of the node’s border + */ + "border-opacity"?: number; + /** + * The amount of padding around all sides of the node. + */ + padding?: number; + /** + * The opacity of the element. See https://js.cytoscape.org/#style/visibility + */ + opacity?: number; + /** + * An integer value that affects the relative draw order of elements. In general, an element with a higher z-index will be drawn on top of an element with a lower z-index. Note that edges are under nodes despite z-index. + */ + "z-index"?: number; + /** + * The text to display for an element’s label. Can give a path, e.g. data(id) will label with the elements id + */ + label?: string; + /** + * The color of the element's label. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + color?: string; + /** + * The opacity of the label text, including its outline. + */ + "text-opacity"?: number; + /** + * A comma-separated list of font names to use on the label text. + */ + "font-family"?: string; + /** + * The size of the label text. + */ + "font-size"?: string; + /** + * A CSS font style to be applied to the label text. + */ + "font-style"?: string; + /** + * A CSS font weight to be applied to the label text. + */ + "font-weight"?: string; + /** + * A transformation to apply to the label text + */ + "text-transform"?: "none" | "uppercase" | "lowercase"; + /** + * The horizontal alignment of a node’s label + */ + "text-halign"?: "left" | "center" | "right"; + /** + * The vertical alignment of a node’s label + */ + "text-valign"?: "top" | "center" | "bottom"; + /** + * Whether to use the ghost effect, a semitransparent duplicate of the element drawn at an offset. + */ + ghost?: "yes" | "no"; + /** + * The colour of the indicator shown when the background is grabbed by the user. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "active-bg-color"?: string; + /** + * The opacity of the active background indicator. Selector needs to be *core*. + */ + "active-bg-opacity"?: string; + /** + * The opacity of the active background indicator. Selector needs to be *core*. + */ + "active-bg-size"?: string; + /** + * The background colour of the selection box used for drag selection. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "selection-box-color"?: string; + /** + * The size of the border on the selection box. Selector needs to be *core* + */ + "selection-box-border-width"?: number; + /** + * The opacity of the selection box. Selector needs to be *core* + */ + "selection-box-opacity"?: number; + /** + * The colour of the area outside the viewport texture when initOptions.textureOnViewport === true. Selector needs to be *core*. Colours may be specified by name (e.g. red), hex (e.g. #ff0000 or #f00), RGB (e.g. rgb(255, 0, 0)), or HSL (e.g. hsl(0, 100%, 50%)). + */ + "outside-texture-bg-color"?: string; + /** + * The opacity of the area outside the viewport texture. Selector needs to be *core* + */ + "outside-texture-bg-opacity"?: number; + [k: string]: unknown; + }; + [k: string]: unknown; + }; + /** + * Genealogy represents the various representational states of the component. + */ + genealogy?: string; + /** + * Identifies whether the component is semantically meaningful or not; identifies whether the component should be treated as deployable entity or is for purposes of logical representation. + */ + isAnnotation?: boolean; + /** + * 'published' controls whether the component should be registered in Meshery Registry. When the same 'published' property in Models, is set to 'false', the Model property takes precedence with all Entities in the Model not being registered. + */ + published?: boolean; + [k: string]: unknown; + }; + configuration?: { + [k: string]: string; + }; + /** + * Component and it's properties. + */ + component: { + /** + * Version of the component produced by the registrant. Example: APIVersion of a Kubernetes Pod. + */ + version: string; + /** + * The unique identifier (name) assigned by the registrant to this component. Example: A Kubernetes Pod is of kind 'Pod'. + */ + kind: string; + /** + * JSON schema of the object as defined by the registrant. + */ + schema: string; + [k: string]: unknown; + }; +} +/** + * Reference to the specific registered model to which the component belongs and from which model version, category, and other properties may be referenced. Learn more at https://docs.meshery.io/concepts/models + */ +export interface HttpsSchemasMesheryIoModelJson { + /** + * Specifies the version of the schema used for the definition. + */ + schemaVersion?: string; + /** + * Version of the model definition. + */ + version: string; + /** + * The unique name for the model within the scope of a registrant. + */ + name: string; + /** + * Human-readable name for the model. + */ + displayName?: string; + /** + * Description of the model. + */ + description?: string; + /** + * Status of model, including: + * - duplicate: this component is a duplicate of another. The component that is to be the canonical reference and that is duplicated by other components should not be assigned the 'duplicate' status. + * - maintenance: model is unavailable for a period of time. + * - enabled: model is available for use for all users of this Meshery Server. + * - ignored: model is unavailable for use for all users of this Meshery Server. + */ + status?: "ignored" | "enabled" | "duplicate"; + registrant: { + [k: string]: unknown; + }; + /** + * Category of the model. + */ + category: string; + /** + * Sub-category of the model. + */ + subCategory?: string; + /** + * Metadata containing additional information associated with the model. + */ + metadata?: { + /** + * Indicates whether the model and its entities should be treated as deployable entities or as logical representations. + */ + isAnnotation?: boolean; + /** + * Primary color associated with the model. + */ + primaryColor?: string; + /** + * Secondary color associated with the model. + */ + secondaryColor?: string; + /** + * SVG representation of the model in white color. + */ + svgWhite?: string; + /** + * SVG representation of the model in colored format. + */ + svgColor?: string; + /** + * SVG representation of the complete model. + */ + svgComplete?: string; + [k: string]: unknown; + }; + /** + * Registrant-defined data associated with the model. Properties pertain to the software being managed (e.g. Kubernetes v1.31) + */ + model?: { + /** + * Version of the model as defined by the registrant. + */ + version: string; + [k: string]: unknown; + }; +} diff --git a/typescript/index.ts b/typescript/index.ts index 0ec2d29c71..f0176efa8f 100644 --- a/typescript/index.ts +++ b/typescript/index.ts @@ -6,6 +6,9 @@ import { CatalogData as CatalogDataT, CaveatsAndConsiderations, } from "./constructs/v1alpha1/catalog_data"; +import { +HttpsSchemasMesheryIoCapabilityJson +} from "./constructs/v1alpha1/capability" // v1alpha2 import { DesignSchema } from "./constructs/v1alpha2/design"; @@ -18,22 +21,25 @@ import { } from "./constructs/v1alpha3/selectors" // v1beta1 -import { HttpsSchemasMesheryIoComponentJson } from "./constructs/v1beta1/component"; +import { HttpsSchemasMesheryIoComponentJson,Styles} from "./constructs/v1beta1/component"; import { HttpsSchemasMesheryIoModelJson } from "./constructs/v1beta1/model"; import {DesignSchema as V1beta1DesignSchema} from "./constructs/v1beta1/designs" -// core -import {CoreJson} from "./constructs/core" //OpenAPI import {components,paths,webhooks} from "./openapi" -export type Core = CoreJson; +import coreJson from "../schemas/constructs/core.json" + +export namespace core { + export type EntityStyles = Styles; +} // Contructs export namespace v1alpha1 { export type CatalogData = CatalogDataT; export type CatalogCaveatsAndConsiderations = CaveatsAndConsiderations; + export type Capability = HttpsSchemasMesheryIoCapabilityJson; } export namespace v1alpha2 {