@confighub/api 0.5.0 → 0.5.1

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/dist/index.d.cts CHANGED
@@ -2223,6 +2223,26 @@ interface paths {
2223
2223
  patch?: never;
2224
2224
  trace?: never;
2225
2225
  };
2226
+ "/unit/move": {
2227
+ parameters: {
2228
+ query?: never;
2229
+ header?: never;
2230
+ path?: never;
2231
+ cookie?: never;
2232
+ };
2233
+ get?: never;
2234
+ put?: never;
2235
+ /**
2236
+ * Move units to another space
2237
+ * @description Move the selected Units, and the Links from them, to another Space. Requires Manage permission on each Unit and CreateChildren permission on the destination Space. Every check runs over the whole selection before anything is moved.
2238
+ */
2239
+ post: operations["BulkMoveUnits"];
2240
+ delete?: never;
2241
+ options?: never;
2242
+ head?: never;
2243
+ patch?: never;
2244
+ trace?: never;
2245
+ };
2226
2246
  "/unit/tag": {
2227
2247
  parameters: {
2228
2248
  query?: never;
@@ -6103,6 +6123,30 @@ interface components {
6103
6123
  UnitGuardResponse: {
6104
6124
  PathAnnotations?: components["schemas"]["PathAnnotationList"];
6105
6125
  };
6126
+ UnitMoveRequest: {
6127
+ /**
6128
+ * Format: uuid
6129
+ * @example 248df4b7-aa70-47b8-a036-33ac447e668d
6130
+ */
6131
+ ToSpaceID?: string;
6132
+ };
6133
+ UnitMoveResponse: {
6134
+ Error?: components["schemas"]["ResponseError"];
6135
+ Moved?: boolean;
6136
+ MovedLinkSlugs?: string[];
6137
+ Resolving?: boolean;
6138
+ Slug?: string;
6139
+ /**
6140
+ * Format: uuid
6141
+ * @example 248df4b7-aa70-47b8-a036-33ac447e668d
6142
+ */
6143
+ TargetID?: string;
6144
+ /**
6145
+ * Format: uuid
6146
+ * @example 248df4b7-aa70-47b8-a036-33ac447e668d
6147
+ */
6148
+ UnitID?: string;
6149
+ };
6106
6150
  UnitMutationSources: {
6107
6151
  /** @description SHA256 of the configuration data the MutationSources describe. */
6108
6152
  DataHash?: string;
@@ -33806,6 +33850,189 @@ interface operations {
33806
33850
  };
33807
33851
  };
33808
33852
  };
33853
+ BulkMoveUnits: {
33854
+ parameters: {
33855
+ query?: {
33856
+ /**
33857
+ * @description The specified string is an expression for the purpose of filtering
33858
+ * the list of Units returned. The expression syntax was inspired by SQL.
33859
+ * It supports conjunctions using `AND` of relational expressions of the form *attribute*
33860
+ * *operator* *attribute_or_literal*. The attribute names are case-sensitive and PascalCase,
33861
+ * as in the JSON encoding.
33862
+ * Strings support the following operators: `<`, `>`, `<=`, `>=`, `=`, `!=`, `LIKE`, `NOT LIKE`, `ILIKE`, `~~`, `!~~`, `~`, `~*`, `!~`, `!~*`, `IN`, `NOT IN`.
33863
+ * String pattern operators: `LIKE` and `~~` for pattern matching with `%` and `_` wildcards,
33864
+ * `ILIKE` for case-insensitive pattern matching, `NOT LIKE` and `!~~` for negated pattern matching.
33865
+ * String regex operators: `~` for regex matching, `~*` for case-insensitive regex,
33866
+ * `!~` and `!~*` for regex not matching (case-sensitive and insensitive).
33867
+ * Integers support the following operators: `<`, `>`, `<=`, `>=`, `=`, `!=`, `IN`, `NOT IN`.
33868
+ * UUIDs and boolean attributes support equality and inequality only.
33869
+ * UUID and time literals must be quoted as string literals.
33870
+ * String literals are quoted with single quotes, such as `'string'`.
33871
+ * Time literals use the same form as when serialized as JSON,
33872
+ * such as: `CreatedAt > '2025-02-18T23:16:34'`.
33873
+ * Integer and boolean literals are also supported for attributes of those types.
33874
+ * Arrays support the `?` operator to to match any element of the array,
33875
+ * as in `ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'`.
33876
+ * Arrays can perform LEN() to check for length, as in `LEN(ApprovedBy) > 0`.
33877
+ * An attribute naming a list of other entities can be filtered on their attributes with a `*` segment,
33878
+ * as in `FromLink.*.Slug = 'upgrade-app'`, which holds when any element satisfies it.
33879
+ * Without the `*` such a reference is an error, since it names no single value to compare.
33880
+ * Map support the dot notation to specify a particular map key, as in `Labels.tier = 'Backend'`.
33881
+ * Maps support `IS NULL` and `IS NOT NULL` with dot notation to check for key absence or presence,
33882
+ * as in `Labels.tier IS NULL` (key doesn't exist) or `Labels.tier IS NOT NULL` (key exists).
33883
+ * Comparison results can be tested with `IS TRUE`, `IS FALSE`, `IS NOT TRUE`, and `IS NOT FALSE`.
33884
+ * These are useful for nullable columns: `MergeSourceID = '<uuid>' IS NOT FALSE` matches rows where MergeSourceID equals the value OR is NULL.
33885
+ * The `IN` and `NOT IN` operators accept a comma-separated list of values in parentheses,
33886
+ * such as `Slug IN ('slugone', 'slugtwo')` or `Labels.environment IN ('prod', 'staging')`.
33887
+ * Conjunctions are supported using the `AND` operator.
33888
+ * An example conjunction is:
33889
+ * `CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'`.
33890
+ *
33891
+ * Supported attributes for filtering on Unit: Annotations, ApplyGates, ApplyWarnings, ApprovedBy, BridgeWorkerID, ChangeSetID, Conflicts, CreatedAt, DataHash, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionID, HeadRevisionNum, HeadUnitActionNum, HeadUnitEventNum, Labels, LastActionAt, LastChangeDescription, LastReleasedRevisionNum, NeededPaths, OrganizationID, ProvidedPaths, ProviderType, Slug, SpaceID, TargetID, TargetOptions, ToolchainType, UnitID, UpdatedAt, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, ValidationErrors, ValidationWarnings, Values.
33892
+ *
33893
+ * Finding all units created by cloning can be done using the expression `UpstreamRevisionNum > 0`. Clones of a specific unit can be found by additionally filtering based on `UpstreamUnitID`. Unapplied units can be found using `LastReleasedRevisionNum = 0`. Units with unapplied changes can be found with `HeadRevisionNum > LastReleasedRevisionNum`.
33894
+ *
33895
+ * The whole string must be query-encoded.
33896
+ */
33897
+ where?: string;
33898
+ /**
33899
+ * @description UUID of a Filter entity to apply to the Unit list.
33900
+ *
33901
+ * The Filter must be in the same Organization as the user credentials.
33902
+ *
33903
+ * The Filter's From field must match the entity type being filtered (Unit).
33904
+ *
33905
+ * For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID.
33906
+ *
33907
+ * The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic.
33908
+ *
33909
+ * If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
33910
+ */
33911
+ filter?: string;
33912
+ /**
33913
+ * @description Free text search that approximately matches the specified string against string fields and map keys/values.
33914
+ *
33915
+ * The search is case-insensitive and uses pattern matching to find entities containing the text.
33916
+ *
33917
+ * Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields.
33918
+ *
33919
+ * For map fields (like Labels and Annotations), the search matches both map keys and values.
33920
+ *
33921
+ * The search uses OR logic across all searchable fields, so matching any field will return the entity.
33922
+ *
33923
+ * If both 'where' and 'contains' parameters are specified, they are combined with AND logic.
33924
+ *
33925
+ * Searchable fields for Unit include string and map-type attributes from the queryable attributes list.
33926
+ *
33927
+ * The whole string must be query-encoded.
33928
+ */
33929
+ contains?: string;
33930
+ /**
33931
+ * @description Include clause for expanding related entities in the response for Unit.
33932
+ * The attribute names are case-sensitive, PascalCase, and
33933
+ * expected in a comma-separated list format as in the JSON encoding.
33934
+ *
33935
+ * Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastReleasedRevisionNum, OrganizationID, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID.
33936
+ *
33937
+ * The whole string must be query-encoded.
33938
+ */
33939
+ include?: string;
33940
+ /** @description Report what the move would do, and what would stop it, without moving anything */
33941
+ dry_run?: boolean;
33942
+ };
33943
+ header?: never;
33944
+ path?: never;
33945
+ cookie?: never;
33946
+ };
33947
+ requestBody?: {
33948
+ content: {
33949
+ "application/json": components["schemas"]["UnitMoveRequest"];
33950
+ };
33951
+ };
33952
+ responses: {
33953
+ /** @description OK */
33954
+ 200: {
33955
+ headers: {
33956
+ [name: string]: unknown;
33957
+ };
33958
+ content: {
33959
+ "application/json": components["schemas"]["UnitMoveResponse"][];
33960
+ };
33961
+ };
33962
+ /** @description Multi-Status: nothing was moved, or some Units moved and others did not */
33963
+ 207: {
33964
+ headers: {
33965
+ [name: string]: unknown;
33966
+ };
33967
+ content: {
33968
+ "application/json": components["schemas"]["UnitMoveResponse"][];
33969
+ };
33970
+ };
33971
+ /** @description Unit request is invalid (Bad Request). */
33972
+ 400: {
33973
+ headers: {
33974
+ [name: string]: unknown;
33975
+ };
33976
+ content: {
33977
+ "application/json": components["schemas"]["StandardErrorResponse"];
33978
+ };
33979
+ };
33980
+ /** @description Unauthorized access. */
33981
+ 401: {
33982
+ headers: {
33983
+ [name: string]: unknown;
33984
+ };
33985
+ content: {
33986
+ "application/json": components["schemas"]["StandardErrorResponse"];
33987
+ };
33988
+ };
33989
+ /** @description Forbidden access. */
33990
+ 403: {
33991
+ headers: {
33992
+ [name: string]: unknown;
33993
+ };
33994
+ content: {
33995
+ "application/json": components["schemas"]["StandardErrorResponse"];
33996
+ };
33997
+ };
33998
+ /** @description Unit not found. */
33999
+ 404: {
34000
+ headers: {
34001
+ [name: string]: unknown;
34002
+ };
34003
+ content: {
34004
+ "application/json": components["schemas"]["StandardErrorResponse"];
34005
+ };
34006
+ };
34007
+ /** @description Unit data conflict. Data has changed since last read. */
34008
+ 409: {
34009
+ headers: {
34010
+ [name: string]: unknown;
34011
+ };
34012
+ content: {
34013
+ "application/json": components["schemas"]["StandardErrorResponse"];
34014
+ };
34015
+ };
34016
+ /** @description Something went wrong while processing Unit. */
34017
+ 500: {
34018
+ headers: {
34019
+ [name: string]: unknown;
34020
+ };
34021
+ content: {
34022
+ "application/json": components["schemas"]["StandardErrorResponse"];
34023
+ };
34024
+ };
34025
+ /** @description Unexpected error. */
34026
+ default: {
34027
+ headers: {
34028
+ [name: string]: unknown;
34029
+ };
34030
+ content: {
34031
+ "application/json": components["schemas"]["StandardErrorResponse"];
34032
+ };
34033
+ };
34034
+ };
34035
+ };
33809
34036
  BulkTagUnits: {
33810
34037
  parameters: {
33811
34038
  query?: {
package/dist/index.d.ts CHANGED
@@ -2223,6 +2223,26 @@ interface paths {
2223
2223
  patch?: never;
2224
2224
  trace?: never;
2225
2225
  };
2226
+ "/unit/move": {
2227
+ parameters: {
2228
+ query?: never;
2229
+ header?: never;
2230
+ path?: never;
2231
+ cookie?: never;
2232
+ };
2233
+ get?: never;
2234
+ put?: never;
2235
+ /**
2236
+ * Move units to another space
2237
+ * @description Move the selected Units, and the Links from them, to another Space. Requires Manage permission on each Unit and CreateChildren permission on the destination Space. Every check runs over the whole selection before anything is moved.
2238
+ */
2239
+ post: operations["BulkMoveUnits"];
2240
+ delete?: never;
2241
+ options?: never;
2242
+ head?: never;
2243
+ patch?: never;
2244
+ trace?: never;
2245
+ };
2226
2246
  "/unit/tag": {
2227
2247
  parameters: {
2228
2248
  query?: never;
@@ -6103,6 +6123,30 @@ interface components {
6103
6123
  UnitGuardResponse: {
6104
6124
  PathAnnotations?: components["schemas"]["PathAnnotationList"];
6105
6125
  };
6126
+ UnitMoveRequest: {
6127
+ /**
6128
+ * Format: uuid
6129
+ * @example 248df4b7-aa70-47b8-a036-33ac447e668d
6130
+ */
6131
+ ToSpaceID?: string;
6132
+ };
6133
+ UnitMoveResponse: {
6134
+ Error?: components["schemas"]["ResponseError"];
6135
+ Moved?: boolean;
6136
+ MovedLinkSlugs?: string[];
6137
+ Resolving?: boolean;
6138
+ Slug?: string;
6139
+ /**
6140
+ * Format: uuid
6141
+ * @example 248df4b7-aa70-47b8-a036-33ac447e668d
6142
+ */
6143
+ TargetID?: string;
6144
+ /**
6145
+ * Format: uuid
6146
+ * @example 248df4b7-aa70-47b8-a036-33ac447e668d
6147
+ */
6148
+ UnitID?: string;
6149
+ };
6106
6150
  UnitMutationSources: {
6107
6151
  /** @description SHA256 of the configuration data the MutationSources describe. */
6108
6152
  DataHash?: string;
@@ -33806,6 +33850,189 @@ interface operations {
33806
33850
  };
33807
33851
  };
33808
33852
  };
33853
+ BulkMoveUnits: {
33854
+ parameters: {
33855
+ query?: {
33856
+ /**
33857
+ * @description The specified string is an expression for the purpose of filtering
33858
+ * the list of Units returned. The expression syntax was inspired by SQL.
33859
+ * It supports conjunctions using `AND` of relational expressions of the form *attribute*
33860
+ * *operator* *attribute_or_literal*. The attribute names are case-sensitive and PascalCase,
33861
+ * as in the JSON encoding.
33862
+ * Strings support the following operators: `<`, `>`, `<=`, `>=`, `=`, `!=`, `LIKE`, `NOT LIKE`, `ILIKE`, `~~`, `!~~`, `~`, `~*`, `!~`, `!~*`, `IN`, `NOT IN`.
33863
+ * String pattern operators: `LIKE` and `~~` for pattern matching with `%` and `_` wildcards,
33864
+ * `ILIKE` for case-insensitive pattern matching, `NOT LIKE` and `!~~` for negated pattern matching.
33865
+ * String regex operators: `~` for regex matching, `~*` for case-insensitive regex,
33866
+ * `!~` and `!~*` for regex not matching (case-sensitive and insensitive).
33867
+ * Integers support the following operators: `<`, `>`, `<=`, `>=`, `=`, `!=`, `IN`, `NOT IN`.
33868
+ * UUIDs and boolean attributes support equality and inequality only.
33869
+ * UUID and time literals must be quoted as string literals.
33870
+ * String literals are quoted with single quotes, such as `'string'`.
33871
+ * Time literals use the same form as when serialized as JSON,
33872
+ * such as: `CreatedAt > '2025-02-18T23:16:34'`.
33873
+ * Integer and boolean literals are also supported for attributes of those types.
33874
+ * Arrays support the `?` operator to to match any element of the array,
33875
+ * as in `ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'`.
33876
+ * Arrays can perform LEN() to check for length, as in `LEN(ApprovedBy) > 0`.
33877
+ * An attribute naming a list of other entities can be filtered on their attributes with a `*` segment,
33878
+ * as in `FromLink.*.Slug = 'upgrade-app'`, which holds when any element satisfies it.
33879
+ * Without the `*` such a reference is an error, since it names no single value to compare.
33880
+ * Map support the dot notation to specify a particular map key, as in `Labels.tier = 'Backend'`.
33881
+ * Maps support `IS NULL` and `IS NOT NULL` with dot notation to check for key absence or presence,
33882
+ * as in `Labels.tier IS NULL` (key doesn't exist) or `Labels.tier IS NOT NULL` (key exists).
33883
+ * Comparison results can be tested with `IS TRUE`, `IS FALSE`, `IS NOT TRUE`, and `IS NOT FALSE`.
33884
+ * These are useful for nullable columns: `MergeSourceID = '<uuid>' IS NOT FALSE` matches rows where MergeSourceID equals the value OR is NULL.
33885
+ * The `IN` and `NOT IN` operators accept a comma-separated list of values in parentheses,
33886
+ * such as `Slug IN ('slugone', 'slugtwo')` or `Labels.environment IN ('prod', 'staging')`.
33887
+ * Conjunctions are supported using the `AND` operator.
33888
+ * An example conjunction is:
33889
+ * `CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'`.
33890
+ *
33891
+ * Supported attributes for filtering on Unit: Annotations, ApplyGates, ApplyWarnings, ApprovedBy, BridgeWorkerID, ChangeSetID, Conflicts, CreatedAt, DataHash, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionID, HeadRevisionNum, HeadUnitActionNum, HeadUnitEventNum, Labels, LastActionAt, LastChangeDescription, LastReleasedRevisionNum, NeededPaths, OrganizationID, ProvidedPaths, ProviderType, Slug, SpaceID, TargetID, TargetOptions, ToolchainType, UnitID, UpdatedAt, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, ValidationErrors, ValidationWarnings, Values.
33892
+ *
33893
+ * Finding all units created by cloning can be done using the expression `UpstreamRevisionNum > 0`. Clones of a specific unit can be found by additionally filtering based on `UpstreamUnitID`. Unapplied units can be found using `LastReleasedRevisionNum = 0`. Units with unapplied changes can be found with `HeadRevisionNum > LastReleasedRevisionNum`.
33894
+ *
33895
+ * The whole string must be query-encoded.
33896
+ */
33897
+ where?: string;
33898
+ /**
33899
+ * @description UUID of a Filter entity to apply to the Unit list.
33900
+ *
33901
+ * The Filter must be in the same Organization as the user credentials.
33902
+ *
33903
+ * The Filter's From field must match the entity type being filtered (Unit).
33904
+ *
33905
+ * For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID.
33906
+ *
33907
+ * The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic.
33908
+ *
33909
+ * If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
33910
+ */
33911
+ filter?: string;
33912
+ /**
33913
+ * @description Free text search that approximately matches the specified string against string fields and map keys/values.
33914
+ *
33915
+ * The search is case-insensitive and uses pattern matching to find entities containing the text.
33916
+ *
33917
+ * Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields.
33918
+ *
33919
+ * For map fields (like Labels and Annotations), the search matches both map keys and values.
33920
+ *
33921
+ * The search uses OR logic across all searchable fields, so matching any field will return the entity.
33922
+ *
33923
+ * If both 'where' and 'contains' parameters are specified, they are combined with AND logic.
33924
+ *
33925
+ * Searchable fields for Unit include string and map-type attributes from the queryable attributes list.
33926
+ *
33927
+ * The whole string must be query-encoded.
33928
+ */
33929
+ contains?: string;
33930
+ /**
33931
+ * @description Include clause for expanding related entities in the response for Unit.
33932
+ * The attribute names are case-sensitive, PascalCase, and
33933
+ * expected in a comma-separated list format as in the JSON encoding.
33934
+ *
33935
+ * Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastReleasedRevisionNum, OrganizationID, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID.
33936
+ *
33937
+ * The whole string must be query-encoded.
33938
+ */
33939
+ include?: string;
33940
+ /** @description Report what the move would do, and what would stop it, without moving anything */
33941
+ dry_run?: boolean;
33942
+ };
33943
+ header?: never;
33944
+ path?: never;
33945
+ cookie?: never;
33946
+ };
33947
+ requestBody?: {
33948
+ content: {
33949
+ "application/json": components["schemas"]["UnitMoveRequest"];
33950
+ };
33951
+ };
33952
+ responses: {
33953
+ /** @description OK */
33954
+ 200: {
33955
+ headers: {
33956
+ [name: string]: unknown;
33957
+ };
33958
+ content: {
33959
+ "application/json": components["schemas"]["UnitMoveResponse"][];
33960
+ };
33961
+ };
33962
+ /** @description Multi-Status: nothing was moved, or some Units moved and others did not */
33963
+ 207: {
33964
+ headers: {
33965
+ [name: string]: unknown;
33966
+ };
33967
+ content: {
33968
+ "application/json": components["schemas"]["UnitMoveResponse"][];
33969
+ };
33970
+ };
33971
+ /** @description Unit request is invalid (Bad Request). */
33972
+ 400: {
33973
+ headers: {
33974
+ [name: string]: unknown;
33975
+ };
33976
+ content: {
33977
+ "application/json": components["schemas"]["StandardErrorResponse"];
33978
+ };
33979
+ };
33980
+ /** @description Unauthorized access. */
33981
+ 401: {
33982
+ headers: {
33983
+ [name: string]: unknown;
33984
+ };
33985
+ content: {
33986
+ "application/json": components["schemas"]["StandardErrorResponse"];
33987
+ };
33988
+ };
33989
+ /** @description Forbidden access. */
33990
+ 403: {
33991
+ headers: {
33992
+ [name: string]: unknown;
33993
+ };
33994
+ content: {
33995
+ "application/json": components["schemas"]["StandardErrorResponse"];
33996
+ };
33997
+ };
33998
+ /** @description Unit not found. */
33999
+ 404: {
34000
+ headers: {
34001
+ [name: string]: unknown;
34002
+ };
34003
+ content: {
34004
+ "application/json": components["schemas"]["StandardErrorResponse"];
34005
+ };
34006
+ };
34007
+ /** @description Unit data conflict. Data has changed since last read. */
34008
+ 409: {
34009
+ headers: {
34010
+ [name: string]: unknown;
34011
+ };
34012
+ content: {
34013
+ "application/json": components["schemas"]["StandardErrorResponse"];
34014
+ };
34015
+ };
34016
+ /** @description Something went wrong while processing Unit. */
34017
+ 500: {
34018
+ headers: {
34019
+ [name: string]: unknown;
34020
+ };
34021
+ content: {
34022
+ "application/json": components["schemas"]["StandardErrorResponse"];
34023
+ };
34024
+ };
34025
+ /** @description Unexpected error. */
34026
+ default: {
34027
+ headers: {
34028
+ [name: string]: unknown;
34029
+ };
34030
+ content: {
34031
+ "application/json": components["schemas"]["StandardErrorResponse"];
34032
+ };
34033
+ };
34034
+ };
34035
+ };
33809
34036
  BulkTagUnits: {
33810
34037
  parameters: {
33811
34038
  query?: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@confighub/api",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Typed, framework-agnostic client for the ConfigHub API",
5
5
  "license": "MIT",
6
6
  "repository": {