@meshery/schemas 1.3.59 → 1.3.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/dist/cloudApi.d.mts +19652 -6718
- package/dist/cloudApi.d.ts +19652 -6718
- package/dist/cloudApi.js +1 -1
- package/dist/cloudApi.mjs +1 -1
- package/dist/constructs/v1beta1/feature/Feature.d.ts +10 -10
- package/dist/constructs/v1beta1/feature/FeatureSchema.js +1 -1
- package/dist/constructs/v1beta1/feature/FeatureSchema.mjs +1 -1
- package/dist/constructs/v1beta1/organization_smtp/OrganizationSmtp.d.ts +2 -2
- package/dist/constructs/v1beta1/organization_smtp/OrganizationSmtpSchema.js +1 -1
- package/dist/constructs/v1beta1/organization_smtp/OrganizationSmtpSchema.mjs +1 -1
- package/dist/constructs/v1beta1/registry/Registry.d.ts +6 -6
- package/dist/constructs/v1beta1/registry/RegistrySchema.js +3 -3
- package/dist/constructs/v1beta1/registry/RegistrySchema.mjs +3 -3
- package/dist/constructs/v1beta3/blowhorn_binding/BlowhornBinding.d.ts +462 -0
- package/dist/constructs/v1beta3/blowhorn_binding/BlowhornBinding.js +1 -0
- package/dist/constructs/v1beta3/blowhorn_binding/BlowhornBinding.mjs +0 -0
- package/dist/constructs/v1beta3/blowhorn_binding/BlowhornBindingSchema.d.ts +2 -0
- package/dist/constructs/v1beta3/blowhorn_binding/BlowhornBindingSchema.js +23 -0
- package/dist/constructs/v1beta3/blowhorn_binding/BlowhornBindingSchema.mjs +23 -0
- package/dist/constructs/v1beta3/blowhorn_content/BlowhornContent.d.ts +719 -0
- package/dist/constructs/v1beta3/blowhorn_content/BlowhornContent.js +1 -0
- package/dist/constructs/v1beta3/blowhorn_content/BlowhornContent.mjs +0 -0
- package/dist/constructs/v1beta3/blowhorn_content/BlowhornContentSchema.d.ts +2 -0
- package/dist/constructs/v1beta3/blowhorn_content/BlowhornContentSchema.js +43 -0
- package/dist/constructs/v1beta3/blowhorn_content/BlowhornContentSchema.mjs +43 -0
- package/dist/constructs/v1beta3/blowhorn_destination/BlowhornDestination.d.ts +516 -0
- package/dist/constructs/v1beta3/blowhorn_destination/BlowhornDestination.js +1 -0
- package/dist/constructs/v1beta3/blowhorn_destination/BlowhornDestination.mjs +0 -0
- package/dist/constructs/v1beta3/blowhorn_destination/BlowhornDestinationSchema.d.ts +2 -0
- package/dist/constructs/v1beta3/blowhorn_destination/BlowhornDestinationSchema.js +23 -0
- package/dist/constructs/v1beta3/blowhorn_destination/BlowhornDestinationSchema.mjs +23 -0
- package/dist/constructs/v1beta3/blowhorn_health/BlowhornHealth.d.ts +131 -0
- package/dist/constructs/v1beta3/blowhorn_health/BlowhornHealth.js +1 -0
- package/dist/constructs/v1beta3/blowhorn_health/BlowhornHealth.mjs +0 -0
- package/dist/constructs/v1beta3/blowhorn_health/BlowhornHealthSchema.d.ts +2 -0
- package/dist/constructs/v1beta3/blowhorn_health/BlowhornHealthSchema.js +7 -0
- package/dist/constructs/v1beta3/blowhorn_health/BlowhornHealthSchema.mjs +7 -0
- package/dist/constructs/v1beta3/blowhorn_ledger/BlowhornLedger.d.ts +1546 -0
- package/dist/constructs/v1beta3/blowhorn_ledger/BlowhornLedger.js +1 -0
- package/dist/constructs/v1beta3/blowhorn_ledger/BlowhornLedger.mjs +0 -0
- package/dist/constructs/v1beta3/blowhorn_ledger/BlowhornLedgerSchema.d.ts +2 -0
- package/dist/constructs/v1beta3/blowhorn_ledger/BlowhornLedgerSchema.js +69 -0
- package/dist/constructs/v1beta3/blowhorn_ledger/BlowhornLedgerSchema.mjs +69 -0
- package/dist/constructs/v1beta3/blowhorn_profile/BlowhornProfile.d.ts +776 -0
- package/dist/constructs/v1beta3/blowhorn_profile/BlowhornProfile.js +1 -0
- package/dist/constructs/v1beta3/blowhorn_profile/BlowhornProfile.mjs +0 -0
- package/dist/constructs/v1beta3/blowhorn_profile/BlowhornProfileSchema.d.ts +2 -0
- package/dist/constructs/v1beta3/blowhorn_profile/BlowhornProfileSchema.js +45 -0
- package/dist/constructs/v1beta3/blowhorn_profile/BlowhornProfileSchema.mjs +45 -0
- package/dist/constructs/v1beta3/blowhorn_run/BlowhornRun.d.ts +784 -0
- package/dist/constructs/v1beta3/blowhorn_run/BlowhornRun.js +1 -0
- package/dist/constructs/v1beta3/blowhorn_run/BlowhornRun.mjs +0 -0
- package/dist/constructs/v1beta3/blowhorn_run/BlowhornRunSchema.d.ts +2 -0
- package/dist/constructs/v1beta3/blowhorn_run/BlowhornRunSchema.js +51 -0
- package/dist/constructs/v1beta3/blowhorn_run/BlowhornRunSchema.mjs +51 -0
- package/dist/constructs/v1beta3/connection/Connection.d.ts +14 -14
- package/dist/constructs/v1beta3/connection/ConnectionSchema.js +1 -1
- package/dist/constructs/v1beta3/connection/ConnectionSchema.mjs +1 -1
- package/dist/constructs/v1beta3/environment/Environment.d.ts +12 -12
- package/dist/constructs/v1beta3/environment/EnvironmentSchema.js +1 -1
- package/dist/constructs/v1beta3/environment/EnvironmentSchema.mjs +1 -1
- package/dist/constructs/v1beta3/job_lease/JobLease.d.ts +2570 -0
- package/dist/constructs/v1beta3/job_lease/JobLease.js +1 -0
- package/dist/constructs/v1beta3/job_lease/JobLease.mjs +0 -0
- package/dist/constructs/v1beta3/job_lease/JobLeaseSchema.d.ts +2 -0
- package/dist/constructs/v1beta3/job_lease/JobLeaseSchema.js +83 -0
- package/dist/constructs/v1beta3/job_lease/JobLeaseSchema.mjs +83 -0
- package/dist/constructs/v1beta3/token/Token.d.ts +4 -2
- package/dist/constructs/v1beta3/token/TokenSchema.js +1 -1
- package/dist/constructs/v1beta3/token/TokenSchema.mjs +1 -1
- package/dist/constructs/v1beta3/workspace/Workspace.d.ts +2 -2
- package/dist/constructs/v1beta3/workspace/WorkspaceSchema.js +1 -1
- package/dist/constructs/v1beta3/workspace/WorkspaceSchema.mjs +1 -1
- package/dist/index.d.mts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/mesheryApi.d.mts +24 -24
- package/dist/mesheryApi.d.ts +24 -24
- package/dist/mesheryApi.js +1 -1
- package/dist/mesheryApi.mjs +1 -1
- package/dist/permissions.d.mts +211 -1
- package/dist/permissions.d.ts +211 -1
- package/dist/permissions.js +1 -1
- package/dist/permissions.mjs +1 -1
- package/package.json +2 -1
|
@@ -136,7 +136,7 @@ export interface components {
|
|
|
136
136
|
*/
|
|
137
137
|
deletedAt?: string | null;
|
|
138
138
|
/**
|
|
139
|
-
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.
|
|
139
|
+
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization's Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.
|
|
140
140
|
*
|
|
141
141
|
* Absent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.
|
|
142
142
|
*
|
|
@@ -147,7 +147,7 @@ export interface components {
|
|
|
147
147
|
* The database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer's obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.
|
|
148
148
|
* @enum {string}
|
|
149
149
|
*/
|
|
150
|
-
purpose?: "user" | "administrative";
|
|
150
|
+
purpose?: "user" | "administrative" | "blowhorn";
|
|
151
151
|
};
|
|
152
152
|
/** @description Junction record linking an environment to a connection. */
|
|
153
153
|
EnvironmentConnectionMapping: {
|
|
@@ -254,7 +254,7 @@ export interface components {
|
|
|
254
254
|
*/
|
|
255
255
|
deletedAt?: string | null;
|
|
256
256
|
/**
|
|
257
|
-
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.
|
|
257
|
+
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization's Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.
|
|
258
258
|
*
|
|
259
259
|
* Absent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.
|
|
260
260
|
*
|
|
@@ -265,7 +265,7 @@ export interface components {
|
|
|
265
265
|
* The database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer's obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.
|
|
266
266
|
* @enum {string}
|
|
267
267
|
*/
|
|
268
|
-
purpose?: "user" | "administrative";
|
|
268
|
+
purpose?: "user" | "administrative" | "blowhorn";
|
|
269
269
|
}[];
|
|
270
270
|
};
|
|
271
271
|
/** @description Paginated list of connections associated with an environment. */
|
|
@@ -503,7 +503,7 @@ export interface operations {
|
|
|
503
503
|
*/
|
|
504
504
|
deletedAt?: string | null;
|
|
505
505
|
/**
|
|
506
|
-
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.
|
|
506
|
+
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization's Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.
|
|
507
507
|
*
|
|
508
508
|
* Absent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.
|
|
509
509
|
*
|
|
@@ -514,7 +514,7 @@ export interface operations {
|
|
|
514
514
|
* The database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer's obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.
|
|
515
515
|
* @enum {string}
|
|
516
516
|
*/
|
|
517
|
-
purpose?: "user" | "administrative";
|
|
517
|
+
purpose?: "user" | "administrative" | "blowhorn";
|
|
518
518
|
}[];
|
|
519
519
|
};
|
|
520
520
|
};
|
|
@@ -620,7 +620,7 @@ export interface operations {
|
|
|
620
620
|
*/
|
|
621
621
|
deletedAt?: string | null;
|
|
622
622
|
/**
|
|
623
|
-
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.
|
|
623
|
+
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization's Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.
|
|
624
624
|
*
|
|
625
625
|
* Absent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.
|
|
626
626
|
*
|
|
@@ -631,7 +631,7 @@ export interface operations {
|
|
|
631
631
|
* The database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer's obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.
|
|
632
632
|
* @enum {string}
|
|
633
633
|
*/
|
|
634
|
-
purpose?: "user" | "administrative";
|
|
634
|
+
purpose?: "user" | "administrative" | "blowhorn";
|
|
635
635
|
};
|
|
636
636
|
};
|
|
637
637
|
};
|
|
@@ -744,7 +744,7 @@ export interface operations {
|
|
|
744
744
|
*/
|
|
745
745
|
deletedAt?: string | null;
|
|
746
746
|
/**
|
|
747
|
-
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.
|
|
747
|
+
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization's Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.
|
|
748
748
|
*
|
|
749
749
|
* Absent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.
|
|
750
750
|
*
|
|
@@ -755,7 +755,7 @@ export interface operations {
|
|
|
755
755
|
* The database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer's obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.
|
|
756
756
|
* @enum {string}
|
|
757
757
|
*/
|
|
758
|
-
purpose?: "user" | "administrative";
|
|
758
|
+
purpose?: "user" | "administrative" | "blowhorn";
|
|
759
759
|
}[];
|
|
760
760
|
};
|
|
761
761
|
};
|
|
@@ -890,7 +890,7 @@ export interface operations {
|
|
|
890
890
|
*/
|
|
891
891
|
deletedAt?: string | null;
|
|
892
892
|
/**
|
|
893
|
-
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.
|
|
893
|
+
* @description What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization's Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.
|
|
894
894
|
*
|
|
895
895
|
* Absent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.
|
|
896
896
|
*
|
|
@@ -901,7 +901,7 @@ export interface operations {
|
|
|
901
901
|
* The database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer's obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.
|
|
902
902
|
* @enum {string}
|
|
903
903
|
*/
|
|
904
|
-
purpose?: "user" | "administrative";
|
|
904
|
+
purpose?: "user" | "administrative" | "blowhorn";
|
|
905
905
|
}[];
|
|
906
906
|
};
|
|
907
907
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var e={openapi:"3.0.0",info:{title:"Environment",description:"OpenAPI schema for environment management in Meshery Cloud.",version:"v1beta3",contact:{name:"Meshery Maintainers",email:"maintainers@meshery.io",url:"https://meshery.io"},license:{name:"Apache 2.0",url:"https://www.apache.org/licenses/LICENSE-2.0.html"}},servers:[{url:"http://localhost:9081",description:"Meshery Server development server URL (controlled via PORT environment variable)"}],security:[{jwt:[]}],tags:[{name:"environments",description:"APIs for environments"}],components:{responses:{200:{description:"ok",content:{"text/plain":{schema:{type:"string"}}}},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},404:{description:"Result not found",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}},parameters:{environmentId:{name:"environmentId",in:"path",description:"Environment ID",schema:{type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-go-type-skip-optional-pointer":true},required:true},search:{name:"search",in:"query",description:"Get responses that match search param value",schema:{type:"string"}},order:{name:"order",in:"query",description:"Get ordered responses",schema:{type:"string"}},page:{name:"page",in:"query",description:"Get responses by page",schema:{type:"integer",minimum:0}},pageSize:{name:"pageSize",in:"query",description:"Number of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase `pagesize`.",schema:{type:"integer",minimum:1}},pagesize:{name:"pagesize",in:"query",description:"Get responses by pagesize. Deprecated alias of pageSize.",deprecated:true,schema:{type:"integer"}},orgIdQuery:{name:"orgId",in:"query",description:"User's organization ID",schema:{type:"string",format:"uuid",maxLength:36},required:true}},securitySchemes:{jwt:{type:"http",scheme:"bearer",bearerFormat:"JWT"}},schemas:{Environment:{$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}},EnvironmentConnectionMapping:{type:"object",description:"Junction record linking an environment to a connection.",properties:{id:{"x-go-name":"ID",description:"Mapping record ID.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-oapi-codegen-extra-tags":{db:"id",json:"id"},"x-go-type-name":"GeneralId","x-go-type-skip-optional-pointer":true},environmentId:{"x-go-name":"EnvironmentID","x-oapi-codegen-extra-tags":{db:"environment_id",json:"environmentId"},"x-go-type-skip-optional-pointer":true,description:"ID of the associated environment.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},connectionId:{"x-go-name":"ConnectionID","x-oapi-codegen-extra-tags":{db:"connection_id",json:"connectionId"},"x-go-type-skip-optional-pointer":true,description:"ID of the associated connection.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the mapping was created.","x-oapi-codegen-extra-tags":{db:"created_at",json:"createdAt"},type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},updatedAt:{description:"Timestamp when the mapping was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",json:"updatedAt"},type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the mapping was soft-deleted. Null while the mapping remains active.","x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"NullTime",type:"string",format:"date-time","x-go-type-skip-optional-pointer":true}}},EnvironmentPayload:{type:"object",description:"Payload for creating or updating an environment. Carries only the client-settable fields. Server-owned fields are deliberately absent: `id`, `owner`, `createdAt`, `updatedAt` and `deletedAt` because the server assigns them, and `purpose` because permission to create an environment must not confer the ability to designate it administrative. Excluding it here is a codegen guarantee rather than access control: the registrant connection inlines the full environment entity, so `purpose` still reaches the `registerRegistryComponent` and `registerRegistryRelationship` request types, and every consumer must refuse it on input whatever surface it arrives on. Do not add `purpose` here - see https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.",required:["name","organizationId"],properties:{name:{description:"An environment is a collection of resources. Provide a name that meaningfully represents these resources. You can change the name of the environment even after its creation.",type:"string","x-go-type-skip-optional-pointer":true},description:{description:"An environment is a collection of resources, such as connections & credentials. Provide a detailed description to clarify the purpose of this environment and the types of resources it encompasses. You can modify the description at any time. Learn more about environments [here](https://docs.meshery.io/concepts/logical/environments).",type:"string","x-go-type-skip-optional-pointer":true},organizationId:{type:"string",description:"Select an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.","x-go-type-skip-optional-pointer":true,"x-go-name":"OrgID","x-oapi-codegen-extra-tags":{json:"organizationId"},maxLength:500,format:"uuid"}}},EnvironmentPage:{type:"object",description:"Paginated list of environments.",properties:{page:{description:"Zero-based page index returned in this response.",minimum:0,type:"integer","x-go-type-skip-optional-pointer":true},pageSize:{description:"Maximum number of items returned on each page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"},type:"integer","x-go-type-skip-optional-pointer":true},totalCount:{description:"Total number of items across all pages.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"},type:"integer","x-go-type-skip-optional-pointer":true},environments:{type:"array","x-go-type-skip-optional-pointer":true,items:{"x-go-type":"Environment",$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}},description:"Environments associated with this resource."}}},EnvironmentConnectionsPage:{type:"object",description:"Paginated list of connections associated with an environment.",properties:{page:{type:"integer",description:"Current page number of the result set.",minimum:0},pageSize:{type:"integer",description:"Number of items per page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"}},totalCount:{type:"integer",description:"Total number of items available.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"}},connections:{type:"array",items:{type:"object",additionalProperties:true},description:"The connections of the environmentconnectionspage."}}},EnvironmentConnectionMappingPage:{type:"object",description:"Paginated list of environment-to-connection mapping records, returned when a connection is assigned to or unassigned from an environment. Distinct from EnvironmentConnectionsPage, which lists the connections themselves rather than the junction records.",required:["page","pageSize","totalCount","environmentConnectionMapping"],properties:{page:{type:"integer",description:"Zero-based page index returned in this response.",minimum:0},pageSize:{type:"integer",description:"Maximum number of items returned on each page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"}},totalCount:{type:"integer",description:"Total number of items across all pages.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"}},environmentConnectionMapping:{type:"array",description:"Environment-to-connection mapping records in this page.","x-oapi-codegen-extra-tags":{json:"environmentConnectionMapping"},items:{type:"object",description:"Junction record linking an environment to a connection.",properties:{id:{"x-go-name":"ID",description:"Mapping record ID.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-oapi-codegen-extra-tags":{db:"id",json:"id"},"x-go-type-name":"GeneralId","x-go-type-skip-optional-pointer":true},environmentId:{"x-go-name":"EnvironmentID","x-oapi-codegen-extra-tags":{db:"environment_id",json:"environmentId"},"x-go-type-skip-optional-pointer":true,description:"ID of the associated environment.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},connectionId:{"x-go-name":"ConnectionID","x-oapi-codegen-extra-tags":{db:"connection_id",json:"connectionId"},"x-go-type-skip-optional-pointer":true,description:"ID of the associated connection.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the mapping was created.","x-oapi-codegen-extra-tags":{db:"created_at",json:"createdAt"},type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},updatedAt:{description:"Timestamp when the mapping was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",json:"updatedAt"},type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the mapping was soft-deleted. Null while the mapping remains active.","x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"NullTime",type:"string",format:"date-time","x-go-type-skip-optional-pointer":true}}}}}}},requestBodies:{environmentPayload:{description:"Body for creating environment",required:true,content:{"application/json":{schema:{type:"object",description:"Payload for creating or updating an environment. Carries only the client-settable fields. Server-owned fields are deliberately absent: `id`, `owner`, `createdAt`, `updatedAt` and `deletedAt` because the server assigns them, and `purpose` because permission to create an environment must not confer the ability to designate it administrative. Excluding it here is a codegen guarantee rather than access control: the registrant connection inlines the full environment entity, so `purpose` still reaches the `registerRegistryComponent` and `registerRegistryRelationship` request types, and every consumer must refuse it on input whatever surface it arrives on. Do not add `purpose` here - see https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.",required:["name","organizationId"],properties:{name:{description:"An environment is a collection of resources. Provide a name that meaningfully represents these resources. You can change the name of the environment even after its creation.",type:"string","x-go-type-skip-optional-pointer":true},description:{description:"An environment is a collection of resources, such as connections & credentials. Provide a detailed description to clarify the purpose of this environment and the types of resources it encompasses. You can modify the description at any time. Learn more about environments [here](https://docs.meshery.io/concepts/logical/environments).",type:"string","x-go-type-skip-optional-pointer":true},organizationId:{type:"string",description:"Select an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.","x-go-type-skip-optional-pointer":true,"x-go-name":"OrgID","x-oapi-codegen-extra-tags":{json:"organizationId"},maxLength:500,format:"uuid"}}}}}}}},paths:{"/api/environments":{post:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"createEnvironment",summary:"Create an environment",description:"Creates a new environment",requestBody:{description:"Body for creating environment",required:true,content:{"application/json":{schema:{type:"object",description:"Payload for creating or updating an environment. Carries only the client-settable fields. Server-owned fields are deliberately absent: `id`, `owner`, `createdAt`, `updatedAt` and `deletedAt` because the server assigns them, and `purpose` because permission to create an environment must not confer the ability to designate it administrative. Excluding it here is a codegen guarantee rather than access control: the registrant connection inlines the full environment entity, so `purpose` still reaches the `registerRegistryComponent` and `registerRegistryRelationship` request types, and every consumer must refuse it on input whatever surface it arrives on. Do not add `purpose` here - see https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.",required:["name","organizationId"],properties:{name:{description:"An environment is a collection of resources. Provide a name that meaningfully represents these resources. You can change the name of the environment even after its creation.",type:"string","x-go-type-skip-optional-pointer":true},description:{description:"An environment is a collection of resources, such as connections & credentials. Provide a detailed description to clarify the purpose of this environment and the types of resources it encompasses. You can modify the description at any time. Learn more about environments [here](https://docs.meshery.io/concepts/logical/environments).",type:"string","x-go-type-skip-optional-pointer":true},organizationId:{type:"string",description:"Select an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.","x-go-type-skip-optional-pointer":true,"x-go-name":"OrgID","x-oapi-codegen-extra-tags":{json:"organizationId"},maxLength:500,format:"uuid"}}}}}},responses:{201:{description:"Created environment",content:{"application/json":{schema:{$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}}}}},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}},get:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"getEnvironments",summary:"Get all environments",description:"Gets all environments",parameters:[{name:"search",in:"query",description:"Get responses that match search param value",schema:{type:"string"}},{name:"order",in:"query",description:"Get ordered responses",schema:{type:"string"}},{name:"page",in:"query",description:"Get responses by page",schema:{type:"integer",minimum:0}},{name:"pageSize",in:"query",description:"Number of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase `pagesize`.",schema:{type:"integer",minimum:1}},{name:"pagesize",in:"query",description:"Get responses by pagesize. Deprecated alias of pageSize.",deprecated:true,schema:{type:"integer"}},{name:"orgId",in:"query",description:"User's organization ID",schema:{type:"string",format:"uuid",maxLength:36},required:true}],responses:{200:{description:"Environments",content:{"application/json":{schema:{type:"object",description:"Paginated list of environments.",properties:{page:{description:"Zero-based page index returned in this response.",minimum:0,type:"integer","x-go-type-skip-optional-pointer":true},pageSize:{description:"Maximum number of items returned on each page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"},type:"integer","x-go-type-skip-optional-pointer":true},totalCount:{description:"Total number of items across all pages.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"},type:"integer","x-go-type-skip-optional-pointer":true},environments:{type:"array","x-go-type-skip-optional-pointer":true,items:{"x-go-type":"Environment",$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}},description:"Environments associated with this resource."}}}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}}},"/api/environments/{environmentId}":{get:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"getEnvironmentById",summary:"Get environment by ID",parameters:[{name:"environmentId",in:"path",description:"Environment ID",schema:{type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-go-type-skip-optional-pointer":true},required:true},{name:"orgId",in:"query",description:"User's organization ID",schema:{type:"string",format:"uuid",maxLength:36},required:true}],responses:{200:{description:"Environment page",content:{"application/json":{schema:{type:"object",description:"Paginated list of environments.",properties:{page:{description:"Zero-based page index returned in this response.",minimum:0,type:"integer","x-go-type-skip-optional-pointer":true},pageSize:{description:"Maximum number of items returned on each page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"},type:"integer","x-go-type-skip-optional-pointer":true},totalCount:{description:"Total number of items across all pages.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"},type:"integer","x-go-type-skip-optional-pointer":true},environments:{type:"array","x-go-type-skip-optional-pointer":true,items:{"x-go-type":"Environment",$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}},description:"Environments associated with this resource."}}}}}},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},404:{description:"Result not found",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}},put:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"updateEnvironment",summary:"Update an environment",parameters:[{name:"environmentId",in:"path",description:"Environment ID",schema:{type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-go-type-skip-optional-pointer":true},required:true}],requestBody:{description:"Body for creating environment",required:true,content:{"application/json":{schema:{type:"object",description:"Payload for creating or updating an environment. Carries only the client-settable fields. Server-owned fields are deliberately absent: `id`, `owner`, `createdAt`, `updatedAt` and `deletedAt` because the server assigns them, and `purpose` because permission to create an environment must not confer the ability to designate it administrative. Excluding it here is a codegen guarantee rather than access control: the registrant connection inlines the full environment entity, so `purpose` still reaches the `registerRegistryComponent` and `registerRegistryRelationship` request types, and every consumer must refuse it on input whatever surface it arrives on. Do not add `purpose` here - see https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.",required:["name","organizationId"],properties:{name:{description:"An environment is a collection of resources. Provide a name that meaningfully represents these resources. You can change the name of the environment even after its creation.",type:"string","x-go-type-skip-optional-pointer":true},description:{description:"An environment is a collection of resources, such as connections & credentials. Provide a detailed description to clarify the purpose of this environment and the types of resources it encompasses. You can modify the description at any time. Learn more about environments [here](https://docs.meshery.io/concepts/logical/environments).",type:"string","x-go-type-skip-optional-pointer":true},organizationId:{type:"string",description:"Select an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.","x-go-type-skip-optional-pointer":true,"x-go-name":"OrgID","x-oapi-codegen-extra-tags":{json:"organizationId"},maxLength:500,format:"uuid"}}}}}},responses:{200:{description:"Environment page",content:{"application/json":{schema:{type:"object",description:"Paginated list of environments.",properties:{page:{description:"Zero-based page index returned in this response.",minimum:0,type:"integer","x-go-type-skip-optional-pointer":true},pageSize:{description:"Maximum number of items returned on each page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"},type:"integer","x-go-type-skip-optional-pointer":true},totalCount:{description:"Total number of items across all pages.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"},type:"integer","x-go-type-skip-optional-pointer":true},environments:{type:"array","x-go-type-skip-optional-pointer":true,items:{"x-go-type":"Environment",$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}},description:"Environments associated with this resource."}}}}}},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},404:{description:"Result not found",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}},delete:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"deleteEnvironment",summary:"Delete an environment",parameters:[{name:"environmentId",in:"path",description:"Environment ID",schema:{type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-go-type-skip-optional-pointer":true},required:true}],responses:{204:{description:"Environment deleted"},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},404:{description:"Result not found",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}}},"/api/environments/{environmentId}/connections":{get:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"getEnvironmentConnections",summary:"Get environment connections",parameters:[{name:"environmentId",in:"path",description:"Environment ID",schema:{type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-go-type-skip-optional-pointer":true},required:true},{name:"search",in:"query",description:"Get responses that match search param value",schema:{type:"string"}},{name:"order",in:"query",description:"Get ordered responses",schema:{type:"string"}},{name:"page",in:"query",description:"Get responses by page",schema:{type:"integer",minimum:0}},{name:"pageSize",in:"query",description:"Number of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase `pagesize`.",schema:{type:"integer",minimum:1}},{name:"pagesize",in:"query",description:"Get responses by pagesize. Deprecated alias of pageSize.",deprecated:true,schema:{type:"integer"}},{name:"filter",in:"query",required:false,description:"JSON-encoded filter string used to scope the connection listing.",schema:{type:"string",maxLength:4096}}],responses:{200:{description:"Environment connections",content:{"application/json":{schema:{type:"object",description:"Paginated list of connections associated with an environment.",properties:{page:{type:"integer",description:"Current page number of the result set.",minimum:0},pageSize:{type:"integer",description:"Number of items per page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"}},totalCount:{type:"integer",description:"Total number of items available.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"}},connections:{type:"array",items:{type:"object",additionalProperties:true},description:"The connections of the environmentconnectionspage."}}}}}},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},404:{description:"Result not found",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}}}}},t=e;
|
|
1
|
+
'use strict';var e={openapi:"3.0.0",info:{title:"Environment",description:"OpenAPI schema for environment management in Meshery Cloud.",version:"v1beta3",contact:{name:"Meshery Maintainers",email:"maintainers@meshery.io",url:"https://meshery.io"},license:{name:"Apache 2.0",url:"https://www.apache.org/licenses/LICENSE-2.0.html"}},servers:[{url:"http://localhost:9081",description:"Meshery Server development server URL (controlled via PORT environment variable)"}],security:[{jwt:[]}],tags:[{name:"environments",description:"APIs for environments"}],components:{responses:{200:{description:"ok",content:{"text/plain":{schema:{type:"string"}}}},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},404:{description:"Result not found",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}},parameters:{environmentId:{name:"environmentId",in:"path",description:"Environment ID",schema:{type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-go-type-skip-optional-pointer":true},required:true},search:{name:"search",in:"query",description:"Get responses that match search param value",schema:{type:"string"}},order:{name:"order",in:"query",description:"Get ordered responses",schema:{type:"string"}},page:{name:"page",in:"query",description:"Get responses by page",schema:{type:"integer",minimum:0}},pageSize:{name:"pageSize",in:"query",description:"Number of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase `pagesize`.",schema:{type:"integer",minimum:1}},pagesize:{name:"pagesize",in:"query",description:"Get responses by pagesize. Deprecated alias of pageSize.",deprecated:true,schema:{type:"integer"}},orgIdQuery:{name:"orgId",in:"query",description:"User's organization ID",schema:{type:"string",format:"uuid",maxLength:36},required:true}},securitySchemes:{jwt:{type:"http",scheme:"bearer",bearerFormat:"JWT"}},schemas:{Environment:{$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization\'s Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative","blowhorn"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative","EnvironmentPurposeBlowhorn"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}},EnvironmentConnectionMapping:{type:"object",description:"Junction record linking an environment to a connection.",properties:{id:{"x-go-name":"ID",description:"Mapping record ID.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-oapi-codegen-extra-tags":{db:"id",json:"id"},"x-go-type-name":"GeneralId","x-go-type-skip-optional-pointer":true},environmentId:{"x-go-name":"EnvironmentID","x-oapi-codegen-extra-tags":{db:"environment_id",json:"environmentId"},"x-go-type-skip-optional-pointer":true,description:"ID of the associated environment.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},connectionId:{"x-go-name":"ConnectionID","x-oapi-codegen-extra-tags":{db:"connection_id",json:"connectionId"},"x-go-type-skip-optional-pointer":true,description:"ID of the associated connection.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the mapping was created.","x-oapi-codegen-extra-tags":{db:"created_at",json:"createdAt"},type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},updatedAt:{description:"Timestamp when the mapping was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",json:"updatedAt"},type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the mapping was soft-deleted. Null while the mapping remains active.","x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"NullTime",type:"string",format:"date-time","x-go-type-skip-optional-pointer":true}}},EnvironmentPayload:{type:"object",description:"Payload for creating or updating an environment. Carries only the client-settable fields. Server-owned fields are deliberately absent: `id`, `owner`, `createdAt`, `updatedAt` and `deletedAt` because the server assigns them, and `purpose` because permission to create an environment must not confer the ability to designate it administrative. Excluding it here is a codegen guarantee rather than access control: the registrant connection inlines the full environment entity, so `purpose` still reaches the `registerRegistryComponent` and `registerRegistryRelationship` request types, and every consumer must refuse it on input whatever surface it arrives on. Do not add `purpose` here - see https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.",required:["name","organizationId"],properties:{name:{description:"An environment is a collection of resources. Provide a name that meaningfully represents these resources. You can change the name of the environment even after its creation.",type:"string","x-go-type-skip-optional-pointer":true},description:{description:"An environment is a collection of resources, such as connections & credentials. Provide a detailed description to clarify the purpose of this environment and the types of resources it encompasses. You can modify the description at any time. Learn more about environments [here](https://docs.meshery.io/concepts/logical/environments).",type:"string","x-go-type-skip-optional-pointer":true},organizationId:{type:"string",description:"Select an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.","x-go-type-skip-optional-pointer":true,"x-go-name":"OrgID","x-oapi-codegen-extra-tags":{json:"organizationId"},maxLength:500,format:"uuid"}}},EnvironmentPage:{type:"object",description:"Paginated list of environments.",properties:{page:{description:"Zero-based page index returned in this response.",minimum:0,type:"integer","x-go-type-skip-optional-pointer":true},pageSize:{description:"Maximum number of items returned on each page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"},type:"integer","x-go-type-skip-optional-pointer":true},totalCount:{description:"Total number of items across all pages.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"},type:"integer","x-go-type-skip-optional-pointer":true},environments:{type:"array","x-go-type-skip-optional-pointer":true,items:{"x-go-type":"Environment",$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization\'s Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative","blowhorn"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative","EnvironmentPurposeBlowhorn"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}},description:"Environments associated with this resource."}}},EnvironmentConnectionsPage:{type:"object",description:"Paginated list of connections associated with an environment.",properties:{page:{type:"integer",description:"Current page number of the result set.",minimum:0},pageSize:{type:"integer",description:"Number of items per page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"}},totalCount:{type:"integer",description:"Total number of items available.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"}},connections:{type:"array",items:{type:"object",additionalProperties:true},description:"The connections of the environmentconnectionspage."}}},EnvironmentConnectionMappingPage:{type:"object",description:"Paginated list of environment-to-connection mapping records, returned when a connection is assigned to or unassigned from an environment. Distinct from EnvironmentConnectionsPage, which lists the connections themselves rather than the junction records.",required:["page","pageSize","totalCount","environmentConnectionMapping"],properties:{page:{type:"integer",description:"Zero-based page index returned in this response.",minimum:0},pageSize:{type:"integer",description:"Maximum number of items returned on each page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"}},totalCount:{type:"integer",description:"Total number of items across all pages.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"}},environmentConnectionMapping:{type:"array",description:"Environment-to-connection mapping records in this page.","x-oapi-codegen-extra-tags":{json:"environmentConnectionMapping"},items:{type:"object",description:"Junction record linking an environment to a connection.",properties:{id:{"x-go-name":"ID",description:"Mapping record ID.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-oapi-codegen-extra-tags":{db:"id",json:"id"},"x-go-type-name":"GeneralId","x-go-type-skip-optional-pointer":true},environmentId:{"x-go-name":"EnvironmentID","x-oapi-codegen-extra-tags":{db:"environment_id",json:"environmentId"},"x-go-type-skip-optional-pointer":true,description:"ID of the associated environment.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},connectionId:{"x-go-name":"ConnectionID","x-oapi-codegen-extra-tags":{db:"connection_id",json:"connectionId"},"x-go-type-skip-optional-pointer":true,description:"ID of the associated connection.",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the mapping was created.","x-oapi-codegen-extra-tags":{db:"created_at",json:"createdAt"},type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},updatedAt:{description:"Timestamp when the mapping was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",json:"updatedAt"},type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the mapping was soft-deleted. Null while the mapping remains active.","x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"NullTime",type:"string",format:"date-time","x-go-type-skip-optional-pointer":true}}}}}}},requestBodies:{environmentPayload:{description:"Body for creating environment",required:true,content:{"application/json":{schema:{type:"object",description:"Payload for creating or updating an environment. Carries only the client-settable fields. Server-owned fields are deliberately absent: `id`, `owner`, `createdAt`, `updatedAt` and `deletedAt` because the server assigns them, and `purpose` because permission to create an environment must not confer the ability to designate it administrative. Excluding it here is a codegen guarantee rather than access control: the registrant connection inlines the full environment entity, so `purpose` still reaches the `registerRegistryComponent` and `registerRegistryRelationship` request types, and every consumer must refuse it on input whatever surface it arrives on. Do not add `purpose` here - see https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.",required:["name","organizationId"],properties:{name:{description:"An environment is a collection of resources. Provide a name that meaningfully represents these resources. You can change the name of the environment even after its creation.",type:"string","x-go-type-skip-optional-pointer":true},description:{description:"An environment is a collection of resources, such as connections & credentials. Provide a detailed description to clarify the purpose of this environment and the types of resources it encompasses. You can modify the description at any time. Learn more about environments [here](https://docs.meshery.io/concepts/logical/environments).",type:"string","x-go-type-skip-optional-pointer":true},organizationId:{type:"string",description:"Select an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.","x-go-type-skip-optional-pointer":true,"x-go-name":"OrgID","x-oapi-codegen-extra-tags":{json:"organizationId"},maxLength:500,format:"uuid"}}}}}}}},paths:{"/api/environments":{post:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"createEnvironment",summary:"Create an environment",description:"Creates a new environment",requestBody:{description:"Body for creating environment",required:true,content:{"application/json":{schema:{type:"object",description:"Payload for creating or updating an environment. Carries only the client-settable fields. Server-owned fields are deliberately absent: `id`, `owner`, `createdAt`, `updatedAt` and `deletedAt` because the server assigns them, and `purpose` because permission to create an environment must not confer the ability to designate it administrative. Excluding it here is a codegen guarantee rather than access control: the registrant connection inlines the full environment entity, so `purpose` still reaches the `registerRegistryComponent` and `registerRegistryRelationship` request types, and every consumer must refuse it on input whatever surface it arrives on. Do not add `purpose` here - see https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.",required:["name","organizationId"],properties:{name:{description:"An environment is a collection of resources. Provide a name that meaningfully represents these resources. You can change the name of the environment even after its creation.",type:"string","x-go-type-skip-optional-pointer":true},description:{description:"An environment is a collection of resources, such as connections & credentials. Provide a detailed description to clarify the purpose of this environment and the types of resources it encompasses. You can modify the description at any time. Learn more about environments [here](https://docs.meshery.io/concepts/logical/environments).",type:"string","x-go-type-skip-optional-pointer":true},organizationId:{type:"string",description:"Select an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.","x-go-type-skip-optional-pointer":true,"x-go-name":"OrgID","x-oapi-codegen-extra-tags":{json:"organizationId"},maxLength:500,format:"uuid"}}}}}},responses:{201:{description:"Created environment",content:{"application/json":{schema:{$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization\'s Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative","blowhorn"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative","EnvironmentPurposeBlowhorn"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}}}}},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}},get:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"getEnvironments",summary:"Get all environments",description:"Gets all environments",parameters:[{name:"search",in:"query",description:"Get responses that match search param value",schema:{type:"string"}},{name:"order",in:"query",description:"Get ordered responses",schema:{type:"string"}},{name:"page",in:"query",description:"Get responses by page",schema:{type:"integer",minimum:0}},{name:"pageSize",in:"query",description:"Number of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase `pagesize`.",schema:{type:"integer",minimum:1}},{name:"pagesize",in:"query",description:"Get responses by pagesize. Deprecated alias of pageSize.",deprecated:true,schema:{type:"integer"}},{name:"orgId",in:"query",description:"User's organization ID",schema:{type:"string",format:"uuid",maxLength:36},required:true}],responses:{200:{description:"Environments",content:{"application/json":{schema:{type:"object",description:"Paginated list of environments.",properties:{page:{description:"Zero-based page index returned in this response.",minimum:0,type:"integer","x-go-type-skip-optional-pointer":true},pageSize:{description:"Maximum number of items returned on each page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"},type:"integer","x-go-type-skip-optional-pointer":true},totalCount:{description:"Total number of items across all pages.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"},type:"integer","x-go-type-skip-optional-pointer":true},environments:{type:"array","x-go-type-skip-optional-pointer":true,items:{"x-go-type":"Environment",$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization\'s Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative","blowhorn"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative","EnvironmentPurposeBlowhorn"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}},description:"Environments associated with this resource."}}}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}}},"/api/environments/{environmentId}":{get:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"getEnvironmentById",summary:"Get environment by ID",parameters:[{name:"environmentId",in:"path",description:"Environment ID",schema:{type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-go-type-skip-optional-pointer":true},required:true},{name:"orgId",in:"query",description:"User's organization ID",schema:{type:"string",format:"uuid",maxLength:36},required:true}],responses:{200:{description:"Environment page",content:{"application/json":{schema:{type:"object",description:"Paginated list of environments.",properties:{page:{description:"Zero-based page index returned in this response.",minimum:0,type:"integer","x-go-type-skip-optional-pointer":true},pageSize:{description:"Maximum number of items returned on each page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"},type:"integer","x-go-type-skip-optional-pointer":true},totalCount:{description:"Total number of items across all pages.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"},type:"integer","x-go-type-skip-optional-pointer":true},environments:{type:"array","x-go-type-skip-optional-pointer":true,items:{"x-go-type":"Environment",$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization\'s Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative","blowhorn"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative","EnvironmentPurposeBlowhorn"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}},description:"Environments associated with this resource."}}}}}},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},404:{description:"Result not found",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}},put:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"updateEnvironment",summary:"Update an environment",parameters:[{name:"environmentId",in:"path",description:"Environment ID",schema:{type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-go-type-skip-optional-pointer":true},required:true}],requestBody:{description:"Body for creating environment",required:true,content:{"application/json":{schema:{type:"object",description:"Payload for creating or updating an environment. Carries only the client-settable fields. Server-owned fields are deliberately absent: `id`, `owner`, `createdAt`, `updatedAt` and `deletedAt` because the server assigns them, and `purpose` because permission to create an environment must not confer the ability to designate it administrative. Excluding it here is a codegen guarantee rather than access control: the registrant connection inlines the full environment entity, so `purpose` still reaches the `registerRegistryComponent` and `registerRegistryRelationship` request types, and every consumer must refuse it on input whatever surface it arrives on. Do not add `purpose` here - see https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.",required:["name","organizationId"],properties:{name:{description:"An environment is a collection of resources. Provide a name that meaningfully represents these resources. You can change the name of the environment even after its creation.",type:"string","x-go-type-skip-optional-pointer":true},description:{description:"An environment is a collection of resources, such as connections & credentials. Provide a detailed description to clarify the purpose of this environment and the types of resources it encompasses. You can modify the description at any time. Learn more about environments [here](https://docs.meshery.io/concepts/logical/environments).",type:"string","x-go-type-skip-optional-pointer":true},organizationId:{type:"string",description:"Select an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.","x-go-type-skip-optional-pointer":true,"x-go-name":"OrgID","x-oapi-codegen-extra-tags":{json:"organizationId"},maxLength:500,format:"uuid"}}}}}},responses:{200:{description:"Environment page",content:{"application/json":{schema:{type:"object",description:"Paginated list of environments.",properties:{page:{description:"Zero-based page index returned in this response.",minimum:0,type:"integer","x-go-type-skip-optional-pointer":true},pageSize:{description:"Maximum number of items returned on each page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"},type:"integer","x-go-type-skip-optional-pointer":true},totalCount:{description:"Total number of items across all pages.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"},type:"integer","x-go-type-skip-optional-pointer":true},environments:{type:"array","x-go-type-skip-optional-pointer":true,items:{"x-go-type":"Environment",$id:"https://schemas.meshery.io/environment.yaml",$schema:"http://json-schema.org/draft-07/schema#",title:"Environment",description:"Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments",additionalProperties:false,type:"object",example:{id:"00000000-0000-0000-0000-000000000000",schemaVersion:"environments.meshery.io/v1beta3",name:"Production Environment",description:"Connections and credentials for the production cluster.",purpose:"user",organizationId:"00000000-0000-0000-0000-000000000000",owner:"00000000-0000-0000-0000-000000000000",createdAt:"0001-01-01T00:00:00Z",metadata:{},updatedAt:"0001-01-01T00:00:00Z",deletedAt:null},required:["id","schemaVersion","name","description","organizationId"],properties:{id:{description:"ID","x-order":1,"x-go-name":"ID","x-oapi-codegen-extra-tags":{db:"id",json:"id"},type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},schemaVersion:{description:"Specifies the version of the schema to which the environment conforms.","x-order":2,"x-oapi-codegen-extra-tags":{json:"schemaVersion",db:"-",gorm:"-"},default:"environments.meshery.io/v1beta3",type:"string",minLength:2,maxLength:100,pattern:"^([a-z][a-z0-9.-]*\\/)?v(alpha|beta|[0-9]+(alpha[0-9]*|beta[0-9]*|rc[0-9]*)?)([.-][a-z0-9]+)*$",example:["v1","v1alpha1","v2beta3","v1.custom-suffix","models.meshery.io/v1beta1","capability.meshery.io/v1alpha1"]},name:{"x-oapi-codegen-extra-tags":{db:"name",json:"name"},"x-order":3,type:"string",maxLength:100,description:"Environment name"},description:{"x-oapi-codegen-extra-tags":{db:"description",json:"description"},"x-order":4,type:"string",maxLength:1e3,description:"Environment description"},organizationId:{"x-go-name":"OrganizationID","x-oapi-codegen-extra-tags":{db:"organization_id",json:"organizationId"},"x-order":5,description:"Environment organization ID",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},owner:{"x-oapi-codegen-extra-tags":{db:"owner",json:"owner"},"x-order":6,description:"Environment owner",type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"}},createdAt:{description:"Timestamp when the environment was created.","x-oapi-codegen-extra-tags":{db:"created_at",yaml:"created_at",json:"createdAt"},"x-order":7,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"CreatedAt","x-go-type-skip-optional-pointer":true},metadata:{description:"Additional metadata associated with the environment.","x-oapi-codegen-extra-tags":{db:"metadata",json:"metadata"},"x-order":8,"x-go-type":"core.Map","x-go-type-skip-optional-pointer":true,type:"object"},updatedAt:{description:"Timestamp when the environment was last updated.","x-oapi-codegen-extra-tags":{db:"updated_at",yaml:"updated_at",json:"updatedAt"},"x-order":9,"x-go-type":"time.Time",type:"string",format:"date-time","x-go-name":"UpdatedAt","x-go-type-skip-optional-pointer":true},deletedAt:{description:"Timestamp when the environment was soft deleted. Null while the environment remains active.",nullable:true,"x-oapi-codegen-extra-tags":{db:"deleted_at",json:"deletedAt"},"x-go-type":"core.NullTime","x-go-import":"database/sql","x-order":10,type:"string",format:"date-time","x-go-type-skip-optional-pointer":true},purpose:{type:"string",description:'What the environment exists for. `user` is an ordinary environment that people create to logically group Connections and their Credentials. `administrative` designates an environment the platform itself provisions to hold organization-level configuration, and which resolvers of that configuration therefore trust. `blowhorn` designates an environment the platform itself provisions to hold an organization\'s Blowhorn configuration and secrets, resolved by the purpose-typed credential chain; it is privileged in the same sense as `administrative`.\n\nAbsent means `user`. Nothing may read an unset or unrecognised value as administrative: test for the administrative value explicitly rather than for "not user", so the property fails closed.\n\nAt most one live environment per organization may carry any single privileged purpose - `administrative`, and each privileged value a later version adds. Name those values explicitly wherever the rule is enforced, including the database index predicate: a "not `user`" test also matches the empty value that unmigrated rows and un-normalised writes read back as, which means ordinary. A resolver that selects an environment by purpose MUST fail closed when more than one live row matches: return an error rather than whichever row the database happened to return first.\n\nServer-owned and not client-settable. It is absent from `EnvironmentPayload`, which every environment POST and PUT requestBody references, and from the create-or-edit form, so the environment create and update endpoints have no field for it. That exclusion is a codegen guarantee, never access control: the registrant connection inlines the full environment entity, so `registerRegistryComponent` and `registerRegistryRelationship` do carry `purpose` in a request type and consumers MUST refuse it on input there too. Whatever surface a value arrives on, every consumer MUST assign this property only from server-side provisioning or a data migration. Permission to create an environment does not confer the ability to make one administrative.\n\nThe database index that enforces the uniqueness invariant, the migration path for environments that are administrative by naming convention today, and each consumer\'s obligations are specified in https://github.com/meshery/schemas/blob/master/docs/environment-purpose-contract.md.',enum:["user","administrative","blowhorn"],"x-enum-varnames":["EnvironmentPurposeUser","EnvironmentPurposeAdministrative","EnvironmentPurposeBlowhorn"],"x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{db:"purpose",gorm:"not null;default:user",json:"purpose,omitempty"},"x-order":11}}},description:"Environments associated with this resource."}}}}}},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},404:{description:"Result not found",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}},delete:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"deleteEnvironment",summary:"Delete an environment",parameters:[{name:"environmentId",in:"path",description:"Environment ID",schema:{type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-go-type-skip-optional-pointer":true},required:true}],responses:{204:{description:"Environment deleted"},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},404:{description:"Result not found",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}}},"/api/environments/{environmentId}/connections":{get:{"x-internal":["cloud","meshery"],tags:["environments"],operationId:"getEnvironmentConnections",summary:"Get environment connections",parameters:[{name:"environmentId",in:"path",description:"Environment ID",schema:{type:"string",format:"uuid","x-go-type":"uuid.UUID","x-go-type-import":{path:"github.com/gofrs/uuid"},"x-go-type-skip-optional-pointer":true},required:true},{name:"search",in:"query",description:"Get responses that match search param value",schema:{type:"string"}},{name:"order",in:"query",description:"Get ordered responses",schema:{type:"string"}},{name:"page",in:"query",description:"Get responses by page",schema:{type:"integer",minimum:0}},{name:"pageSize",in:"query",description:"Number of responses to return per page. Canonical camelCase pagination parameter; prefer this over the deprecated all-lowercase `pagesize`.",schema:{type:"integer",minimum:1}},{name:"pagesize",in:"query",description:"Get responses by pagesize. Deprecated alias of pageSize.",deprecated:true,schema:{type:"integer"}},{name:"filter",in:"query",required:false,description:"JSON-encoded filter string used to scope the connection listing.",schema:{type:"string",maxLength:4096}}],responses:{200:{description:"Environment connections",content:{"application/json":{schema:{type:"object",description:"Paginated list of connections associated with an environment.",properties:{page:{type:"integer",description:"Current page number of the result set.",minimum:0},pageSize:{type:"integer",description:"Number of items per page.",minimum:1,"x-oapi-codegen-extra-tags":{json:"pageSize"}},totalCount:{type:"integer",description:"Total number of items available.",minimum:0,"x-oapi-codegen-extra-tags":{json:"totalCount"}},connections:{type:"array",items:{type:"object",additionalProperties:true},description:"The connections of the environmentconnectionspage."}}}}}},400:{description:"Invalid request body or request param",content:{"text/plain":{schema:{type:"string"}}}},401:{description:"Expired JWT token used or insufficient privilege",content:{"text/plain":{schema:{type:"string"}}}},404:{description:"Result not found",content:{"text/plain":{schema:{type:"string"}}}},500:{description:"Internal server error",content:{"text/plain":{schema:{type:"string"}}}}}}}}},t=e;
|
|
2
2
|
module.exports=t;
|