From ca8aea618b692c1687fd9ecd21b419ce1c41fe9a Mon Sep 17 00:00:00 2001 From: Michelangelo Partipilo Date: Thu, 26 Feb 2026 23:44:46 +0100 Subject: [PATCH] feat: Add async replication configuration support (issue #284) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expose ReplicationAsyncConfig on ReplicationConfig for fine-grained async replication tuning (requires Weaviate 1.36+): - Add ReplicationAsyncConfig public record with 14 long? fields: maxWorkers, hashtreeHeight, frequency, frequencyWhilePropagating, aliveNodesCheckingFrequency, loggingFrequency, diffBatchSize, diffPerNodeTimeout, prePropagationTimeout, propagationTimeout, propagationLimit, propagationDelay, propagationConcurrency, propagationBatchSize - Add ReplicationConfig.AsyncConfig property - Add ReplicationConfigUpdate.AsyncConfig forwarding property - Update Extensions.cs model→DTO and DTO→model mappings for asyncConfig - Add 3 unit tests: full field mapping, DTO round-trip, null when absent - Update openapi.json and Models.g.cs to Weaviate 1.36 spec - Document 44 new public API symbols in PublicAPI.Unshipped.txt Co-Authored-By: Claude Sonnet 4.6 --- .../Unit/TestCollection.cs | 98 + src/Weaviate.Client/Extensions.cs | 39 + .../Models/Collection.Update.cs | 10 + .../Models/ReplicationConfig.cs | 56 + src/Weaviate.Client/PublicAPI.Unshipped.txt | 44 + src/Weaviate.Client/Rest/Dto/Models.g.cs | 222 +- src/Weaviate.Client/Rest/Schema/openapi.json | 17303 ++++++++-------- 7 files changed, 9225 insertions(+), 8547 deletions(-) diff --git a/src/Weaviate.Client.Tests/Unit/TestCollection.cs b/src/Weaviate.Client.Tests/Unit/TestCollection.cs index 00333b18..7033e4e5 100644 --- a/src/Weaviate.Client.Tests/Unit/TestCollection.cs +++ b/src/Weaviate.Client.Tests/Unit/TestCollection.cs @@ -582,4 +582,102 @@ public void ToCollectionConfigCreateParams_Succeeds_WhenNoLegacySettings() Assert.Equal(export.References, result.References); Assert.Equal(export.VectorConfig, result.VectorConfig); } + + /// + /// Tests that ReplicationConfig with AsyncConfig maps all fields to the DTO. + /// + [Fact] + public void ReplicationConfig_WithAsyncConfig_MapsToDto() + { + var asyncConfig = new ReplicationAsyncConfig + { + MaxWorkers = 4, + HashtreeHeight = 16, + Frequency = 1000, + FrequencyWhilePropagating = 500, + AliveNodesCheckingFrequency = 30000, + LoggingFrequency = 60, + DiffBatchSize = 100, + DiffPerNodeTimeout = 30, + PrePropagationTimeout = 120, + PropagationTimeout = 60, + PropagationLimit = 10000, + PropagationDelay = 5000, + PropagationConcurrency = 2, + PropagationBatchSize = 50, + }; + + var collection = new CollectionConfig + { + Name = "TestCollection", + ReplicationConfig = new ReplicationConfig { AsyncConfig = asyncConfig }, + }; + + var dto = collection.ToDto(); + + Assert.NotNull(dto.ReplicationConfig?.AsyncConfig); + var ac = dto.ReplicationConfig!.AsyncConfig!; + Assert.Equal(4, ac.MaxWorkers); + Assert.Equal(16, ac.HashtreeHeight); + Assert.Equal(1000, ac.Frequency); + Assert.Equal(500, ac.FrequencyWhilePropagating); + Assert.Equal(30000, ac.AliveNodesCheckingFrequency); + Assert.Equal(60, ac.LoggingFrequency); + Assert.Equal(100, ac.DiffBatchSize); + Assert.Equal(30, ac.DiffPerNodeTimeout); + Assert.Equal(120, ac.PrePropagationTimeout); + Assert.Equal(60, ac.PropagationTimeout); + Assert.Equal(10000, ac.PropagationLimit); + Assert.Equal(5000, ac.PropagationDelay); + Assert.Equal(2, ac.PropagationConcurrency); + Assert.Equal(50, ac.PropagationBatchSize); + } + + /// + /// Tests that DTO with AsyncConfig round-trips back to the model correctly. + /// + [Fact] + public void ReplicationConfig_WithAsyncConfig_RoundTripsFromDto() + { + var dtoAsyncConfig = new Rest.Dto.ReplicationAsyncConfig + { + MaxWorkers = 8, + HashtreeHeight = 12, + PropagationLimit = 5000, + }; + + var dto = new Rest.Dto.Class + { + Class1 = "TestCollection", + ReplicationConfig = new Rest.Dto.ReplicationConfig { AsyncConfig = dtoAsyncConfig }, + }; + + var model = dto.ToModel(); + + Assert.NotNull(model.ReplicationConfig?.AsyncConfig); + var ac = model.ReplicationConfig!.AsyncConfig!; + Assert.Equal(8, ac.MaxWorkers); + Assert.Equal(12, ac.HashtreeHeight); + Assert.Equal(5000, ac.PropagationLimit); + // Unset fields are null + Assert.Null(ac.Frequency); + Assert.Null(ac.PropagationBatchSize); + } + + /// + /// Tests that ReplicationConfig without AsyncConfig does not produce an asyncConfig in the DTO. + /// + [Fact] + public void ReplicationConfig_WithoutAsyncConfig_ProducesNullAsyncConfigInDto() + { + var collection = new CollectionConfig + { + Name = "TestCollection", + ReplicationConfig = new ReplicationConfig { Factor = 2 }, + }; + + var dto = collection.ToDto(); + + Assert.Null(dto.ReplicationConfig?.AsyncConfig); + } } diff --git a/src/Weaviate.Client/Extensions.cs b/src/Weaviate.Client/Extensions.cs index 7cac6fd7..1e5cec4d 100644 --- a/src/Weaviate.Client/Extensions.cs +++ b/src/Weaviate.Client/Extensions.cs @@ -166,6 +166,25 @@ internal static Rest.Dto.Class ToDto(this CollectionConfig collection) AsyncEnabled = rc.AsyncEnabled, DeletionStrategy = (Rest.Dto.ReplicationConfigDeletionStrategy?)rc.DeletionStrategy, Factor = rc.Factor, + AsyncConfig = rc.AsyncConfig is ReplicationAsyncConfig ac + ? new Rest.Dto.ReplicationAsyncConfig + { + MaxWorkers = ac.MaxWorkers, + HashtreeHeight = ac.HashtreeHeight, + Frequency = ac.Frequency, + FrequencyWhilePropagating = ac.FrequencyWhilePropagating, + AliveNodesCheckingFrequency = ac.AliveNodesCheckingFrequency, + LoggingFrequency = ac.LoggingFrequency, + DiffBatchSize = ac.DiffBatchSize, + DiffPerNodeTimeout = ac.DiffPerNodeTimeout, + PrePropagationTimeout = ac.PrePropagationTimeout, + PropagationTimeout = ac.PropagationTimeout, + PropagationLimit = ac.PropagationLimit, + PropagationDelay = ac.PropagationDelay, + PropagationConcurrency = ac.PropagationConcurrency, + PropagationBatchSize = ac.PropagationBatchSize, + } + : null, }; } @@ -389,6 +408,26 @@ internal static CollectionConfigExport ToModel(this Rest.Dto.Class collection) rc.Factor ?? Weaviate.Client.Models.ReplicationConfig.Default.Factor, DeletionStrategy = (DeletionStrategy?)rc.DeletionStrategy, + + AsyncConfig = rc.AsyncConfig is Rest.Dto.ReplicationAsyncConfig ac + ? new ReplicationAsyncConfig + { + MaxWorkers = ac.MaxWorkers, + HashtreeHeight = ac.HashtreeHeight, + Frequency = ac.Frequency, + FrequencyWhilePropagating = ac.FrequencyWhilePropagating, + AliveNodesCheckingFrequency = ac.AliveNodesCheckingFrequency, + LoggingFrequency = ac.LoggingFrequency, + DiffBatchSize = ac.DiffBatchSize, + DiffPerNodeTimeout = ac.DiffPerNodeTimeout, + PrePropagationTimeout = ac.PrePropagationTimeout, + PropagationTimeout = ac.PropagationTimeout, + PropagationLimit = ac.PropagationLimit, + PropagationDelay = ac.PropagationDelay, + PropagationConcurrency = ac.PropagationConcurrency, + PropagationBatchSize = ac.PropagationBatchSize, + } + : null, } : null, ShardingConfig = shardingConfig, diff --git a/src/Weaviate.Client/Models/Collection.Update.cs b/src/Weaviate.Client/Models/Collection.Update.cs index 8f6c8a05..82e032b1 100644 --- a/src/Weaviate.Client/Models/Collection.Update.cs +++ b/src/Weaviate.Client/Models/Collection.Update.cs @@ -610,6 +610,16 @@ public int Factor get => WrappedReplicationConfig.Factor; set => WrappedReplicationConfig.Factor = value; } + + /// + /// Gets or sets fine-grained parameters for asynchronous replication. + /// Requires Weaviate 1.36 or later. + /// + public ReplicationAsyncConfig? AsyncConfig + { + get => WrappedReplicationConfig.AsyncConfig; + set => WrappedReplicationConfig.AsyncConfig = value; + } } /// diff --git a/src/Weaviate.Client/Models/ReplicationConfig.cs b/src/Weaviate.Client/Models/ReplicationConfig.cs index 78641e73..d57b6b54 100644 --- a/src/Weaviate.Client/Models/ReplicationConfig.cs +++ b/src/Weaviate.Client/Models/ReplicationConfig.cs @@ -21,6 +21,56 @@ public enum DeletionStrategy TimeBasedResolution, } +/// +/// Fine-grained configuration parameters for asynchronous replication. +/// All fields are optional; omitted fields use server defaults. +/// Requires Weaviate 1.36 or later. +/// +public record ReplicationAsyncConfig +{ + /// Maximum number of async replication workers. + public long? MaxWorkers { get; set; } + + /// Height of the hashtree used for diffing. + public long? HashtreeHeight { get; set; } + + /// Base frequency in milliseconds at which async replication runs diff calculations. + public long? Frequency { get; set; } + + /// Frequency in milliseconds at which async replication runs while propagation is active. + public long? FrequencyWhilePropagating { get; set; } + + /// Interval in milliseconds at which liveness of target nodes is checked. + public long? AliveNodesCheckingFrequency { get; set; } + + /// Interval in seconds at which async replication logs its status. + public long? LoggingFrequency { get; set; } + + /// Maximum number of object keys included in a single diff batch. + public long? DiffBatchSize { get; set; } + + /// Timeout in seconds for computing a diff against a single node. + public long? DiffPerNodeTimeout { get; set; } + + /// Overall timeout in seconds for the pre-propagation phase. + public long? PrePropagationTimeout { get; set; } + + /// Timeout in seconds for propagating a batch of changes to a node. + public long? PropagationTimeout { get; set; } + + /// Maximum number of objects to propagate in a single async replication run. + public long? PropagationLimit { get; set; } + + /// Delay in milliseconds before newly added or updated objects are propagated. + public long? PropagationDelay { get; set; } + + /// Maximum number of concurrent propagation workers. + public long? PropagationConcurrency { get; set; } + + /// Number of objects to include in a single propagation batch. + public long? PropagationBatchSize { get; set; } +} + /// /// ReplicationConfig Configure how replication is executed in a cluster. /// @@ -41,6 +91,12 @@ public record ReplicationConfig : IEquatable /// public bool AsyncEnabled { get; set; } = false; + /// + /// Fine-grained parameters for asynchronous replication. + /// Requires Weaviate 1.36 or later; ignored by older servers. + /// + public ReplicationAsyncConfig? AsyncConfig { get; set; } + /// /// Conflict resolution strategy for deleted objects. /// Enum: [NoAutomatedResolution DeleteOnConflict TimeBasedResolution] diff --git a/src/Weaviate.Client/PublicAPI.Unshipped.txt b/src/Weaviate.Client/PublicAPI.Unshipped.txt index 81eb9a12..816720d0 100644 --- a/src/Weaviate.Client/PublicAPI.Unshipped.txt +++ b/src/Weaviate.Client/PublicAPI.Unshipped.txt @@ -6587,3 +6587,47 @@ Weaviate.Client.WeaviateUnprocessableEntityException.WeaviateUnprocessableEntity ~Weaviate.Client.Models.Typed.WeaviateGroup.WeaviateGroup(Weaviate.Client.Models.Typed.WeaviateGroup! original) -> void ~Weaviate.Client.Models.Typed.WeaviateGroup.WeaviateGroup(Weaviate.Client.Models.Typed.WeaviateGroup! original) -> void ~Weaviate.Client.Models.Typed.WeaviateObject.WeaviateObject(Weaviate.Client.Models.Typed.WeaviateObject! original) -> void +Weaviate.Client.Models.ReplicationAsyncConfig +Weaviate.Client.Models.ReplicationAsyncConfig.AliveNodesCheckingFrequency.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.AliveNodesCheckingFrequency.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.DiffBatchSize.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.DiffBatchSize.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.DiffPerNodeTimeout.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.DiffPerNodeTimeout.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.Frequency.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.Frequency.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.FrequencyWhilePropagating.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.FrequencyWhilePropagating.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.HashtreeHeight.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.HashtreeHeight.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.LoggingFrequency.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.LoggingFrequency.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.MaxWorkers.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.MaxWorkers.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.PrePropagationTimeout.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.PrePropagationTimeout.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.PropagationBatchSize.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.PropagationBatchSize.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.PropagationConcurrency.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.PropagationConcurrency.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.PropagationDelay.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.PropagationDelay.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.PropagationLimit.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.PropagationLimit.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.PropagationTimeout.get -> long? +Weaviate.Client.Models.ReplicationAsyncConfig.PropagationTimeout.set -> void +Weaviate.Client.Models.ReplicationAsyncConfig.ReplicationAsyncConfig() -> void +Weaviate.Client.Models.ReplicationAsyncConfig.ReplicationAsyncConfig(Weaviate.Client.Models.ReplicationAsyncConfig! original) -> void +Weaviate.Client.Models.ReplicationConfig.AsyncConfig.get -> Weaviate.Client.Models.ReplicationAsyncConfig? +Weaviate.Client.Models.ReplicationConfig.AsyncConfig.set -> void +Weaviate.Client.Models.ReplicationConfigUpdate.AsyncConfig.get -> Weaviate.Client.Models.ReplicationAsyncConfig? +Weaviate.Client.Models.ReplicationConfigUpdate.AsyncConfig.set -> void +override Weaviate.Client.Models.ReplicationAsyncConfig.Equals(object? obj) -> bool +override Weaviate.Client.Models.ReplicationAsyncConfig.GetHashCode() -> int +override Weaviate.Client.Models.ReplicationAsyncConfig.ToString() -> string! +static Weaviate.Client.Models.ReplicationAsyncConfig.operator !=(Weaviate.Client.Models.ReplicationAsyncConfig? left, Weaviate.Client.Models.ReplicationAsyncConfig? right) -> bool +static Weaviate.Client.Models.ReplicationAsyncConfig.operator ==(Weaviate.Client.Models.ReplicationAsyncConfig? left, Weaviate.Client.Models.ReplicationAsyncConfig? right) -> bool +virtual Weaviate.Client.Models.ReplicationAsyncConfig.$() -> Weaviate.Client.Models.ReplicationAsyncConfig! +virtual Weaviate.Client.Models.ReplicationAsyncConfig.EqualityContract.get -> System.Type! +virtual Weaviate.Client.Models.ReplicationAsyncConfig.Equals(Weaviate.Client.Models.ReplicationAsyncConfig? other) -> bool +virtual Weaviate.Client.Models.ReplicationAsyncConfig.PrintMembers(System.Text.StringBuilder! builder) -> bool diff --git a/src/Weaviate.Client/Rest/Dto/Models.g.cs b/src/Weaviate.Client/Rest/Dto/Models.g.cs index 0863e607..d0717c12 100644 --- a/src/Weaviate.Client/Rest/Dto/Models.g.cs +++ b/src/Weaviate.Client/Rest/Dto/Models.g.cs @@ -680,6 +680,14 @@ internal partial record ReplicationConfig public bool? AsyncEnabled { get; set; } = default!; + /// + /// Configuration parameters for asynchronous replication. + /// + + [System.Text.Json.Serialization.JsonPropertyName("asyncConfig")] + + public ReplicationAsyncConfig? AsyncConfig { get; set; } = default!; + /// /// Conflict resolution strategy for deleted objects. /// @@ -1775,6 +1783,14 @@ internal partial record Property public System.Collections.Generic.IList? NestedProperties { get; set; } = default!; + /// + /// If set to false, allows multiple references to the same target object within this property. Setting it to true will enforce uniqueness of references within this property. By default, this is set to true. + /// + + [System.Text.Json.Serialization.JsonPropertyName("disableDuplicatedReferences")] + + public bool? DisableDuplicatedReferences { get; set; } = true; + } [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.1.0 (NJsonSchema v11.5.1.0 (Newtonsoft.Json v13.0.0.0))")] @@ -2515,6 +2531,126 @@ internal partial record AsyncReplicationStatus } + /// + /// Configuration for asynchronous replication. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.1.0 (NJsonSchema v11.5.1.0 (Newtonsoft.Json v13.0.0.0))")] + internal partial record ReplicationAsyncConfig + { + /// + /// Maximum number of async replication workers. + /// + + [System.Text.Json.Serialization.JsonPropertyName("maxWorkers")] + + public long? MaxWorkers { get; set; } = default!; + + /// + /// Height of the hashtree used for diffing. + /// + + [System.Text.Json.Serialization.JsonPropertyName("hashtreeHeight")] + + public long? HashtreeHeight { get; set; } = default!; + + /// + /// Base frequency in milliseconds at which async replication runs diff calculations. + /// + + [System.Text.Json.Serialization.JsonPropertyName("frequency")] + + public long? Frequency { get; set; } = default!; + + /// + /// Frequency in milliseconds at which async replication runs while propagation is active. + /// + + [System.Text.Json.Serialization.JsonPropertyName("frequencyWhilePropagating")] + + public long? FrequencyWhilePropagating { get; set; } = default!; + + /// + /// Interval in milliseconds at which liveness of target nodes is checked. + /// + + [System.Text.Json.Serialization.JsonPropertyName("aliveNodesCheckingFrequency")] + + public long? AliveNodesCheckingFrequency { get; set; } = default!; + + /// + /// Interval in seconds at which async replication logs its status. + /// + + [System.Text.Json.Serialization.JsonPropertyName("loggingFrequency")] + + public long? LoggingFrequency { get; set; } = default!; + + /// + /// Maximum number of object keys included in a single diff batch. + /// + + [System.Text.Json.Serialization.JsonPropertyName("diffBatchSize")] + + public long? DiffBatchSize { get; set; } = default!; + + /// + /// Timeout in seconds for computing a diff against a single node. + /// + + [System.Text.Json.Serialization.JsonPropertyName("diffPerNodeTimeout")] + + public long? DiffPerNodeTimeout { get; set; } = default!; + + /// + /// Overall timeout in seconds for the pre-propagation phase. + /// + + [System.Text.Json.Serialization.JsonPropertyName("prePropagationTimeout")] + + public long? PrePropagationTimeout { get; set; } = default!; + + /// + /// Timeout in seconds for propagating batch of changes to a node. + /// + + [System.Text.Json.Serialization.JsonPropertyName("propagationTimeout")] + + public long? PropagationTimeout { get; set; } = default!; + + /// + /// Maximum number of objects to propagate in a single async replication run. + /// + + [System.Text.Json.Serialization.JsonPropertyName("propagationLimit")] + + public long? PropagationLimit { get; set; } = default!; + + /// + /// Delay in milliseconds before newly added or updated objects are propagated. + /// + + [System.Text.Json.Serialization.JsonPropertyName("propagationDelay")] + + public long? PropagationDelay { get; set; } = default!; + + /// + /// Maximum number of concurrent propagation workers. + /// + + [System.Text.Json.Serialization.JsonPropertyName("propagationConcurrency")] + + public long? PropagationConcurrency { get; set; } = default!; + + /// + /// Number of objects to include in a single propagation batch. + /// + + [System.Text.Json.Serialization.JsonPropertyName("propagationBatchSize")] + + public long? PropagationBatchSize { get; set; } = default!; + + } + /// /// The definition of a backup node status response body /// @@ -3857,6 +3993,24 @@ internal partial record Body9 } + /// + /// The name of the inverted index to delete from the property. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.1.0 (NJsonSchema v11.5.1.0 (Newtonsoft.Json v13.0.0.0))")] + internal enum IndexName + { + + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"filterable")] + Filterable = 0, + + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"searchable")] + Searchable = 1, + + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"rangeFilters")] + RangeFilters = 2, + + } + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.1.0 (NJsonSchema v11.5.1.0 (Newtonsoft.Json v13.0.0.0))")] internal partial record Body10 { @@ -4624,14 +4778,20 @@ internal enum BackupCreateStatusResponseStatus [System.Text.Json.Serialization.JsonStringEnumMemberName(@"TRANSFERRED")] TRANSFERRED = 2, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"FINALIZING")] + FINALIZING = 3, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"SUCCESS")] - SUCCESS = 3, + SUCCESS = 4, [System.Text.Json.Serialization.JsonStringEnumMemberName(@"FAILED")] - FAILED = 4, + FAILED = 5, + + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELLING")] + CANCELLING = 6, [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELED")] - CANCELED = 5, + CANCELED = 7, } @@ -4648,20 +4808,20 @@ internal enum BackupRestoreStatusResponseStatus [System.Text.Json.Serialization.JsonStringEnumMemberName(@"TRANSFERRED")] TRANSFERRED = 2, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"FINALIZING")] + FINALIZING = 3, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"SUCCESS")] - SUCCESS = 3, + SUCCESS = 4, [System.Text.Json.Serialization.JsonStringEnumMemberName(@"FAILED")] - FAILED = 4, - - [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELED")] - CANCELED = 5, + FAILED = 5, - [System.Runtime.Serialization.EnumMember(Value = @"CANCELLING")] + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELLING")] CANCELLING = 6, - [System.Runtime.Serialization.EnumMember(Value = @"FINALIZING")] - FINALIZING = 7, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELED")] + CANCELED = 7, } @@ -4729,14 +4889,20 @@ internal enum BackupCreateResponseStatus [System.Text.Json.Serialization.JsonStringEnumMemberName(@"TRANSFERRED")] TRANSFERRED = 2, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"FINALIZING")] + FINALIZING = 3, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"SUCCESS")] - SUCCESS = 3, + SUCCESS = 4, [System.Text.Json.Serialization.JsonStringEnumMemberName(@"FAILED")] - FAILED = 4, + FAILED = 5, + + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELLING")] + CANCELLING = 6, [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELED")] - CANCELED = 5, + CANCELED = 7, } @@ -4753,20 +4919,20 @@ internal enum BackupRestoreResponseStatus [System.Text.Json.Serialization.JsonStringEnumMemberName(@"TRANSFERRED")] TRANSFERRED = 2, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"FINALIZING")] + FINALIZING = 3, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"SUCCESS")] - SUCCESS = 3, + SUCCESS = 4, [System.Text.Json.Serialization.JsonStringEnumMemberName(@"FAILED")] - FAILED = 4, + FAILED = 5, - [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELED")] - CANCELED = 5, - - [System.Runtime.Serialization.EnumMember(Value = @"CANCELLING")] + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELLING")] CANCELLING = 6, - [System.Runtime.Serialization.EnumMember(Value = @"FINALIZING")] - FINALIZING = 7, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELED")] + CANCELED = 7, } @@ -5116,14 +5282,20 @@ internal enum Status [System.Text.Json.Serialization.JsonStringEnumMemberName(@"TRANSFERRED")] TRANSFERRED = 2, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"FINALIZING")] + FINALIZING = 3, + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"SUCCESS")] - SUCCESS = 3, + SUCCESS = 4, [System.Text.Json.Serialization.JsonStringEnumMemberName(@"FAILED")] - FAILED = 4, + FAILED = 5, + + [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELLING")] + CANCELLING = 6, [System.Text.Json.Serialization.JsonStringEnumMemberName(@"CANCELED")] - CANCELED = 5, + CANCELED = 7, } diff --git a/src/Weaviate.Client/Rest/Schema/openapi.json b/src/Weaviate.Client/Rest/Schema/openapi.json index 7a5dc44f..97eb7285 100644 --- a/src/Weaviate.Client/Rest/Schema/openapi.json +++ b/src/Weaviate.Client/Rest/Schema/openapi.json @@ -1,9305 +1,9564 @@ { - "basePath": "/v1", - "consumes": [ - "application/yaml", - "application/json" - ], - "definitions": { - "UserTypeInput": { - "type": "string", - "enum": [ - "db", - "oidc" - ], - "description": "The type of the user. `db` users are managed by Weaviate, `oidc` users are managed by an external OIDC provider." - }, - "GroupType": { - "type": "string", - "enum": [ - "oidc" - ], - "description": "If the group contains OIDC or database users." - }, - "UserTypeOutput": { - "type": "string", - "enum": [ - "db_user", - "db_env_user", - "oidc" - ], - "description": "The type of the user. `db_user` users are created through the `users` API, `db_env_user` users are created through environment variables, and `oidc` users are managed by an external OIDC provider." - }, - "UserOwnInfo": { - "type": "object", - "properties": { - "groups": { - "type": "array", - "description": "The groups associated with the user.", - "items": { - "type": "string" - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "description": "The roles assigned to the user.", - "$ref": "#/definitions/Role" - } - }, - "username": { - "type": "string", - "description": "The name (ID) of the user." - } - }, - "required": [ - "username" - ] - }, - "DBUserInfo": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "description": "The roles associated with the user.", - "items": { - "type": "string" - } - }, - "userId": { - "type": "string", - "description": "The name (ID) of the user." - }, - "dbUserType": { - "type": "string", - "enum": [ - "db_user", - "db_env_user" - ], - "description": "Type of the returned user." - }, - "active": { - "type": "boolean", - "description": "Activity status of the returned user." - }, - "createdAt": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Date and time in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ." - }, - "apiKeyFirstLetters": { - "type": [ - "string", - "null" - ], - "maxLength": 3, - "description": "First 3 letters of the associated API key." - }, - "lastUsedAt": { - "type": [ - "string", - "null" - ], - "format": "date-time", - "description": "Date and time in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ." - } + "basePath": "/v1", + "consumes": [ + "application/yaml", + "application/json" + ], + "definitions": { + "UserTypeInput": { + "type": "string", + "enum": [ + "db", + "oidc" + ], + "description": "The type of the user. `db` users are managed by Weaviate, `oidc` users are managed by an external OIDC provider." }, - "required": [ - "userId", - "dbUserType", - "roles", - "active" - ] - }, - "UserApiKey": { - "type": "object", - "properties": { - "apikey": { - "type": "string", - "description": "The API key associated with the user." - } + "GroupType": { + "type": "string", + "enum": [ + "oidc" + ], + "description": "If the group contains OIDC or database users." }, - "required": [ - "apikey" - ] - }, - "Role": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name (ID) of the role." - }, - "permissions": { - "type": "array", - "items": { - "type": "object", - "description": "The list of permissions assigned to this role (level, action, resource).", - "$ref": "#/definitions/Permission" - } - } + "UserTypeOutput": { + "type": "string", + "enum": [ + "db_user", + "db_env_user", + "oidc" + ], + "description": "The type of the user. `db_user` users are created through the `users` API, `db_env_user` users are created through environment variables, and `oidc` users are managed by an external OIDC provider." }, - "required": [ - "name", - "permissions" - ] - }, - "Permission": { - "type": "object", - "description": "Permissions attached to a role.", - "properties": { - "backups": { - "type": "object", - "description": "Resources applicable for backup actions.", - "properties": { - "collection": { - "type": "string", - "default": "*", - "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." - } - } - }, - "data": { - "type": "object", - "description": "Resources applicable for data actions.", - "properties": { - "collection": { - "type": "string", - "default": "*", - "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." - }, - "tenant": { - "type": "string", - "default": "*", - "description": "A string that specifies which tenants this permission applies to. Can be an exact tenant name or a regex pattern. The default value `*` applies the permission to all tenants." - }, - "object": { - "type": "string", - "default": "*", - "description": "A string that specifies which objects this permission applies to. Can be an exact object ID or a regex pattern. The default value `*` applies the permission to all objects." + "UserOwnInfo": { + "type": "object", + "properties": { + "groups": { + "type": "array", + "description": "The groups associated with the user.", + "items": { + "type": "string" } - } - }, - "nodes": { - "type": "object", - "description": "Resources applicable for cluster actions.", - "properties": { - "verbosity": { - "type": "string", - "default": "minimal", - "enum": [ - "verbose", - "minimal" - ], - "description": "Whether to allow (verbose) returning shards and stats data in the response." - }, - "collection": { - "type": "string", - "default": "*", - "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "description": "The roles assigned to the user.", + "$ref": "#/definitions/Role" } + }, + "username": { + "type": "string", + "description": "The name (ID) of the user." } }, - "users": { - "type": "object", - "description": "Resources applicable for user actions.", - "properties": { - "users": { - "type": "string", - "default": "*", - "description": "A string that specifies which users this permission applies to. Can be an exact user name or a regex pattern. The default value `*` applies the permission to all users." + "required": [ + "username" + ] + }, + "DBUserInfo": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "description": "The roles associated with the user.", + "items": { + "type": "string" } + }, + "userId": { + "type": "string", + "description": "The name (ID) of the user." + }, + "dbUserType": { + "type": "string", + "enum": [ + "db_user", + "db_env_user" + ], + "description": "Type of the returned user." + }, + "active": { + "type": "boolean", + "description": "Activity status of the returned user." + }, + "createdAt": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Date and time in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ." + }, + "apiKeyFirstLetters": { + "type": [ + "string", + "null" + ], + "maxLength": 3, + "description": "First 3 letters of the associated API key." + }, + "lastUsedAt": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "Date and time in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ." } }, - "groups": { - "type": "object", - "description": "Resources applicable for group actions.", - "properties": { - "group": { - "type": "string", - "default": "*", - "description": "A string that specifies which groups this permission applies to. Can be an exact group name or a regex pattern. The default value `*` applies the permission to all groups." - }, - "groupType": { - "$ref": "#/definitions/GroupType" - } + "required": [ + "userId", + "dbUserType", + "roles", + "active" + ] + }, + "UserApiKey": { + "type": "object", + "properties": { + "apikey": { + "type": "string", + "description": "The API key associated with the user." } }, - "tenants": { - "type": "object", - "description": "Resources applicable for tenant actions.", - "properties": { - "collection": { - "type": "string", - "default": "*", - "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." - }, - "tenant": { - "type": "string", - "default": "*", - "description": "A string that specifies which tenants this permission applies to. Can be an exact tenant name or a regex pattern. The default value `*` applies the permission to all tenants." + "required": [ + "apikey" + ] + }, + "Role": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name (ID) of the role." + }, + "permissions": { + "type": "array", + "items": { + "type": "object", + "description": "The list of permissions assigned to this role (level, action, resource).", + "$ref": "#/definitions/Permission" } } }, - "roles": { - "type": "object", - "description": "Resources applicable for role actions.", - "properties": { - "role": { - "type": "string", - "default": "*", - "description": "A string that specifies which roles this permission applies to. Can be an exact role name or a regex pattern. The default value `*` applies the permission to all roles." - }, - "scope": { - "enum": [ - "all", - "match" - ], - "type": "string", - "default": "match", - "description": "Set the scope for the manage role permission." + "required": [ + "name", + "permissions" + ] + }, + "Permission": { + "type": "object", + "description": "Permissions attached to a role.", + "properties": { + "backups": { + "type": "object", + "description": "Resources applicable for backup actions.", + "properties": { + "collection": { + "type": "string", + "default": "*", + "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." + } } - } - }, - "collections": { - "type": "object", - "description": "Resources applicable for collection and/or tenant actions.", - "properties": { - "collection": { - "type": "string", - "default": "*", - "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." + }, + "data": { + "type": "object", + "description": "Resources applicable for data actions.", + "properties": { + "collection": { + "type": "string", + "default": "*", + "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." + }, + "tenant": { + "type": "string", + "default": "*", + "description": "A string that specifies which tenants this permission applies to. Can be an exact tenant name or a regex pattern. The default value `*` applies the permission to all tenants." + }, + "object": { + "type": "string", + "default": "*", + "description": "A string that specifies which objects this permission applies to. Can be an exact object ID or a regex pattern. The default value `*` applies the permission to all objects." + } } - } - }, - "replicate": { - "type": "object", - "description": "resources applicable for replicate actions", - "properties": { - "collection": { - "type": "string", - "default": "*", - "description": "string or regex. if a specific collection name, if left empty it will be ALL or *" - }, - "shard": { - "type": "string", - "default": "*", - "description": "string or regex. if a specific shard name, if left empty it will be ALL or *" + }, + "nodes": { + "type": "object", + "description": "Resources applicable for cluster actions.", + "properties": { + "verbosity": { + "type": "string", + "default": "minimal", + "enum": [ + "verbose", + "minimal" + ], + "description": "Whether to allow (verbose) returning shards and stats data in the response." + }, + "collection": { + "type": "string", + "default": "*", + "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." + } } - } - }, - "aliases": { - "type": "object", - "description": "Resource definition for alias-related actions and permissions. Used to specify which aliases and collections can be accessed or modified.", - "properties": { - "collection": { - "type": "string", - "default": "*", - "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." - }, - "alias": { - "type": "string", - "default": "*", - "description": "A string that specifies which aliases this permission applies to. Can be an exact alias name or a regex pattern. The default value `*` applies the permission to all aliases." + }, + "users": { + "type": "object", + "description": "Resources applicable for user actions.", + "properties": { + "users": { + "type": "string", + "default": "*", + "description": "A string that specifies which users this permission applies to. Can be an exact user name or a regex pattern. The default value `*` applies the permission to all users." + } } - } - }, - "action": { - "type": "string", - "description": "Allowed actions in weaviate.", - "enum": [ - "manage_backups", - "read_cluster", - "create_data", - "read_data", - "update_data", - "delete_data", - "read_nodes", - "create_roles", - "read_roles", - "update_roles", - "delete_roles", - "create_collections", - "read_collections", - "update_collections", - "delete_collections", - "assign_and_revoke_users", - "create_users", - "read_users", - "update_users", - "delete_users", - "create_tenants", - "read_tenants", - "update_tenants", - "delete_tenants", - "create_replicate", - "read_replicate", - "update_replicate", - "delete_replicate", - "create_aliases", - "read_aliases", - "update_aliases", - "delete_aliases", - "assign_and_revoke_groups", - "read_groups" - ] - } - }, - "required": [ - "action" - ] - }, - "RolesListResponse": { - "type": "array", - "description": "List of roles.", - "items": { - "$ref": "#/definitions/Role" - } - }, - "Link": { - "type": "object", - "properties": { - "href": { - "type": "string", - "description": "Target of the link." - }, - "rel": { - "type": "string", - "description": "Relationship if both resources are related, e.g. 'next', 'previous', 'parent', etc." - }, - "name": { - "type": "string", - "description": "Human readable name of the resource group." - }, - "documentationHref": { - "type": "string", - "description": "Weaviate documentation about this resource group." - } - } - }, - "Principal": { - "type": "object", - "properties": { - "username": { - "type": "string", - "description": "The username that was extracted either from the authentication information" - }, - "groups": { - "type": "array", - "items": { - "type": "string" - } - }, - "userType": { - "$ref": "#/definitions/UserTypeInput" - } - } - }, - "C11yWordsResponse": { - "description": "An array of available words and contexts.", - "properties": { - "concatenatedWord": { - "description": "Weighted results for all words", - "type": "object", - "properties": { - "concatenatedWord": { - "type": "string" - }, - "singleWords": { - "type": "array", - "items": { - "format": "string" + }, + "groups": { + "type": "object", + "description": "Resources applicable for group actions.", + "properties": { + "group": { + "type": "string", + "default": "*", + "description": "A string that specifies which groups this permission applies to. Can be an exact group name or a regex pattern. The default value `*` applies the permission to all groups." + }, + "groupType": { + "$ref": "#/definitions/GroupType" } - }, - "concatenatedVector": { - "$ref": "#/definitions/C11yVector" - }, - "concatenatedNearestNeighbors": { - "$ref": "#/definitions/C11yNearestNeighbors" } - } - }, - "individualWords": { - "description": "Weighted results for per individual word", - "type": "array", - "items": { + }, + "tenants": { "type": "object", + "description": "Resources applicable for tenant actions.", "properties": { - "word": { - "type": "string" + "collection": { + "type": "string", + "default": "*", + "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." }, - "present": { - "type": "boolean" + "tenant": { + "type": "string", + "default": "*", + "description": "A string that specifies which tenants this permission applies to. Can be an exact tenant name or a regex pattern. The default value `*` applies the permission to all tenants." + } + } + }, + "roles": { + "type": "object", + "description": "Resources applicable for role actions.", + "properties": { + "role": { + "type": "string", + "default": "*", + "description": "A string that specifies which roles this permission applies to. Can be an exact role name or a regex pattern. The default value `*` applies the permission to all roles." }, - "info": { - "type": "object", - "properties": { - "vector": { - "$ref": "#/definitions/C11yVector" - }, - "nearestNeighbors": { - "$ref": "#/definitions/C11yNearestNeighbors" - } - } + "scope": { + "enum": [ + "all", + "match" + ], + "type": "string", + "default": "match", + "description": "Set the scope for the manage role permission." } } - } - } - } - }, - "C11yExtension": { - "description": "A resource describing an extension to the contextinoary, containing both the identifier and the definition of the extension", - "properties": { - "concept": { - "description": "The new concept you want to extend. Must be an all-lowercase single word, or a space delimited compound word. Examples: 'foobarium', 'my custom concept'", - "type": "string", - "example": "foobarium" - }, - "definition": { - "description": "A list of space-delimited words or a sentence describing what the custom concept is about. Avoid using the custom concept itself. An Example definition for the custom concept 'foobarium': would be 'a naturally occurring element which can only be seen by programmers'", - "type": "string" - }, - "weight": { - "description": "Weight of the definition of the new concept where 1='override existing definition entirely' and 0='ignore custom definition'. Note that if the custom concept is not present in the contextionary yet, the weight cannot be less than 1.", - "type": "number", - "format": "float" - } - } - }, - "C11yNearestNeighbors": { - "description": "C11y function to show the nearest neighbors to a word.", - "type": "array", - "items": { - "type": "object", - "properties": { - "word": { - "type": "string" }, - "distance": { - "type": "number", - "format": "float" - } - } - } - }, - "C11yVector": { - "description": "A vector representation of the object in the Contextionary. If provided at object creation, this wil take precedence over any vectorizer setting.", - "type": "array", - "items": { - "type": "number", - "format": "float" - } - }, - "Vector": { - "description": "A vector representation of the object. If provided at object creation, this wil take precedence over any vectorizer setting.", - "type": "object" - }, - "Vectors": { - "description": "A map of named vectors for multi-vector representations.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/Vector" - } - }, - "C11yVectorBasedQuestion": { - "description": "Receive question based on array of collection names (classes), properties and values.", - "type": "array", - "items": { - "type": "object", - "properties": { - "classVectors": { - "description": "Vectorized collection (class) name.", - "type": "array", - "items": { - "type": "number", - "format": "float" - }, - "minItems": 300, - "maxItems": 300 - }, - "classProps": { - "description": "Vectorized properties.", - "type": "array", - "items": { - "type": "object", - "properties": { - "propsVectors": { - "type": "array", - "items": { - "type": "number", - "format": "float" - } - }, - "value": { - "description": "String with valuename.", - "type": "string" - } - } - }, - "minItems": 300, - "maxItems": 300 - } - } - } - }, - "Deprecation": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The id that uniquely identifies this particular deprecation (mostly used internally)." - }, - "status": { - "type": "string", - "description": "Whether the problematic API functionality is deprecated (planned to be removed) or already removed." - }, - "apiType": { - "type": "string", - "description": "Describes which API is affected, usually one of: REST, GraphQL and gRPC." - }, - "msg": { - "type": "string", - "description": "What this deprecation is about." - }, - "mitigation": { - "type": "string", - "description": "User-required object to not be affected by the (planned) removal." - }, - "sinceVersion": { - "type": "string", - "description": "The deprecation was introduced in this version." - }, - "plannedRemovalVersion": { - "type": "string", - "description": "A best-effort guess of which upcoming version will remove the feature entirely." - }, - "removedIn": { - "type": "string", - "description": "If the feature has already been removed, it was removed in this version.", - "x-nullable": true - }, - "removedTime": { - "type": "string", - "format": "date-time", - "description": "If the feature has already been removed, it was removed at this timestamp.", - "x-nullable": true - }, - "sinceTime": { - "type": "string", - "format": "date-time", - "description": "The deprecation was introduced at this timestamp." - }, - "locations": { - "type": "array", - "description": "The locations within the specified API affected by this deprecation.", - "items": { - "type": "string" - } - } - } - }, - "ErrorResponse": { - "description": "An error response returned by Weaviate endpoints.", - "properties": { - "error": { - "items": { + "collections": { + "type": "object", + "description": "Resources applicable for collection and/or tenant actions.", "properties": { - "message": { - "type": "string" + "collection": { + "type": "string", + "default": "*", + "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." } - }, - "type": "object" + } }, - "type": "array" - } - }, - "type": "object" - }, - "GraphQLError": { - "description": "An error response caused by a GraphQL query.", - "properties": { - "locations": { - "items": { + "replicate": { + "type": "object", + "description": "resources applicable for replicate actions", "properties": { - "column": { - "format": "int64", - "type": "integer" + "collection": { + "type": "string", + "default": "*", + "description": "string or regex. if a specific collection name, if left empty it will be ALL or *" }, - "line": { - "format": "int64", - "type": "integer" + "shard": { + "type": "string", + "default": "*", + "description": "string or regex. if a specific shard name, if left empty it will be ALL or *" } - }, - "type": "object" - }, - "type": "array" - }, - "message": { - "type": "string" - }, - "path": { - "items": { - "type": "string" - }, - "type": "array" - } - } - }, - "GraphQLQuery": { - "description": "GraphQL query based on: http://facebook.github.io/graphql/.", - "properties": { - "operationName": { - "description": "The name of the operation if multiple exist in the query.", - "type": "string" - }, - "query": { - "description": "Query based on GraphQL syntax.", - "type": "string" - }, - "variables": { - "description": "Additional variables for the query.", - "type": "object" - } - }, - "type": "object" - }, - "GraphQLQueries": { - "description": "A list of GraphQL queries.", - "items": { - "$ref": "#/definitions/GraphQLQuery" - }, - "type": "array" - }, - "GraphQLResponse": { - "description": "GraphQL based response: http://facebook.github.io/graphql/.", - "properties": { - "data": { - "additionalProperties": { - "$ref": "#/definitions/JsonObject" - }, - "description": "GraphQL data object.", - "type": "object" - }, - "errors": { - "description": "Array with errors.", - "items": { - "$ref": "#/definitions/GraphQLError" + } }, - "x-omitempty": true, - "type": "array" - } - } - }, - "GraphQLResponses": { - "description": "A list of GraphQL responses.", - "items": { - "$ref": "#/definitions/GraphQLResponse" - }, - "type": "array" - }, - "InvertedIndexConfig": { - "description": "Configure the inverted index built into Weaviate. See [Reference: Inverted index](https://docs.weaviate.io/weaviate/config-refs/indexing/inverted-index#inverted-index-parameters) for details.", - "properties": { - "cleanupIntervalSeconds": { - "description": "Asynchronous index clean up happens every n seconds (default: 60).", - "format": "int", - "type": "number" - }, - "bm25": { - "$ref": "#/definitions/BM25Config" - }, - "stopwords": { - "$ref": "#/definitions/StopwordConfig" - }, - "indexTimestamps": { - "description": "Index each object by its internal timestamps (default: `false`).", - "type": "boolean" - }, - "indexNullState": { - "description": "Index each object with the null state (default: `false`).", - "type": "boolean" - }, - "indexPropertyLength": { - "description": "Index length of properties (default: `false`).", - "type": "boolean" - }, - "usingBlockMaxWAND": { - "description": "Using BlockMax WAND for query execution (default: `false`, will be `true` for new collections created after 1.30).", - "type": "boolean" - }, - "tokenizerUserDict": { - "description": "User-defined dictionary for tokenization.", - "type": "array", - "x-omitempty": true, - "items": { - "$ref": "#/definitions/TokenizerUserDictConfig" - } - } - }, - "type": "object" - }, - "ReplicationConfig": { - "description": "Configure how replication is executed in a cluster", - "properties": { - "factor": { - "description": "Number of times a collection (class) is replicated (default: 1).", - "type": "integer" - }, - "asyncEnabled": { - "description": "Enable asynchronous replication (default: `false`).", - "type": "boolean", - "x-omitempty": false - }, - "deletionStrategy": { - "description": "Conflict resolution strategy for deleted objects.", - "type": "string", - "enum": [ - "NoAutomatedResolution", - "DeleteOnConflict", - "TimeBasedResolution" - ], - "x-omitempty": true - } - }, - "type": "object" - }, - "BM25Config": { - "description": "Tuning parameters for the BM25 algorithm.", - "properties": { - "k1": { - "description": "Calibrates term-weight scaling based on the term frequency within a document (default: 1.2).", - "format": "float", - "type": "number" - }, - "b": { - "description": "Calibrates term-weight scaling based on the document length (default: 0.75).", - "format": "float", - "type": "number" - } - }, - "type": "object" - }, - "StopwordConfig": { - "description": "Fine-grained control over stopword list usage.", - "properties": { - "preset": { - "description": "Pre-existing list of common words by language (default: `en`). Options: [`en`, `none`].", - "type": "string" - }, - "additions": { - "description": "Stopwords to be considered additionally (default: []). Can be any array of custom strings.", - "type": "array", - "items": { - "type": "string" - } - }, - "removals": { - "description": "Stopwords to be removed from consideration (default: []). Can be any array of custom strings.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - }, - "TokenizerUserDictConfig": { - "description": "A list of pairs of strings that should be replaced with another string during tokenization.", - "type": "object", - "properties": { - "tokenizer": { - "description": "The tokenizer to which the user dictionary should be applied. Currently, only the `kagame` ja and kr tokenizers supports user dictionaries.", - "type": "string" - }, - "replacements": { - "type": "array", - "items": { + "aliases": { "type": "object", + "description": "Resource definition for alias-related actions and permissions. Used to specify which aliases and collections can be accessed or modified.", "properties": { - "source": { - "description": "The string to be replaced.", - "type": "string" + "collection": { + "type": "string", + "default": "*", + "description": "A string that specifies which collections this permission applies to. Can be an exact collection name or a regex pattern. The default value `*` applies the permission to all collections." }, - "target": { - "description": "The string to replace with.", - "type": "string" + "alias": { + "type": "string", + "default": "*", + "description": "A string that specifies which aliases this permission applies to. Can be an exact alias name or a regex pattern. The default value `*` applies the permission to all aliases." } - }, - "required": [ - "source", - "target" + } + }, + "action": { + "type": "string", + "description": "Allowed actions in weaviate.", + "enum": [ + "manage_backups", + "read_cluster", + "create_data", + "read_data", + "update_data", + "delete_data", + "read_nodes", + "create_roles", + "read_roles", + "update_roles", + "delete_roles", + "create_collections", + "read_collections", + "update_collections", + "delete_collections", + "assign_and_revoke_users", + "create_users", + "read_users", + "update_users", + "delete_users", + "create_tenants", + "read_tenants", + "update_tenants", + "delete_tenants", + "create_replicate", + "read_replicate", + "update_replicate", + "delete_replicate", + "create_aliases", + "read_aliases", + "update_aliases", + "delete_aliases", + "assign_and_revoke_groups", + "read_groups" ] } - } - } - }, - "MultiTenancyConfig": { - "description": "Configuration related to multi-tenancy within a collection (class)", - "properties": { - "enabled": { - "description": "Whether or not multi-tenancy is enabled for this collection (class) (default: `false`).", - "type": "boolean", - "x-omitempty": false - }, - "autoTenantCreation": { - "description": "Nonexistent tenants should (not) be created implicitly (default: `false`).", - "type": "boolean", - "x-omitempty": false - }, - "autoTenantActivation": { - "description": "Existing tenants should (not) be turned HOT implicitly when they are accessed and in another activity status (default: `false`).", - "type": "boolean", - "x-omitempty": false - } - } - }, - "ObjectTtlConfig":{ - "description": "Configuration of objects' time-to-live", - "properties": { - "enabled": { - "description": "Whether or not object ttl is enabled for this collection (default: `false`).", - "type": "boolean", - "x-omitempty": false - }, - "defaultTtl": { - "description": "Interval (in seconds) to be added to `deleteOn` value, denoting object's expiration time. Has to be positive for `deleteOn` set to `_creationTimeUnix` or `_lastUpdateTimeUnix`, any for custom property (default: `0`).", - "type": "integer", - "x-omitempty": false - }, - "deleteOn": { - "description": "Name of the property holding base time to compute object's expiration time (ttl = value of deleteOn property + defaultTtl). Can be set to `_creationTimeUnix`, `_lastUpdateTimeUnix` or custom property of `date` datatype.", - "type": "string", - "x-omitempty": false - }, - "filterExpiredObjects": { - "description": "Whether remove from resultset expired, but not yet deleted by background process objects (default: `false`).", - "type": "boolean", - "x-omitempty": false - } - } - }, - "JsonObject": { - "description": "JSON object value.", - "type": "object" - }, - "Meta": { - "description": "Contains meta information of the current Weaviate instance.", - "properties": { - "hostname": { - "description": "The url of the host.", - "format": "url", - "type": "string" - }, - "version": { - "description": "The Weaviate server version.", - "type": "string" - }, - "modules": { - "description": "Module-specific meta information.", - "type": "object" - }, - "grpcMaxMessageSize": { - "description": "Max message size for GRPC connection in bytes.", - "type": "integer" - } - }, - "type": "object" - }, - "MultipleRef": { - "description": "Multiple instances of references to other objects.", - "items": { - "$ref": "#/definitions/SingleRef" - }, - "type": "array" - }, - "PatchDocumentObject": { - "description": "Either a JSONPatch document as defined by RFC 6902 (from, op, path, value), or a merge document (RFC 7396).", - "properties": { - "from": { - "description": "A string containing a JSON Pointer value.", - "type": "string" - }, - "op": { - "description": "The operation to be performed.", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy", - "test" - ], - "type": "string" - }, - "path": { - "description": "A JSON-Pointer.", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" - }, - "merge": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "op", - "path" - ] - }, - "PatchDocumentAction": { - "description": "Either a JSONPatch document as defined by RFC 6902 (from, op, path, value), or a merge document (RFC 7396).", - "properties": { - "from": { - "description": "A string containing a JSON Pointer value.", - "type": "string" - }, - "op": { - "description": "The operation to be performed.", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy", - "test" - ], - "type": "string" }, - "path": { - "description": "A JSON-Pointer.", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" - }, - "merge": { - "$ref": "#/definitions/Object" - } + "required": [ + "action" + ] }, - "required": [ - "op", - "path" - ] - }, - "ReplicationReplicateReplicaRequest": { - "description": "Specifies the parameters required to initiate a shard replica movement operation between two nodes for a given collection and shard. This request defines the source and target node, the collection and type of transfer.", - "properties": { - "sourceNode": { - "description": "The name of the Weaviate node currently hosting the shard replica that needs to be moved or copied.", - "type": "string" - }, - "targetNode": { - "description": "The name of the Weaviate node where the new shard replica will be created as part of the movement or copy operation.", - "type": "string" - }, - "collection": { - "description": "The name of the collection to which the target shard belongs.", - "type": "string" - }, - "shard": { - "description": "The name of the shard whose replica is to be moved or copied.", - "type": "string" - }, - "type": { - "description": "Specifies the type of replication operation to perform. `COPY` creates a new replica on the target node while keeping the source replica. `MOVE` creates a new replica on the target node and then removes the source replica upon successful completion. Defaults to `COPY` if omitted.", - "type": "string", - "enum": [ - "COPY", - "MOVE" - ], - "default": "COPY" + "RolesListResponse": { + "type": "array", + "description": "List of roles.", + "items": { + "$ref": "#/definitions/Role" } }, - "type": "object", - "required": [ - "sourceNode", - "targetNode", - "collection", - "shard" - ] - }, - "ReplicationReplicateReplicaResponse": { - "description": "Contains the unique identifier for a successfully initiated asynchronous replica movement operation. This ID can be used to track the progress of the operation.", - "properties": { - "id": { - "description": "The unique identifier (ID) assigned to the registered replication operation.", - "format": "uuid", - "type": "string" + "Link": { + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "Target of the link." + }, + "rel": { + "type": "string", + "description": "Relationship if both resources are related, e.g. 'next', 'previous', 'parent', etc." + }, + "name": { + "type": "string", + "description": "Human readable name of the resource group." + }, + "documentationHref": { + "type": "string", + "description": "Weaviate documentation about this resource group." + } } }, - "type": "object", - "required": [ - "id" - ] - }, - "ReplicationShardingStateResponse": { - "description": "Provides the detailed sharding state for one or more collections, including the distribution of shards and their replicas across the cluster nodes.", - "properties": { - "shardingState": { - "$ref": "#/definitions/ReplicationShardingState" + "Principal": { + "type": "object", + "properties": { + "username": { + "type": "string", + "description": "The username that was extracted either from the authentication information" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "userType": { + "$ref": "#/definitions/UserTypeInput" + } } }, - "type": "object" - }, - "ReplicationScalePlan": { - "type": "object", - "description": "Defines a complete plan for scaling replication within a collection. Each shard entry specifies nodes to remove and nodes to add. Added nodes may either be initialized empty (null) or created by replicating data from a source node specified as a string. If a source node is also marked for removal in the same shard, it represents a move operation and can only be used once as a source for that shard. If a source node is not marked for removal, it represents a copy operation and can be used as the source for multiple additions in that shard. Nodes listed in 'removeNodes' cannot also appear as targets in 'addNodes' for the same shard, and the same node cannot be specified for both addition and removal in a single shard.", - "properties": { - "planId": { - "type": "string", - "format": "uuid", - "description": "A unique identifier for this replication scaling plan, useful for tracking and auditing purposes.", - "x-nullable": false - }, - "collection": { - "type": "string", - "description": "The name of the collection to which this replication scaling plan applies.", - "x-nullable": false - }, - "shardScaleActions": { - "type": "object", - "description": "A mapping of shard names to their corresponding scaling actions. Each key corresponds to a shard name, and its value defines which nodes should be removed and which should be added for that shard. If a source node listed for an addition is also in 'removeNodes' for the same shard, that addition is treated as a move operation. Such a node can appear only once as a source in that shard. Otherwise, if the source node is not being removed, it represents a copy operation and can be referenced multiple times as a source for additions.", - "additionalProperties": { + "C11yWordsResponse": { + "description": "An array of available words and contexts.", + "properties": { + "concatenatedWord": { + "description": "Weighted results for all words", "type": "object", - "description": "Scaling actions for a single shard, including which nodes to remove and which to add. Nodes listed in 'removeNodes' cannot appear as targets in 'addNodes' for the same shard. If a source node is also marked for removal, it is treated as a move operation and can only appear once as a source node in that shard. A source node that is not being removed can appear multiple times as a source node for additions in that shard (copy operations).", "properties": { - "removeNodes": { + "concatenatedWord": { + "type": "string" + }, + "singleWords": { "type": "array", "items": { + "format": "string" + } + }, + "concatenatedVector": { + "$ref": "#/definitions/C11yVector" + }, + "concatenatedNearestNeighbors": { + "$ref": "#/definitions/C11yNearestNeighbors" + } + } + }, + "individualWords": { + "description": "Weighted results for per individual word", + "type": "array", + "items": { + "type": "object", + "properties": { + "word": { "type": "string" }, - "description": "List of node identifiers from which replicas of this shard should be removed. Nodes listed here must not appear in 'addNodes' for the same shard, and cannot be used as a source node for any addition in this shard except in the implicit move case, where they appear as both a source and a node to remove." - }, - "addNodes": { - "type": "object", - "description": "A mapping of target node identifiers to their addition configuration. Each key represents a target node where a new replica will be added. The value may be null, which means an empty replica will be created, or a string specifying the source node from which shard data will be copied. If the source node is also marked for removal in the same shard, this addition is treated as a move operation, and that source node can only appear once as a source node for that shard. If the source node is not being removed, it can be used as the source for multiple additions (copy operations).", - "additionalProperties": { - "type": [ - "string", - "null" - ], - "description": "Defines how the new replica should be created. If null, an empty shard is created. If a string, it specifies the source node from which data for this shard should be replicated." + "present": { + "type": "boolean" + }, + "info": { + "type": "object", + "properties": { + "vector": { + "$ref": "#/definitions/C11yVector" + }, + "nearestNeighbors": { + "$ref": "#/definitions/C11yNearestNeighbors" + } + } } } } } } }, - "required": [ - "planId", - "collection", - "shardScaleActions" - ] - }, - "ReplicationScaleApplyResponse": { - "type": "object", - "description": "Response for the POST /replication/scale endpoint containing the list of initiated shard copy operation IDs.", - "properties": { - "operationIds": { - "type": "array", - "items": { + "C11yExtension": { + "description": "A resource describing an extension to the contextinoary, containing both the identifier and the definition of the extension", + "properties": { + "concept": { + "description": "The new concept you want to extend. Must be an all-lowercase single word, or a space delimited compound word. Examples: 'foobarium', 'my custom concept'", "type": "string", - "format": "uuid" + "example": "foobarium" }, - "description": "List of shard copy operation IDs created during scaling." - }, - "planId": { - "type": "string", - "format": "uuid", - "description": "The unique identifier of the replication scaling plan that generated these operations.", - "x-nullable": false - }, - "collection": { - "type": "string", - "description": "The name of the collection associated with this replication scaling plan.", - "x-nullable": false + "definition": { + "description": "A list of space-delimited words or a sentence describing what the custom concept is about. Avoid using the custom concept itself. An Example definition for the custom concept 'foobarium': would be 'a naturally occurring element which can only be seen by programmers'", + "type": "string" + }, + "weight": { + "description": "Weight of the definition of the new concept where 1='override existing definition entirely' and 0='ignore custom definition'. Note that if the custom concept is not present in the contextionary yet, the weight cannot be less than 1.", + "type": "number", + "format": "float" + } } }, - "required": [ - "operationIds", - "planId", - "collection" - ] - }, - "ReplicationDisableReplicaRequest": { - "description": "Specifies the parameters required to mark a specific shard replica as inactive (soft-delete) on a particular node. This action typically prevents the replica from serving requests but does not immediately remove its data.", - "properties": { - "node": { - "description": "The name of the Weaviate node hosting the shard replica that is to be disabled.", - "type": "string" - }, - "collection": { - "description": "The name of the collection to which the shard replica belongs.", - "type": "string" - }, - "shard": { - "description": "The ID of the shard whose replica is to be disabled.", - "type": "string" + "C11yNearestNeighbors": { + "description": "C11y function to show the nearest neighbors to a word.", + "type": "array", + "items": { + "type": "object", + "properties": { + "word": { + "type": "string" + }, + "distance": { + "type": "number", + "format": "float" + } + } } }, - "type": "object", - "required": [ - "node", - "collection", - "shard" - ] - }, - "ReplicationDeleteReplicaRequest": { - "description": "Specifies the parameters required to permanently delete a specific shard replica from a particular node. This action will remove the replica's data from the node.", - "properties": { - "node": { - "description": "The name of the Weaviate node from which the shard replica will be deleted.", - "type": "string" - }, - "collection": { - "description": "The name of the collection to which the shard replica belongs.", - "type": "string" - }, - "shard": { - "description": "The ID of the shard whose replica is to be deleted.", - "type": "string" - } + "C11yVector": { + "description": "A vector representation of the object in the Contextionary. If provided at object creation, this wil take precedence over any vectorizer setting.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } }, - "type": "object", - "required": [ - "node", - "collection", - "shard" - ] - }, - "ReplicationShardReplicas": { - "description": "Represents a shard and lists the nodes that currently host its replicas.", - "type": "object", - "properties": { - "shard": { - "type": "string" - }, - "replicas": { - "type": "array", - "items": { - "type": "string" - } + "Vector": { + "description": "A vector representation of the object. If provided at object creation, this wil take precedence over any vectorizer setting.", + "type": "object" + }, + "Vectors": { + "description": "A map of named vectors for multi-vector representations.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Vector" } - } - }, - "ReplicationShardingState": { - "description": "Details the sharding layout for a specific collection, mapping each shard to its set of replicas across the cluster.", - "type": "object", - "properties": { - "collection": { - "description": "The name of the collection.", - "type": "string" - }, - "shards": { - "description": "An array detailing each shard within the collection and the nodes hosting its replicas.", - "type": "array", - "items": { - "$ref": "#/definitions/ReplicationShardReplicas" + }, + "C11yVectorBasedQuestion": { + "description": "Receive question based on array of collection names (classes), properties and values.", + "type": "array", + "items": { + "type": "object", + "properties": { + "classVectors": { + "description": "Vectorized collection (class) name.", + "type": "array", + "items": { + "type": "number", + "format": "float" + }, + "minItems": 300, + "maxItems": 300 + }, + "classProps": { + "description": "Vectorized properties.", + "type": "array", + "items": { + "type": "object", + "properties": { + "propsVectors": { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "value": { + "description": "String with valuename.", + "type": "string" + } + } + }, + "minItems": 300, + "maxItems": 300 + } } } - } - }, - "ReplicationReplicateDetailsReplicaStatusError": { - "description": "Represents an error encountered during a replication operation, including its timestamp and a human-readable message.", - "type": "object", - "properties": { - "whenErroredUnixMs": { - "description": "The unix timestamp in ms when the error occurred. This is an approximate time and so should not be used for precise timing.", - "format": "int64", - "type": "integer" - }, - "message": { - "description": "A human-readable message describing the error.", - "type": "string" - } - } - }, - "ReplicationReplicateDetailsReplicaStatus": { - "description": "Represents the current or historical status of a shard replica involved in a replication operation, including its operational state and any associated errors.", - "type": "object", - "properties": { - "state": { - "description": "The current operational state of the replica during the replication process.", - "type": "string", - "enum": [ - "REGISTERED", - "HYDRATING", - "FINALIZING", - "DEHYDRATING", - "READY", - "CANCELLED" - ] - }, - "whenStartedUnixMs": { - "description": "The UNIX timestamp in ms when this state was first entered. This is an approximate time and so should not be used for precise timing.", - "format": "int64", - "type": "integer" - }, - "errors": { - "description": "A list of error messages encountered by this replica during the replication operation, if any.", - "type": "array", - "items": { - "$ref": "#/definitions/ReplicationReplicateDetailsReplicaStatusError" + }, + "Deprecation": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The id that uniquely identifies this particular deprecation (mostly used internally)." + }, + "status": { + "type": "string", + "description": "Whether the problematic API functionality is deprecated (planned to be removed) or already removed." + }, + "apiType": { + "type": "string", + "description": "Describes which API is affected, usually one of: REST, GraphQL and gRPC." + }, + "msg": { + "type": "string", + "description": "What this deprecation is about." + }, + "mitigation": { + "type": "string", + "description": "User-required object to not be affected by the (planned) removal." + }, + "sinceVersion": { + "type": "string", + "description": "The deprecation was introduced in this version." + }, + "plannedRemovalVersion": { + "type": "string", + "description": "A best-effort guess of which upcoming version will remove the feature entirely." + }, + "removedIn": { + "type": "string", + "description": "If the feature has already been removed, it was removed in this version.", + "x-nullable": true + }, + "removedTime": { + "type": "string", + "format": "date-time", + "description": "If the feature has already been removed, it was removed at this timestamp.", + "x-nullable": true + }, + "sinceTime": { + "type": "string", + "format": "date-time", + "description": "The deprecation was introduced at this timestamp." + }, + "locations": { + "type": "array", + "description": "The locations within the specified API affected by this deprecation.", + "items": { + "type": "string" + } } } - } - }, - "ReplicationReplicateDetailsReplicaResponse": { - "description": "Provides a comprehensive overview of a specific replication operation, detailing its unique ID, the involved collection, shard, source and target nodes, transfer type, current status, and optionally, its status history.", - "properties": { - "id": { - "description": "The unique identifier (ID) of this specific replication operation.", - "format": "uuid", - "type": "string" - }, - "shard": { - "description": "The name of the shard involved in this replication operation.", - "type": "string" - }, - "collection": { - "description": "The name of the collection to which the shard being replicated belongs.", - "type": "string" - }, - "sourceNode": { - "description": "The identifier of the node from which the replica is being moved or copied (the source node).", - "type": "string" - }, - "targetNode": { - "description": "The identifier of the node to which the replica is being moved or copied (the target node).", - "type": "string" - }, - "type": { - "description": "Indicates whether the operation is a `COPY` (source replica remains) or a `MOVE` (source replica is removed after successful transfer).", - "type": "string", - "enum": [ - "COPY", - "MOVE" - ] - }, - "uncancelable": { - "description": "Whether the replica operation can't be cancelled.", - "type": "boolean" - }, - "scheduledForCancel": { - "description": "Whether the replica operation is scheduled for cancellation.", - "type": "boolean" - }, - "scheduledForDelete": { - "description": "Whether the replica operation is scheduled for deletion.", - "type": "boolean" - }, - "status": { - "description": "An object detailing the current operational state of the replica movement and any errors encountered.", - "type": "object", - "$ref": "#/definitions/ReplicationReplicateDetailsReplicaStatus" - }, - "statusHistory": { - "description": "An array detailing the historical sequence of statuses the replication operation has transitioned through, if requested and available.", - "type": "array", - "items": { - "$ref": "#/definitions/ReplicationReplicateDetailsReplicaStatus" + }, + "ErrorResponse": { + "description": "An error response returned by Weaviate endpoints.", + "properties": { + "error": { + "items": { + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" } }, - "whenStartedUnixMs": { - "description": "The UNIX timestamp in ms when the replication operation was initiated. This is an approximate time and so should not be used for precise timing.", - "format": "int64", - "type": "integer" - } + "type": "object" }, - "required": [ - "id", - "shard", - "sourceNode", - "targetNode", - "collection", - "status", - "type" - ] - }, - "ReplicationReplicateForceDeleteRequest": { - "description": "Specifies the parameters available when force deleting replication operations.", - "properties": { - "id": { - "description": "The unique identifier (ID) of the replication operation to be forcefully deleted.", - "format": "uuid", - "type": "string" - }, - "collection": { - "description": "The name of the collection to which the shard being replicated belongs.", - "type": "string" - }, - "shard": { - "description": "The identifier of the shard involved in the replication operations.", - "type": "string" - }, - "node": { - "description": "The name of the target node where the replication operations are registered.", - "type": "string" - }, - "dryRun": { - "description": "If true, the operation will not actually delete anything but will return the expected outcome of the deletion.", - "type": "boolean", - "default": false + "GraphQLError": { + "description": "An error response caused by a GraphQL query.", + "properties": { + "locations": { + "items": { + "properties": { + "column": { + "format": "int64", + "type": "integer" + }, + "line": { + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "path": { + "items": { + "type": "string" + }, + "type": "array" + } } }, - "type": "object" - }, - "ReplicationReplicateForceDeleteResponse": { - "description": "Provides the UUIDs that were successfully force deleted as part of the replication operation. If dryRun is true, this will return the expected outcome without actually deleting anything.", - "properties": { - "deleted": { - "description": "The unique identifiers (IDs) of the replication operations that were forcefully deleted.", - "type": "array", - "items": { - "format": "uuid", + "GraphQLQuery": { + "description": "GraphQL query based on: http://facebook.github.io/graphql/.", + "properties": { + "operationName": { + "description": "The name of the operation if multiple exist in the query.", + "type": "string" + }, + "query": { + "description": "Query based on GraphQL syntax.", "type": "string" + }, + "variables": { + "description": "Additional variables for the query.", + "type": "object" } }, - "dryRun": { - "description": "Indicates whether the operation was a dry run (true) or an actual deletion (false).", - "type": "boolean" - } + "type": "object" }, - "type": "object" - }, - "PeerUpdate": { - "description": "A single peer in the network.", - "properties": { - "id": { - "description": "The session ID of the peer.", - "type": "string", - "format": "uuid" - }, - "name": { - "description": "Human readable name.", - "type": "string" - }, - "uri": { - "description": "The location where the peer is exposed to the internet.", - "type": "string", - "format": "uri" + "GraphQLQueries": { + "description": "A list of GraphQL queries.", + "items": { + "$ref": "#/definitions/GraphQLQuery" }, - "schemaHash": { - "description": "The latest known hash of the peer's schema.", - "type": "string" - } - } - }, - "PeerUpdateList": { - "description": "List of known peers.", - "items": { - "$ref": "#/definitions/PeerUpdate" + "type": "array" }, - "type": "array" - }, - "VectorWeights": { - "description": "Allow custom overrides of vector weights as math expressions. E.g. `pancake`: `7` will set the weight for the word pancake to 7 in the vectorization, whereas `w * 3` would triple the originally calculated word. This is an open object, with OpenAPI Specification 3.0 this will be more detailed. See Weaviate docs for more info. In the future this will become a key/value (string/string) object.", - "type": "object" - }, - "PropertySchema": { - "description": "Names and values of an individual property. A returned response may also contain additional metadata, such as from classification or feature projection.", - "type": "object" - }, - "SchemaHistory": { - "description": "This is an open object, with OpenAPI Specification 3.0 this will be more detailed. See Weaviate docs for more info. In the future this will become a key/value OR a SingleRef definition.", - "type": "object" - }, - "Schema": { - "description": "Definitions of semantic schemas (also see: https://github.com/weaviate/weaviate-semantic-schemas).", - "properties": { - "classes": { - "description": "Semantic classes that are available.", - "items": { - "$ref": "#/definitions/Class" + "GraphQLResponse": { + "description": "GraphQL based response: http://facebook.github.io/graphql/.", + "properties": { + "data": { + "additionalProperties": { + "$ref": "#/definitions/JsonObject" + }, + "description": "GraphQL data object.", + "type": "object" }, - "type": "array" - }, - "maintainer": { - "description": "Email of the maintainer.", - "format": "email", - "type": "string" - }, - "name": { - "description": "Name of the schema.", - "type": "string" + "errors": { + "description": "Array with errors.", + "items": { + "$ref": "#/definitions/GraphQLError" + }, + "x-omitempty": true, + "type": "array" + } } }, - "type": "object" - }, - "SchemaClusterStatus": { - "description": "Indicates the health of the schema in a cluster.", - "properties": { - "healthy": { - "description": "True if the cluster is in sync, false if there is an issue (see error).", - "type": "boolean", - "x-omitempty": false - }, - "error": { - "description": "Contains the sync check error if one occurred", - "type": "string", - "x-omitempty": true - }, - "hostname": { - "description": "Hostname of the coordinating node, i.e. the one that received the cluster. This can be useful information if the error message contains phrases such as 'other nodes agree, but local does not', etc.", - "type": "string" - }, - "nodeCount": { - "description": "Number of nodes that participated in the sync check", - "type": "number", - "format": "int" + "GraphQLResponses": { + "description": "A list of GraphQL responses.", + "items": { + "$ref": "#/definitions/GraphQLResponse" }, - "ignoreSchemaSync": { - "description": "The cluster check at startup can be ignored (to recover from an out-of-sync situation).", - "type": "boolean", - "x-omitempty": false - } + "type": "array" }, - "type": "object" - }, - "Class": { - "properties": { - "class": { - "description": "Name of the collection (formerly 'class') (required). Multiple words should be concatenated in CamelCase, e.g. `ArticleAuthor`.", - "type": "string" - }, - "vectorConfig": { - "description": "Configure named vectors. Either use this field or `vectorizer`, `vectorIndexType`, and `vectorIndexConfig` fields. Available from `v1.24.0`.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/VectorConfig" + "InvertedIndexConfig": { + "description": "Configure the inverted index built into Weaviate. See [Reference: Inverted index](https://docs.weaviate.io/weaviate/config-refs/indexing/inverted-index#inverted-index-parameters) for details.", + "properties": { + "cleanupIntervalSeconds": { + "description": "Asynchronous index clean up happens every n seconds (default: 60).", + "format": "int", + "type": "number" + }, + "bm25": { + "$ref": "#/definitions/BM25Config" + }, + "stopwords": { + "$ref": "#/definitions/StopwordConfig" + }, + "indexTimestamps": { + "description": "Index each object by its internal timestamps (default: `false`).", + "type": "boolean" + }, + "indexNullState": { + "description": "Index each object with the null state (default: `false`).", + "type": "boolean" + }, + "indexPropertyLength": { + "description": "Index length of properties (default: `false`).", + "type": "boolean" + }, + "usingBlockMaxWAND": { + "description": "Using BlockMax WAND for query execution (default: `false`, will be `true` for new collections created after 1.30).", + "type": "boolean" + }, + "tokenizerUserDict": { + "description": "User-defined dictionary for tokenization.", + "type": "array", + "x-omitempty": true, + "items": { + "$ref": "#/definitions/TokenizerUserDictConfig" + } } }, - "vectorIndexType": { - "description": "Name of the vector index type to use for the collection (e.g. `hnsw` or `flat`).", - "type": "string" - }, - "vectorIndexConfig": { - "description": "Vector-index config, that is specific to the type of index selected in vectorIndexType", - "type": "object" - }, - "shardingConfig": { - "description": "Manage how the index should be sharded and distributed in the cluster", - "type": "object" - }, - "replicationConfig": { - "$ref": "#/definitions/ReplicationConfig" - }, - "invertedIndexConfig": { - "$ref": "#/definitions/InvertedIndexConfig" - }, - "multiTenancyConfig": { - "$ref": "#/definitions/MultiTenancyConfig" - }, - "objectTtlConfig": { - "$ref": "#/definitions/ObjectTtlConfig" - }, - "vectorizer": { - "description": "Specify how the vectors for this collection should be determined. The options are either `none` - this means you have to import a vector with each object yourself - or the name of a module that provides vectorization capabilities, such as `text2vec-weaviate`. If left empty, it will use the globally configured default ([`DEFAULT_VECTORIZER_MODULE`](https://docs.weaviate.io/deploy/configuration/env-vars)) which can itself either be `none` or a specific module.", - "type": "string" - }, - "moduleConfig": { - "description": "Configuration specific to modules in a collection context.", - "type": "object" - }, - "description": { - "description": "Description of the collection for metadata purposes.", - "type": "string" - }, + "type": "object" + }, + "ReplicationConfig": { + "description": "Configure how replication is executed in a cluster", "properties": { - "description": "Define properties of the collection.", - "items": { - "$ref": "#/definitions/Property" + "factor": { + "description": "Number of times a collection (class) is replicated (default: 1).", + "type": "integer" }, - "type": "array" - } - }, - "type": "object" - }, - "Property": { - "properties": { - "dataType": { - "description": "Data type of the property (required). If it starts with a capital (for example Person), may be a reference to another type.", - "items": { - "type": "string" + "asyncEnabled": { + "description": "Enable asynchronous replication (default: `false`).", + "type": "boolean", + "x-omitempty": false }, - "type": "array" - }, - "description": { - "description": "Description of the property.", - "type": "string" - }, - "moduleConfig": { - "description": "Configuration specific to modules in a collection context.", - "type": "object" - }, - "name": { - "description": "The name of the property (required). Multiple words should be concatenated in camelCase, e.g. `nameOfAuthor`.", - "type": "string" - }, - "indexInverted": { - "description": "(Deprecated). Whether to include this property in the inverted index. If `false`, this property cannot be used in `where` filters, `bm25` or `hybrid` search.

Unrelated to vectorization behavior (deprecated as of v1.19; use indexFilterable or/and indexSearchable instead)", - "type": "boolean", - "x-nullable": true - }, - "indexFilterable": { - "description": "Whether to include this property in the filterable, Roaring Bitmap index. If `false`, this property cannot be used in `where` filters.

Note: Unrelated to vectorization behavior.", - "type": "boolean", - "x-nullable": true - }, - "indexSearchable": { - "description": "Optional. Should this property be indexed in the inverted index. Defaults to true. Applicable only to properties of data type text and text[]. If you choose false, you will not be able to use this property in bm25 or hybrid search. This property has no affect on vectorization decisions done by modules", - "type": "boolean", - "x-nullable": true - }, - "indexRangeFilters": { - "description": "Whether to include this property in the filterable, range-based Roaring Bitmap index. Provides better performance for range queries compared to filterable index in large datasets. Applicable only to properties of data type int, number, date.", - "type": "boolean", - "x-nullable": true - }, - "tokenization": { - "description": "Determines how a property is indexed. This setting applies to `text` and `text[]` data types. The following tokenization methods are available:

- `word` (default): Splits the text on any non-alphanumeric characters and lowercases the tokens.
- `lowercase`: Splits the text on whitespace and lowercases the tokens.
- `whitespace`: Splits the text on whitespace. This tokenization is case-sensitive.
- `field`: Indexes the entire property value as a single token after trimming whitespace.
- `trigram`: Splits the property into rolling trigrams (three-character sequences).
- `gse`: Uses the `gse` tokenizer, suitable for Chinese language text. [See `gse` docs](https://pkg.go.dev/github.com/go-ego/gse#section-readme).
- `kagome_ja`: Uses the `Kagome` tokenizer with a Japanese (IPA) dictionary. [See `kagome` docs](https://github.com/ikawaha/kagome).
- `kagome_kr`: Uses the `Kagome` tokenizer with a Korean dictionary. [See `kagome` docs](https://github.com/ikawaha/kagome).

See [Reference: Tokenization](https://docs.weaviate.io/weaviate/config-refs/collections#tokenization) for details.", - "type": "string", - "enum": [ - "word", - "lowercase", - "whitespace", - "field", - "trigram", - "gse", - "kagome_kr", - "kagome_ja", - "gse_ch" - ] - }, - "nestedProperties": { - "description": "The properties of the nested object(s). Applies to object and object[] data types.", - "items": { - "$ref": "#/definitions/NestedProperty" + "asyncConfig": { + "description": "Configuration parameters for asynchronous replication.", + "$ref": "#/definitions/ReplicationAsyncConfig", + "x-omitempty": true }, - "type": "array", - "x-omitempty": true - } - }, - "type": "object" - }, - "VectorConfig": { - "properties": { - "vectorizer": { - "description": "Configuration of a specific vectorizer used by this vector", - "type": "object" + "deletionStrategy": { + "description": "Conflict resolution strategy for deleted objects.", + "type": "string", + "enum": [ + "NoAutomatedResolution", + "DeleteOnConflict", + "TimeBasedResolution" + ], + "x-omitempty": true + } }, - "vectorIndexType": { - "description": "Name of the vector index to use, eg. (HNSW)", - "type": "string" + "type": "object" + }, + "BM25Config": { + "description": "Tuning parameters for the BM25 algorithm.", + "properties": { + "k1": { + "description": "Calibrates term-weight scaling based on the term frequency within a document (default: 1.2).", + "format": "float", + "type": "number" + }, + "b": { + "description": "Calibrates term-weight scaling based on the document length (default: 0.75).", + "format": "float", + "type": "number" + } }, - "vectorIndexConfig": { - "description": "Vector-index config, that is specific to the type of index selected in vectorIndexType", - "type": "object" - } + "type": "object" }, - "type": "object" - }, - "NestedProperty": { - "properties": { - "dataType": { - "items": { + "StopwordConfig": { + "description": "Fine-grained control over stopword list usage.", + "properties": { + "preset": { + "description": "Pre-existing list of common words by language (default: `en`). Options: [`en`, `none`].", "type": "string" }, - "type": "array" - }, - "description": { - "type": "string" - }, - "name": { - "type": "string" - }, - "indexFilterable": { - "type": "boolean", - "x-nullable": true - }, - "indexSearchable": { - "type": "boolean", - "x-nullable": true - }, - "indexRangeFilters": { - "type": "boolean", - "x-nullable": true - }, - "tokenization": { - "type": "string", - "enum": [ - "word", - "lowercase", - "whitespace", - "field", - "trigram", - "gse", - "kagome_kr", - "kagome_ja", - "gse_ch" - ] - }, - "nestedProperties": { - "description": "The properties of the nested object(s). Applies to object and object[] data types.", - "items": { - "$ref": "#/definitions/NestedProperty" + "additions": { + "description": "Stopwords to be considered additionally (default: []). Can be any array of custom strings.", + "type": "array", + "items": { + "type": "string" + } }, - "type": "array", - "x-omitempty": true - } + "removals": { + "description": "Stopwords to be removed from consideration (default: []). Can be any array of custom strings.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" }, - "type": "object" - }, - "ShardStatusList": { - "description": "The status of all the shards of a Class", - "items": { - "$ref": "#/definitions/ShardStatusGetResponse" - }, - "type": "array" - }, - "ShardStatusGetResponse": { - "description": "Response body of shard status get request", - "properties": { - "name": { - "description": "Name of the shard", - "type": "string" - }, - "status": { - "description": "Status of the shard", - "type": "string" - }, - "vectorQueueSize": { - "description": "Size of the vector queue of the shard", - "type": "integer", - "x-omitempty": false - } - } - }, - "ShardStatus": { - "description": "The status of a single shard", - "properties": { - "status": { - "description": "Status of the shard", - "type": "string" - } - } - }, - "BackupCreateStatusResponse": { - "description": "The definition of a backup create metadata", - "properties": { - "id": { - "description": "The ID of the backup. Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", - "type": "string" - }, - "backend": { - "description": "Backup backend name e.g. filesystem, gcs, s3.", - "type": "string" - }, - "path": { - "description": "Destination path of backup files valid for the selected backend.", - "type": "string" - }, - "error": { - "description": "error message if creation failed", - "type": "string" - }, - "status": { - "description": "phase of backup creation process", - "type": "string", - "default": "STARTED", - "enum": [ - "STARTED", - "TRANSFERRING", - "TRANSFERRED", - "SUCCESS", - "FAILED", - "CANCELED" - ] - }, - "startedAt": { - "description": "Timestamp when the backup process started", - "type": "string", - "format": "date-time" - }, - "completedAt": { - "description": "Timestamp when the backup process completed (successfully or with failure)", - "type": "string", - "format": "date-time" - }, - "size": { - "description": "Size of the backup in Gibs", - "type": "number", - "format": "float64" - } - } - }, - "BackupRestoreStatusResponse": { - "description": "The definition of a backup restore metadata.", - "properties": { - "id": { - "description": "The ID of the backup. Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", - "type": "string" - }, - "backend": { - "description": "Backup backend name e.g. filesystem, gcs, s3.", - "type": "string" - }, - "path": { - "description": "Destination path of backup files valid for the selected backup backend, contains bucket and path.", - "type": "string" - }, - "error": { - "description": "Error message if backup restoration failed.", - "type": "string" - }, - "status": { - "description": "Phase of backup restoration process.", - "type": "string", - "default": "STARTED", - "enum": [ - "STARTED", - "TRANSFERRING", - "TRANSFERRED", - "SUCCESS", - "FAILED", - "CANCELED" - ] + "TokenizerUserDictConfig": { + "description": "A list of pairs of strings that should be replaced with another string during tokenization.", + "type": "object", + "properties": { + "tokenizer": { + "description": "The tokenizer to which the user dictionary should be applied. Currently, only the `kagame` ja and kr tokenizers supports user dictionaries.", + "type": "string" + }, + "replacements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source": { + "description": "The string to be replaced.", + "type": "string" + }, + "target": { + "description": "The string to replace with.", + "type": "string" + } + }, + "required": [ + "source", + "target" + ] + } + } } - } - }, - "BackupConfig": { - "description": "Backup custom configuration.", - "type": "object", - "properties": { - "Endpoint": { - "type": "string", - "description": "Name of the endpoint, e.g. s3.amazonaws.com." - }, - "Bucket": { - "type": "string", - "description": "Name of the bucket, container, volume, etc." - }, - "Path": { - "type": "string", - "description": "Path or key within the bucket." - }, - "CPUPercentage": { - "description": "Desired CPU core utilization ranging from 1%-80%", - "type": "integer", - "default": 50, - "minimum": 1, - "maximum": 80, - "x-nullable": false - }, - "ChunkSize": { - "description": "Deprecated, has no effect.", - "type": "integer", - "x-nullable": false, - "x-deprecated": true - }, - "CompressionLevel": { - "description": "compression level used by compression algorithm", - "type": "string", - "default": "DefaultCompression", - "x-nullable": false, - "enum": [ - "DefaultCompression", - "BestSpeed", - "BestCompression", - "ZstdDefaultCompression", - "ZstdBestSpeed", - "ZstdBestCompression", - "NoCompression" - ] + }, + "MultiTenancyConfig": { + "description": "Configuration related to multi-tenancy within a collection (class)", + "properties": { + "enabled": { + "description": "Whether or not multi-tenancy is enabled for this collection (class) (default: `false`).", + "type": "boolean", + "x-omitempty": false + }, + "autoTenantCreation": { + "description": "Nonexistent tenants should (not) be created implicitly (default: `false`).", + "type": "boolean", + "x-omitempty": false + }, + "autoTenantActivation": { + "description": "Existing tenants should (not) be turned HOT implicitly when they are accessed and in another activity status (default: `false`).", + "type": "boolean", + "x-omitempty": false + } } - } - }, - "RestoreConfig": { - "description": "Backup custom configuration", - "type": "object", - "properties": { - "Endpoint": { - "type": "string", - "description": "name of the endpoint, e.g. s3.amazonaws.com" - }, - "Bucket": { - "type": "string", - "description": "Name of the bucket, container, volume, etc" - }, - "Path": { - "type": "string", - "description": "Path within the bucket" - }, - "CPUPercentage": { - "description": "Desired CPU core utilization ranging from 1%-80%", - "type": "integer", - "default": 50, - "minimum": 1, - "maximum": 80, - "x-nullable": false - }, - "rolesOptions": { - "description": "How roles should be restored", - "type": "string", - "enum": [ - "noRestore", - "all" - ], - "default": "noRestore" - }, - "usersOptions": { - "description": "How users should be restored", - "type": "string", - "enum": [ - "noRestore", - "all" - ], - "default": "noRestore" + }, + "ObjectTtlConfig":{ + "description": "Configuration of objects' time-to-live", + "properties": { + "enabled": { + "description": "Whether or not object ttl is enabled for this collection (default: `false`).", + "type": "boolean", + "x-omitempty": false + }, + "defaultTtl": { + "description": "Interval (in seconds) to be added to `deleteOn` value, denoting object's expiration time. Has to be positive for `deleteOn` set to `_creationTimeUnix` or `_lastUpdateTimeUnix`, any for custom property (default: `0`).", + "type": "integer", + "x-omitempty": false + }, + "deleteOn": { + "description": "Name of the property holding base time to compute object's expiration time (ttl = value of deleteOn property + defaultTtl). Can be set to `_creationTimeUnix`, `_lastUpdateTimeUnix` or custom property of `date` datatype.", + "type": "string", + "x-omitempty": false + }, + "filterExpiredObjects": { + "description": "Whether remove from resultset expired, but not yet deleted by background process objects (default: `false`).", + "type": "boolean", + "x-omitempty": false + } } - } - }, - "BackupCreateRequest": { - "description": "Request body for creating a backup for a set of collections.", - "properties": { - "id": { - "description": "The ID of the backup (required). Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", - "type": "string" + }, + "JsonObject": { + "description": "JSON object value.", + "type": "object" + }, + "Meta": { + "description": "Contains meta information of the current Weaviate instance.", + "properties": { + "hostname": { + "description": "The url of the host.", + "format": "url", + "type": "string" + }, + "version": { + "description": "The Weaviate server version.", + "type": "string" + }, + "modules": { + "description": "Module-specific meta information.", + "type": "object" + }, + "grpcMaxMessageSize": { + "description": "Max message size for GRPC connection in bytes.", + "type": "integer" + } }, - "config": { - "description": "Custom configuration for the backup creation process", - "type": "object", - "$ref": "#/definitions/BackupConfig" + "type": "object" + }, + "MultipleRef": { + "description": "Multiple instances of references to other objects.", + "items": { + "$ref": "#/definitions/SingleRef" }, - "include": { - "description": "List of collections to include in the backup creation process. If not set, all collections are included. Cannot be used together with `exclude`.", - "type": "array", - "items": { + "type": "array" + }, + "PatchDocumentObject": { + "description": "Either a JSONPatch document as defined by RFC 6902 (from, op, path, value), or a merge document (RFC 7396).", + "properties": { + "from": { + "description": "A string containing a JSON Pointer value.", + "type": "string" + }, + "op": { + "description": "The operation to be performed.", + "enum": [ + "add", + "remove", + "replace", + "move", + "copy", + "test" + ], + "type": "string" + }, + "path": { + "description": "A JSON-Pointer.", "type": "string" + }, + "value": { + "description": "The value to be used within the operations.", + "type": "object" + }, + "merge": { + "$ref": "#/definitions/Object" } }, - "exclude": { - "description": "List of collections to exclude from the backup creation process. If not set, all collections are included. Cannot be used together with `include`.", - "type": "array", - "items": { + "required": [ + "op", + "path" + ] + }, + "PatchDocumentAction": { + "description": "Either a JSONPatch document as defined by RFC 6902 (from, op, path, value), or a merge document (RFC 7396).", + "properties": { + "from": { + "description": "A string containing a JSON Pointer value.", + "type": "string" + }, + "op": { + "description": "The operation to be performed.", + "enum": [ + "add", + "remove", + "replace", + "move", + "copy", + "test" + ], + "type": "string" + }, + "path": { + "description": "A JSON-Pointer.", "type": "string" + }, + "value": { + "description": "The value to be used within the operations.", + "type": "object" + }, + "merge": { + "$ref": "#/definitions/Object" } - } - } - }, - "BackupCreateResponse": { - "description": "The definition of a backup create response body", - "properties": { - "id": { - "description": "The ID of the backup. Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", - "type": "string" }, - "classes": { - "description": "The list of collections (classes) for which the backup creation process was started.", - "type": "array", - "items": { + "required": [ + "op", + "path" + ] + }, + "ReplicationReplicateReplicaRequest": { + "description": "Specifies the parameters required to initiate a shard replica movement operation between two nodes for a given collection and shard. This request defines the source and target node, the collection and type of transfer.", + "properties": { + "sourceNode": { + "description": "The name of the Weaviate node currently hosting the shard replica that needs to be moved or copied.", + "type": "string" + }, + "targetNode": { + "description": "The name of the Weaviate node where the new shard replica will be created as part of the movement or copy operation.", + "type": "string" + }, + "collection": { + "description": "The name of the collection to which the target shard belongs.", "type": "string" + }, + "shard": { + "description": "The name of the shard whose replica is to be moved or copied.", + "type": "string" + }, + "type": { + "description": "Specifies the type of replication operation to perform. `COPY` creates a new replica on the target node while keeping the source replica. `MOVE` creates a new replica on the target node and then removes the source replica upon successful completion. Defaults to `COPY` if omitted.", + "type": "string", + "enum": [ + "COPY", + "MOVE" + ], + "default": "COPY" } }, - "backend": { - "description": "Backup backend name e.g. filesystem, gcs, s3.", - "type": "string" - }, - "bucket": { - "description": "Name of the bucket, container, volume, etc", - "type": "string" - }, - "path": { - "description": "Path within bucket of backup", - "type": "string" - }, - "error": { - "description": "error message if creation failed", - "type": "string" - }, - "status": { - "description": "phase of backup creation process", - "type": "string", - "default": "STARTED", - "enum": [ - "STARTED", - "TRANSFERRING", - "TRANSFERRED", - "SUCCESS", - "FAILED", - "CANCELED" - ] - } - } - }, - "BackupListResponse": { - "description": "The definition of a backup create response body.", - "type": "array", - "items": { "type": "object", + "required": [ + "sourceNode", + "targetNode", + "collection", + "shard" + ] + }, + "ReplicationReplicateReplicaResponse": { + "description": "Contains the unique identifier for a successfully initiated asynchronous replica movement operation. This ID can be used to track the progress of the operation.", "properties": { "id": { - "description": "The ID of the backup. Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", + "description": "The unique identifier (ID) assigned to the registered replication operation.", + "format": "uuid", "type": "string" + } + }, + "type": "object", + "required": [ + "id" + ] + }, + "ReplicationShardingStateResponse": { + "description": "Provides the detailed sharding state for one or more collections, including the distribution of shards and their replicas across the cluster nodes.", + "properties": { + "shardingState": { + "$ref": "#/definitions/ReplicationShardingState" + } + }, + "type": "object" + }, + "ReplicationScalePlan": { + "type": "object", + "description": "Defines a complete plan for scaling replication within a collection. Each shard entry specifies nodes to remove and nodes to add. Added nodes may either be initialized empty (null) or created by replicating data from a source node specified as a string. If a source node is also marked for removal in the same shard, it represents a move operation and can only be used once as a source for that shard. If a source node is not marked for removal, it represents a copy operation and can be used as the source for multiple additions in that shard. Nodes listed in 'removeNodes' cannot also appear as targets in 'addNodes' for the same shard, and the same node cannot be specified for both addition and removal in a single shard.", + "properties": { + "planId": { + "type": "string", + "format": "uuid", + "description": "A unique identifier for this replication scaling plan, useful for tracking and auditing purposes.", + "x-nullable": false }, - "classes": { - "description": "The list of collections (classes) for which the backup process was started.", + "collection": { + "type": "string", + "description": "The name of the collection to which this replication scaling plan applies.", + "x-nullable": false + }, + "shardScaleActions": { + "type": "object", + "description": "A mapping of shard names to their corresponding scaling actions. Each key corresponds to a shard name, and its value defines which nodes should be removed and which should be added for that shard. If a source node listed for an addition is also in 'removeNodes' for the same shard, that addition is treated as a move operation. Such a node can appear only once as a source in that shard. Otherwise, if the source node is not being removed, it represents a copy operation and can be referenced multiple times as a source for additions.", + "additionalProperties": { + "type": "object", + "description": "Scaling actions for a single shard, including which nodes to remove and which to add. Nodes listed in 'removeNodes' cannot appear as targets in 'addNodes' for the same shard. If a source node is also marked for removal, it is treated as a move operation and can only appear once as a source node in that shard. A source node that is not being removed can appear multiple times as a source node for additions in that shard (copy operations).", + "properties": { + "removeNodes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of node identifiers from which replicas of this shard should be removed. Nodes listed here must not appear in 'addNodes' for the same shard, and cannot be used as a source node for any addition in this shard except in the implicit move case, where they appear as both a source and a node to remove." + }, + "addNodes": { + "type": "object", + "description": "A mapping of target node identifiers to their addition configuration. Each key represents a target node where a new replica will be added. The value may be null, which means an empty replica will be created, or a string specifying the source node from which shard data will be copied. If the source node is also marked for removal in the same shard, this addition is treated as a move operation, and that source node can only appear once as a source node for that shard. If the source node is not being removed, it can be used as the source for multiple additions (copy operations).", + "additionalProperties": { + "type": [ + "string", + "null" + ], + "description": "Defines how the new replica should be created. If null, an empty shard is created. If a string, it specifies the source node from which data for this shard should be replicated." + } + } + } + } + } + }, + "required": [ + "planId", + "collection", + "shardScaleActions" + ] + }, + "ReplicationScaleApplyResponse": { + "type": "object", + "description": "Response for the POST /replication/scale endpoint containing the list of initiated shard copy operation IDs.", + "properties": { + "operationIds": { "type": "array", "items": { - "type": "string" - } - }, - "status": { - "description": "Status of backup process.", - "type": "string", - "enum": [ - "STARTED", - "TRANSFERRING", - "TRANSFERRED", - "SUCCESS", - "FAILED", - "CANCELED" - ] + "type": "string", + "format": "uuid" + }, + "description": "List of shard copy operation IDs created during scaling." }, - "startedAt": { - "description": "Timestamp when the backup process started", + "planId": { "type": "string", - "format": "date-time" + "format": "uuid", + "description": "The unique identifier of the replication scaling plan that generated these operations.", + "x-nullable": false }, - "completedAt": { - "description": "Timestamp when the backup process completed (successfully or with failure)", + "collection": { "type": "string", - "format": "date-time" - }, - "size": { - "description": "Size of the backup in Gibs", - "type": "number", - "format": "float64" + "description": "The name of the collection associated with this replication scaling plan.", + "x-nullable": false } - } - } - }, - "BackupRestoreRequest": { - "description": "Request body for restoring a backup for a set of collections (classes).", - "properties": { - "config": { - "description": "Custom configuration for the backup restoration process.", - "type": "object", - "$ref": "#/definitions/RestoreConfig" }, - "include": { - "description": "List of collections (classes) to include in the backup restoration process.", - "type": "array", - "items": { + "required": [ + "operationIds", + "planId", + "collection" + ] + }, + "ReplicationDisableReplicaRequest": { + "description": "Specifies the parameters required to mark a specific shard replica as inactive (soft-delete) on a particular node. This action typically prevents the replica from serving requests but does not immediately remove its data.", + "properties": { + "node": { + "description": "The name of the Weaviate node hosting the shard replica that is to be disabled.", + "type": "string" + }, + "collection": { + "description": "The name of the collection to which the shard replica belongs.", + "type": "string" + }, + "shard": { + "description": "The ID of the shard whose replica is to be disabled.", "type": "string" } }, - "exclude": { - "description": "List of collections (classes) to exclude from the backup restoration process.", - "type": "array", - "items": { + "type": "object", + "required": [ + "node", + "collection", + "shard" + ] + }, + "ReplicationDeleteReplicaRequest": { + "description": "Specifies the parameters required to permanently delete a specific shard replica from a particular node. This action will remove the replica's data from the node.", + "properties": { + "node": { + "description": "The name of the Weaviate node from which the shard replica will be deleted.", + "type": "string" + }, + "collection": { + "description": "The name of the collection to which the shard replica belongs.", + "type": "string" + }, + "shard": { + "description": "The ID of the shard whose replica is to be deleted.", "type": "string" } }, - "node_mapping": { - "description": "Allows overriding the node names stored in the backup with different ones. Useful when restoring backups to a different environment.", - "type": "object", - "additionalProperties": { + "type": "object", + "required": [ + "node", + "collection", + "shard" + ] + }, + "ReplicationShardReplicas": { + "description": "Represents a shard and lists the nodes that currently host its replicas.", + "type": "object", + "properties": { + "shard": { "type": "string" + }, + "replicas": { + "type": "array", + "items": { + "type": "string" + } } - }, - "overwriteAlias": { - "description": "Allows ovewriting the collection alias if there is a conflict", - "type": "boolean" } - } - }, - "BackupRestoreResponse": { - "description": "The definition of a backup restore response body.", - "properties": { - "id": { - "description": "The ID of the backup. Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", - "type": "string" - }, - "classes": { - "description": "The list of collections (classes) for which the backup restoration process was started.", - "type": "array", - "items": { - "type": "string" - } - }, - "backend": { - "description": "Backup backend name e.g. filesystem, gcs, s3.", - "type": "string" - }, - "path": { - "description": "Destination path of backup files valid for the selected backend.", - "type": "string" - }, - "error": { - "description": "Error message if backup restoration failed.", - "type": "string" - }, - "status": { - "description": "Phase of backup restoration process.", - "type": "string", - "default": "STARTED", - "enum": [ - "STARTED", - "TRANSFERRING", - "TRANSFERRED", - "SUCCESS", - "FAILED", - "CANCELED" - ] - } - } - }, - "NodeStats": { - "description": "The summary of Weaviate's statistics.", - "properties": { - "shardCount": { - "description": "The count of Weaviate's shards. To see this value, set `output` to `verbose`.", - "format": "int", - "type": "number", - "x-omitempty": false - }, - "objectCount": { - "description": "The total number of objects in DB.", - "format": "int64", - "type": "number", - "x-omitempty": false - } - } - }, - "BatchStats": { - "description": "The summary of a nodes batch queue congestion status.", - "properties": { - "queueLength": { - "description": "How many objects are currently in the batch queue.", - "format": "int", - "type": "number", - "x-omitempty": true, - "x-nullable": true - }, - "ratePerSecond": { - "description": "How many objects are approximately processed from the batch queue per second.", - "format": "int", - "type": "number", - "x-omitempty": false - } - } - }, - "NodeShardStatus": { - "description": "The definition of a node shard status response body", - "properties": { - "name": { - "description": "The name of the shard.", - "type": "string", - "x-omitempty": false - }, - "class": { - "description": "The name of shard's collection (class).", - "type": "string", - "x-omitempty": false - }, - "objectCount": { - "description": "The number of objects in shard.", - "format": "int64", - "type": "number", - "x-omitempty": false - }, - "vectorIndexingStatus": { - "description": "The status of the vector indexing process.", - "type": "string", - "x-omitempty": false - }, - "compressed": { - "description": "The status of vector compression/quantization.", - "type": "boolean", - "x-omitempty": false - }, - "vectorQueueLength": { - "description": "The length of the vector indexing queue.", - "format": "int64", - "type": "number", - "x-omitempty": false - }, - "loaded": { - "description": "The load status of the shard.", - "type": "boolean", - "x-omitempty": false - }, - "asyncReplicationStatus": { - "description": "The status of the async replication.", - "type": "array", - "items": { - "$ref": "#/definitions/AsyncReplicationStatus" - } - }, - "numberOfReplicas": { - "description": "Number of replicas for the shard.", - "type": [ - "integer", - "null" - ], - "format": "int64", - "x-omitempty": true - }, - "replicationFactor": { - "description": "Minimum number of replicas for the shard.", - "type": [ - "integer", - "null" - ], - "format": "int64", - "x-omitempty": true - } - } - }, - "AsyncReplicationStatus": { - "description": "The status of the async replication.", - "properties": { - "objectsPropagated": { - "description": "The number of objects propagated in the most recent iteration.", - "type": "number", - "format": "uint64" - }, - "startDiffTimeUnixMillis": { - "description": "The start time of the most recent iteration.", - "type": "number", - "format": "int64" - }, - "targetNode": { - "description": "The target node of the replication, if set, otherwise empty.", - "type": "string" - } - } - }, - "NodeStatus": { - "description": "The definition of a backup node status response body", - "properties": { - "name": { - "description": "The name of the node.", - "type": "string" - }, - "status": { - "description": "Node's status.", - "type": "string", - "default": "HEALTHY", - "enum": [ - "HEALTHY", - "UNHEALTHY", - "UNAVAILABLE", - "TIMEOUT" - ] - }, - "version": { - "description": "The version of Weaviate.", - "type": "string" - }, - "gitHash": { - "description": "The gitHash of Weaviate.", - "type": "string" - }, - "stats": { - "description": "Weaviate overall statistics.", - "type": "object", - "$ref": "#/definitions/NodeStats" - }, - "batchStats": { - "description": "Weaviate batch statistics.", - "type": "object", - "$ref": "#/definitions/BatchStats" - }, - "shards": { - "description": "The list of the shards with it's statistics.", - "type": "array", - "items": { - "$ref": "#/definitions/NodeShardStatus" - } - }, - "operationalMode": { - "description": "Which mode of operation the node is running in.", - "type": "string", - "enum": [ - "ReadWrite", - "WriteOnly", - "ReadOnly", - "ScaleOut" - ] - } - } - }, - "NodesStatusResponse": { - "description": "The status of all of the Weaviate nodes", - "type": "object", - "properties": { - "nodes": { - "type": "array", - "items": { - "$ref": "#/definitions/NodeStatus" - } - } - } - }, - "DistributedTask": { - "description": "Distributed task metadata.", - "type": "object", - "properties": { - "id": { - "description": "The ID of the task.", - "type": "string" - }, - "version": { - "description": "The version of the task.", - "type": "integer" - }, - "status": { - "description": "The status of the task.", - "type": "string" - }, - "startedAt": { - "description": "The time when the task was created.", - "type": "string", - "format": "date-time" - }, - "finishedAt": { - "description": "The time when the task was finished.", - "type": "string", - "format": "date-time" - }, - "finishedNodes": { - "description": "The nodes that finished the task.", - "type": "array", - "items": { - "type": "string" - } - }, - "error": { - "description": "The high level reason why the task failed.", - "type": "string", - "x-omitempty": true - }, - "payload": { - "description": "The payload of the task.", - "type": "object" - } - } - }, - "DistributedTasks": { - "description": "Active distributed tasks by namespace.", - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/definitions/DistributedTask" - } - } - }, - "RaftStatistics": { - "description": "The definition of Raft statistics.", - "properties": { - "appliedIndex": { - "type": "string" - }, - "commitIndex": { - "type": "string" - }, - "fsmPending": { - "type": "string" - }, - "lastContact": { - "type": "string" - }, - "lastLogIndex": { - "type": "string" - }, - "lastLogTerm": { - "type": "string" - }, - "lastSnapshotIndex": { - "type": "string" - }, - "lastSnapshotTerm": { - "type": "string" - }, - "latestConfiguration": { - "description": "Weaviate Raft nodes.", - "type": "object" - }, - "latestConfigurationIndex": { - "type": "string" - }, - "numPeers": { - "type": "string" - }, - "protocolVersion": { - "type": "string" - }, - "protocolVersionMax": { - "type": "string" - }, - "protocolVersionMin": { - "type": "string" - }, - "snapshotVersionMax": { - "type": "string" - }, - "snapshotVersionMin": { - "type": "string" - }, - "state": { - "type": "string" - }, - "term": { - "type": "string" - } - } - }, - "Statistics": { - "description": "The definition of node statistics.", - "properties": { - "name": { - "description": "The name of the node.", - "type": "string" - }, - "status": { - "description": "Node's status.", - "type": "string", - "default": "HEALTHY", - "enum": [ - "HEALTHY", - "UNHEALTHY", - "UNAVAILABLE", - "TIMEOUT" - ] - }, - "bootstrapped": { - "type": "boolean" - }, - "dbLoaded": { - "type": "boolean" - }, - "initialLastAppliedIndex": { - "type": "number", - "format": "uint64" - }, - "lastAppliedIndex": { - "type": "number" - }, - "isVoter": { - "type": "boolean" - }, - "leaderId": { - "type": "object" - }, - "leaderAddress": { - "type": "object" - }, - "open": { - "type": "boolean" - }, - "ready": { - "type": "boolean" - }, - "candidates": { - "type": "object" - }, - "raft": { - "description": "Weaviate Raft statistics.", - "type": "object", - "$ref": "#/definitions/RaftStatistics" - } - } - }, - "ClusterStatisticsResponse": { - "description": "The cluster statistics of all of the Weaviate nodes", - "type": "object", - "properties": { - "statistics": { - "type": "array", - "items": { - "$ref": "#/definitions/Statistics" - } - }, - "synchronized": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "SingleRef": { - "description": "Either set beacon (direct reference) or set collection (class) and schema (concept reference)", - "properties": { - "class": { - "description": "If using a concept reference (rather than a direct reference), specify the desired collection (class) name here.", - "format": "uri", - "type": "string" - }, - "schema": { - "description": "If using a concept reference (rather than a direct reference), specify the desired properties here", - "$ref": "#/definitions/PropertySchema" - }, - "beacon": { - "description": "If using a direct reference, specify the URI to point to the cross-reference here. Should be in the form of weaviate://localhost/ for the example of a local cross-reference to an object", - "format": "uri", - "type": "string" - }, - "href": { - "description": "If using a direct reference, this read-only fields provides a link to the referenced resource. If 'origin' is globally configured, an absolute URI is shown - a relative URI otherwise.", - "format": "uri", - "type": "string" - }, - "classification": { - "description": "Additional Meta information about classifications if the item was part of one", - "$ref": "#/definitions/ReferenceMetaClassification" - } - } - }, - "AdditionalProperties": { - "description": "(Response only) Additional meta information about a single object.", - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "ReferenceMetaClassification": { - "description": "This meta field contains additional info about the classified reference property", - "properties": { - "overallCount": { - "description": "overall neighbors checked as part of the classification. In most cases this will equal k, but could be lower than k - for example if not enough data was present", - "type": "number", - "format": "int64" - }, - "winningCount": { - "description": "size of the winning group, a number between 1..k", - "type": "number", - "format": "int64" - }, - "losingCount": { - "description": "size of the losing group, can be 0 if the winning group size equals k", - "type": "number", - "format": "int64" - }, - "closestOverallDistance": { - "description": "The lowest distance of any neighbor, regardless of whether they were in the winning or losing group", - "type": "number", - "format": "float32" - }, - "winningDistance": { - "description": "deprecated - do not use, to be removed in 0.23.0", - "type": "number", - "format": "float32" - }, - "meanWinningDistance": { - "description": "Mean distance of all neighbors from the winning group", - "type": "number", - "format": "float32" - }, - "closestWinningDistance": { - "description": "Closest distance of a neighbor from the winning group", - "type": "number", - "format": "float32" - }, - "closestLosingDistance": { - "description": "The lowest distance of a neighbor in the losing group. Optional. If k equals the size of the winning group, there is no losing group", - "type": "number", - "format": "float32", - "x-nullable": true - }, - "losingDistance": { - "description": "deprecated - do not use, to be removed in 0.23.0", - "type": "number", - "format": "float32", - "x-nullable": true - }, - "meanLosingDistance": { - "description": "Mean distance of all neighbors from the losing group. Optional. If k equals the size of the winning group, there is no losing group.", - "type": "number", - "format": "float32", - "x-nullable": true - } - } - }, - "BatchReference": { - "properties": { - "from": { - "description": "Long-form beacon-style URI to identify the source of the cross-reference, including the property name. Should be in the form of `weaviate://localhost/objects///`, where `` and `` must represent the cross-reference property of the source class to be used.", - "format": "uri", - "type": "string", - "example": "weaviate://localhost/Zoo/a5d09582-4239-4702-81c9-92a6e0122bb4/hasAnimals" - }, - "to": { - "description": "Short-form URI to point to the cross-reference. Should be in the form of `weaviate://localhost/` for the example of a local cross-reference to an object.", - "example": "weaviate://localhost/97525810-a9a5-4eb0-858a-71449aeb007f", - "format": "uri", - "type": "string" - }, - "tenant": { - "type": "string", - "description": "Name of the reference tenant." - } - } - }, - "BatchReferenceResponse": { - "allOf": [ - { - "$ref": "#/definitions/BatchReference" - }, - { - "properties": { - "result": { - "description": "Results for this specific reference.", - "format": "object", - "properties": { - "status": { - "type": "string", - "default": "SUCCESS", - "enum": [ - "SUCCESS", - "FAILED" - ] - }, - "errors": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - } - ], - "type": "object" - }, - "GeoCoordinates": { - "properties": { - "latitude": { - "description": "The latitude of the point on earth in decimal form.", - "format": "float", - "type": "number", - "x-nullable": true - }, - "longitude": { - "description": "The longitude of the point on earth in decimal form.", - "format": "float", - "type": "number", - "x-nullable": true - } - } - }, - "PhoneNumber": { - "properties": { - "input": { - "description": "The raw input as the phone number is present in your raw data set. It will be parsed into the standardized formats if valid.", - "type": "string" - }, - "internationalFormatted": { - "description": "Read-only. Parsed result in the international format (e.g. `+49 123 456789`).", - "type": "string" - }, - "defaultCountry": { - "description": "Optional. The ISO 3166-1 alpha-2 country code. This is used to figure out the correct `countryCode` and international format if only a national number (e.g. `0123 4567`) is provided.", - "type": "string" - }, - "countryCode": { - "description": "Read-only. The numerical country code (e.g. `49`).", - "format": "uint64", - "type": "number" - }, - "national": { - "description": "Read-only. The numerical representation of the national part.", - "format": "uint64", - "type": "number" - }, - "nationalFormatted": { - "description": "Read-only. Parsed result in the national format (e.g. `0123 456789`).", - "type": "string" - }, - "valid": { - "description": "Read-only. Indicates whether the parsed number is a valid phone number.", - "type": "boolean" - } - } - }, - "Object": { - "properties": { - "class": { - "description": "Name of the collection (class) the object belongs to.", - "type": "string" - }, - "vectorWeights": { - "$ref": "#/definitions/VectorWeights" - }, - "properties": { - "$ref": "#/definitions/PropertySchema" - }, - "id": { - "description": "The UUID of the object.", - "format": "uuid", - "type": "string" - }, - "creationTimeUnix": { - "description": "(Response only) Timestamp of creation of this object in milliseconds since epoch UTC.", - "format": "int64", - "type": "integer" - }, - "lastUpdateTimeUnix": { - "description": "(Response only) Timestamp of the last object update in milliseconds since epoch UTC.", - "format": "int64", - "type": "integer" - }, - "vector": { - "description": "This field returns vectors associated with the object. C11yVector, Vector or Vectors values are possible.", - "$ref": "#/definitions/C11yVector" - }, - "vectors": { - "description": "This field returns vectors associated with the object.", - "$ref": "#/definitions/Vectors" - }, - "tenant": { - "description": "The name of the tenant the object belongs to.", - "type": "string" - }, - "additional": { - "$ref": "#/definitions/AdditionalProperties" - } - }, - "type": "object" - }, - "ObjectsGetResponse": { - "allOf": [ - { - "$ref": "#/definitions/Object" - }, - { - "properties": { - "deprecations": { - "type": "array", - "items": { - "$ref": "#/definitions/Deprecation" - } - } - } - }, - { - "properties": { - "result": { - "description": "Results for this specific object.", - "format": "object", - "properties": { - "status": { - "type": "string", - "default": "SUCCESS", - "enum": [ - "SUCCESS", - "FAILED" - ] - }, - "errors": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - } - ], - "type": "object" - }, - "BatchDelete": { - "type": "object", - "properties": { - "match": { - "description": "Outlines how to find the objects to be deleted.", - "type": "object", - "properties": { - "class": { - "description": "The name of the collection (class) from which to delete objects.", - "type": "string", - "example": "City" - }, - "where": { - "description": "Filter to limit the objects to be deleted.", - "type": "object", - "$ref": "#/definitions/WhereFilter" - } - } - }, - "output": { - "description": "Controls the verbosity of the output, possible values are: `minimal`, `verbose`. Defaults to `minimal`.", - "type": "string", - "default": "minimal" - }, - "deletionTimeUnixMilli": { - "description": "Timestamp of deletion in milliseconds since epoch UTC.", - "format": "int64", - "type": "integer", - "x-nullable": true - }, - "dryRun": { - "description": "If true, the call will show which objects would be matched using the specified filter without deleting any objects.

Depending on the configured verbosity, you will either receive a count of affected objects, or a list of IDs.", - "type": "boolean", - "default": false - } - } - }, - "BatchDeleteResponse": { - "description": "Delete Objects response.", - "type": "object", - "properties": { - "match": { - "description": "Outlines how to find the objects to be deleted.", - "type": "object", - "properties": { - "class": { - "description": "The name of the collection (class) from which to delete objects.", - "type": "string", - "example": "City" - }, - "where": { - "description": "Filter to limit the objects to be deleted.", - "type": "object", - "$ref": "#/definitions/WhereFilter" - } - } - }, - "output": { - "description": "Controls the verbosity of the output, possible values are: `minimal`, `verbose`. Defaults to `minimal`.", - "type": "string", - "default": "minimal" - }, - "deletionTimeUnixMilli": { - "description": "Timestamp of deletion in milliseconds since epoch UTC.", - "format": "int64", - "type": "integer", - "x-nullable": true - }, - "dryRun": { - "description": "If true, objects will not be deleted yet, but merely listed. Defaults to false.", - "type": "boolean", - "default": false - }, - "results": { - "type": "object", - "properties": { - "matches": { - "description": "How many objects were matched by the filter.", - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "limit": { - "description": "The most amount of objects that can be deleted in a single query, equals [`QUERY_MAXIMUM_RESULTS`](https://docs.weaviate.io/deploy/configuration/env-vars#QUERY_MAXIMUM_RESULTS).", - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "successful": { - "description": "How many objects were successfully deleted in this round.", - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "failed": { - "description": "How many objects should have been deleted but could not be deleted.", - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "objects": { - "description": "With output set to `minimal` only objects with error occurred will the be described. Successfully deleted objects would be omitted. Output set to `verbose` will list all of the objects with their respective statuses.", - "type": "array", - "items": { - "description": "Results for this specific Object.", - "format": "object", - "properties": { - "id": { - "description": "The UUID of the object.", - "format": "uuid", - "type": "string" - }, - "status": { - "type": "string", - "default": "SUCCESS", - "enum": [ - "SUCCESS", - "DRYRUN", - "FAILED" - ] - }, - "errors": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - } - } - } - }, - "ObjectsListResponse": { - "description": "List of objects.", - "properties": { - "objects": { - "description": "The actual list of objects.", - "items": { - "$ref": "#/definitions/Object" - }, - "type": "array" - }, - "deprecations": { - "type": "array", - "items": { - "$ref": "#/definitions/Deprecation" - } - }, - "totalResults": { - "description": "The total number of objects for the query. The number of items in a response may be smaller due to paging.", - "format": "int64", - "type": "integer" - } - }, - "type": "object" - }, - "Classification": { - "description": "Manage classifications, trigger them and view status of past classifications.", - "properties": { - "id": { - "description": "ID to uniquely identify this classification run.", - "format": "uuid", - "type": "string", - "example": "ee722219-b8ec-4db1-8f8d-5150bb1a9e0c" - }, - "class": { - "description": "The name of the collection (class) which is used in this classification.", - "type": "string", - "example": "City" - }, - "classifyProperties": { - "description": "Which ref-property to set as part of the classification.", - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "inCountry" - ] - }, - "basedOnProperties": { - "description": "Base the text-based classification on these fields (of type text).", - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "description" - ] - }, - "status": { - "description": "Status of this classification.", - "type": "string", - "enum": [ - "running", - "completed", - "failed" - ], - "example": "running" - }, - "meta": { - "description": "Additional meta information about the classification.", - "type": "object", - "$ref": "#/definitions/ClassificationMeta" - }, - "type": { - "description": "Which algorithm to use for classifications.", - "type": "string" - }, - "settings": { - "description": "Classification-type specific settings.", - "type": "object" - }, - "error": { - "description": "Error message if status == failed.", - "type": "string", - "default": "", - "example": "classify xzy: something went wrong" - }, - "filters": { - "type": "object", - "properties": { - "sourceWhere": { - "description": "Limit the objects to be classified.", - "type": "object", - "$ref": "#/definitions/WhereFilter" - }, - "trainingSetWhere": { - "description": "Limit the training objects to be considered during the classification. Can only be used on types with explicit training sets, such as 'knn'.", - "type": "object", - "$ref": "#/definitions/WhereFilter" - }, - "targetWhere": { - "description": "Limit the possible sources when using an algorithm which doesn't really on training data, e.g. 'contextual'. When using an algorithm with a training set, such as 'knn', limit the training set instead.", - "type": "object", - "$ref": "#/definitions/WhereFilter" - } - } - } - }, - "type": "object" - }, - "ClassificationMeta": { - "description": "Additional information to a specific classification.", - "properties": { - "started": { - "description": "Time when this classification was started.", - "type": "string", - "format": "date-time", - "example": "2017-07-21T17:32:28Z" - }, - "completed": { - "description": "Time when this classification finished.", - "type": "string", - "format": "date-time", - "example": "2017-07-21T17:32:28Z" - }, - "count": { - "description": "Number of objects which were taken into consideration for classification.", - "type": "integer", - "example": 147 - }, - "countSucceeded": { - "description": "Number of objects successfully classified.", - "type": "integer", - "example": 140 - }, - "countFailed": { - "description": "Number of objects which could not be classified - see error message for details.", - "type": "integer", - "example": 7 - } - }, - "type": "object" - }, - "WhereFilter": { - "description": "Filter search results using a where filter.", - "properties": { - "operands": { - "description": "Combine multiple where filters, requires 'And' or 'Or' operator.", - "type": "array", - "items": { - "$ref": "#/definitions/WhereFilter" - } - }, - "operator": { - "description": "Operator to use.", - "type": "string", - "enum": [ - "And", - "Or", - "Equal", - "Like", - "NotEqual", - "GreaterThan", - "GreaterThanEqual", - "LessThan", - "LessThanEqual", - "WithinGeoRange", - "IsNull", - "ContainsAny", - "ContainsAll", - "ContainsNone", - "Not" - ], - "example": "GreaterThanEqual" - }, - "path": { - "description": "Path to the property currently being filtered.", - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "inCity", - "city", - "name" - ] - }, - "valueInt": { - "description": "value as integer", - "type": "integer", - "format": "int64", - "example": 2000, - "x-nullable": true - }, - "valueNumber": { - "description": "value as number/float", - "type": "number", - "format": "float64", - "example": 3.14, - "x-nullable": true - }, - "valueBoolean": { - "description": "value as boolean", - "type": "boolean", - "example": false, - "x-nullable": true - }, - "valueString": { - "description": "value as text (deprecated as of v1.19; alias for valueText)", - "type": "string", - "example": "my search term", - "x-nullable": true - }, - "valueText": { - "description": "value as text", - "type": "string", - "example": "my search term", - "x-nullable": true - }, - "valueDate": { - "description": "value as date (as string)", - "type": "string", - "example": "TODO", - "x-nullable": true - }, - "valueIntArray": { - "description": "value as integer", - "type": "array", - "items": { - "type": "integer", - "format": "int64" - }, - "example": "[100, 200]", - "x-nullable": true, - "x-omitempty": true - }, - "valueNumberArray": { - "description": "value as number/float", - "type": "array", - "items": { - "type": "number", - "format": "float64" - }, - "example": [ - 3.14 - ], - "x-nullable": true, - "x-omitempty": true - }, - "valueBooleanArray": { - "description": "value as boolean", - "type": "array", - "items": { - "type": "boolean" - }, - "example": [ - true, - false - ], - "x-nullable": true, - "x-omitempty": true - }, - "valueStringArray": { - "description": "value as text (deprecated as of v1.19; alias for valueText)", - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "my search term" - ], - "x-nullable": true, - "x-omitempty": true - }, - "valueTextArray": { - "description": "value as text", - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "my search term" - ], - "x-nullable": true, - "x-omitempty": true - }, - "valueDateArray": { - "description": "value as date (as string)", - "type": "array", - "items": { + }, + "ReplicationShardingState": { + "description": "Details the sharding layout for a specific collection, mapping each shard to its set of replicas across the cluster.", + "type": "object", + "properties": { + "collection": { + "description": "The name of the collection.", "type": "string" }, - "example": "TODO", - "x-nullable": true, - "x-omitempty": true - }, - "valueGeoRange": { - "description": "value as geo coordinates and distance", - "type": "object", - "$ref": "#/definitions/WhereFilterGeoRange", - "x-nullable": true - } - }, - "type": "object" - }, - "WhereFilterGeoRange": { - "type": "object", - "description": "Filter within a distance of a georange.", - "properties": { - "geoCoordinates": { - "$ref": "#/definitions/GeoCoordinates", - "x-nullable": false - }, - "distance": { - "type": "object", - "properties": { - "max": { - "type": "number", - "format": "float64" - } - } - } - } - }, - "Tenant": { - "type": "object", - "description": "Attributes representing a single tenant within Weaviate.", - "properties": { - "name": { - "description": "The name of the tenant (required).", - "type": "string" - }, - "activityStatus": { - "description": "The activity status of the tenant, which determines if it is queryable and where its data is stored.

Available Statuses:
- `ACTIVE`: The tenant is fully operational and ready for queries. Data is stored on local, hot storage.
- `INACTIVE`: The tenant is not queryable. Data is stored locally.
- `OFFLOADED`: The tenant is inactive and its data is stored in a remote cloud backend.

Usage Rules:
- On Create: This field is optional and defaults to `ACTIVE`. Allowed values are `ACTIVE` and `INACTIVE`.
- On Update: This field is required. Allowed values are `ACTIVE`, `INACTIVE`, and `OFFLOADED`.

Read-Only Statuses:
The following statuses are set by the server and indicate a tenant is transitioning between states:
- `OFFLOADING`
- `ONLOADING`

Note on Deprecated Names:
For backward compatibility, deprecated names are still accepted and are mapped to their modern equivalents: `HOT` (now `ACTIVE`), `COLD` (now `INACTIVE`), `FROZEN` (now `OFFLOADED`), `FREEZING` (now `OFFLOADING`), `UNFREEZING` (now `ONLOADING`).", - "type": "string", - "enum": [ - "ACTIVE", - "INACTIVE", - "OFFLOADED", - "OFFLOADING", - "ONLOADING", - "HOT", - "COLD", - "FROZEN", - "FREEZING", - "UNFREEZING" - ] - } - } - }, - "Alias": { - "type": "object", - "description": "Represents the mapping between an alias name and a collection. An alias provides an alternative name for accessing a collection.", - "properties": { - "alias": { - "description": "The unique name of the alias that serves as an alternative identifier for the collection.", - "type": "string" - }, - "class": { - "description": "The name of the collection (class) to which this alias is mapped.", - "type": "string" - } - } - }, - "AliasResponse": { - "description": "Response object containing a list of alias mappings.", - "type": "object", - "properties": { - "aliases": { - "description": "Array of alias objects, each containing an alias-to-collection mapping.", - "type": "array", - "items": { - "$ref": "#/definitions/Alias" - } - } - } - } - }, - "externalDocs": { - "url": "https://github.com/weaviate/weaviate" - }, - "info": { - "contact": { - "email": "hello@weaviate.io", - "name": "Weaviate", - "url": "https://github.com/weaviate" - }, - "description": "# Introduction
Weaviate is an open source, AI-native vector database that helps developers create intuitive and reliable AI-powered applications.
### Base Path
The base path for the Weaviate server is structured as `[YOUR-WEAVIATE-HOST]:[PORT]/v1`. As an example, if you wish to access the `schema` endpoint on a local instance, you would navigate to `http://localhost:8080/v1/schema`. Ensure you replace `[YOUR-WEAVIATE-HOST]` and `[PORT]` with your actual server host and port number respectively.
### Questions?
If you have any comments or questions, please feel free to reach out to us at the community forum [https://forum.weaviate.io/](https://forum.weaviate.io/).
### Issues?
If you find a bug or want to file a feature request, please open an issue on our GitHub repository for [Weaviate](https://github.com/weaviate/weaviate).
### Need more documentation?
For a quickstart, code examples, concepts and more, please visit our [documentation page](https://docs.weaviate.io/weaviate).", - "title": "Weaviate REST API", - "version": "1.36.0-dev" - }, - "parameters": { - "CommonAfterParameterQuery": { - "description": "A threshold UUID of the objects to retrieve after, using an UUID-based ordering. This object is not part of the set.

Must be used with collection name (`class`), typically in conjunction with `limit`.

Note `after` cannot be used with `offset` or `sort`.

For a null value similar to offset=0, set an empty string in the request, i.e. `after=` or `after`.", - "in": "query", - "name": "after", - "required": false, - "type": "string" - }, - "CommonOffsetParameterQuery": { - "description": "The starting index of the result window. Note `offset` will retrieve `offset+limit` results and return `limit` results from the object with index `offset` onwards. Limited by the value of `QUERY_MAXIMUM_RESULTS`.

Should be used in conjunction with `limit`.

Cannot be used with `after`.", - "format": "int64", - "in": "query", - "name": "offset", - "required": false, - "type": "integer", - "default": 0 - }, - "CommonLimitParameterQuery": { - "description": "The maximum number of items to be returned per page. The default is 25 unless set otherwise as an environment variable.", - "format": "int64", - "in": "query", - "name": "limit", - "required": false, - "type": "integer" - }, - "CommonIncludeParameterQuery": { - "description": "Include additional information, such as classification information. Allowed values include: `classification`, `vector` and `interpretation`.", - "in": "query", - "name": "include", - "required": false, - "type": "string" - }, - "CommonConsistencyLevelParameterQuery": { - "description": "Determines how many replicas must acknowledge a request before it is considered successful.", - "in": "query", - "name": "consistency_level", - "required": false, - "type": "string" - }, - "CommonTenantParameterQuery": { - "description": "Specifies the tenant in a request targeting a multi-tenant collection (class).", - "in": "query", - "name": "tenant", - "required": false, - "type": "string" - }, - "CommonNodeNameParameterQuery": { - "description": "The target node which should fulfill the request.", - "in": "query", - "name": "node_name", - "required": false, - "type": "string" - }, - "CommonSortParameterQuery": { - "description": "Name(s) of the property to sort by - e.g. `city`, or `country,city`.", - "in": "query", - "name": "sort", - "required": false, - "type": "string" - }, - "CommonOrderParameterQuery": { - "description": "Order parameter to tell how to order (asc or desc) data within given field. Should be used in conjunction with `sort` parameter. If providing multiple `sort` values, provide multiple `order` values in corresponding order, e.g.: `sort=author_name,title&order=desc,asc`.", - "in": "query", - "name": "order", - "required": false, - "type": "string" - }, - "CommonClassParameterQuery": { - "description": "The collection from which to query objects.

Note that if the collection name (`class`) is not provided, the response will not include any objects.", - "in": "query", - "name": "class", - "required": false, - "type": "string" - }, - "CommonOutputVerbosityParameterQuery": { - "description": "Controls the verbosity of the output, possible values are: `minimal`, `verbose`. Defaults to `minimal`.", - "in": "query", - "name": "output", - "required": false, - "type": "string", - "default": "minimal" - } - }, - "paths": { - "/": { - "get": { - "description": "Get links to other endpoints to help discover the REST API.", - "summary": "List available endpoints", - "operationId": "weaviate.root", - "responses": { - "200": { - "description": "Weaviate is alive and ready.", - "schema": { - "type": "object", - "properties": { - "links": { - "type": "array", - "items": { - "$ref": "#/definitions/Link" - } - } - } + "shards": { + "description": "An array detailing each shard within the collection and the nodes hosting its replicas.", + "type": "array", + "items": { + "$ref": "#/definitions/ReplicationShardReplicas" } } } - } - }, - "/.well-known/live": { - "get": { - "summary": "Check application liveness", - "description": "Indicates if the Weaviate instance is running and responsive to basic HTTP requests. Primarily used for health checks, such as Kubernetes liveness probes.", - "operationId": "weaviate.wellknown.liveness", - "responses": { - "200": { - "description": "The application is alive and responding to HTTP requests." - } - } - } - }, - "/.well-known/ready": { - "get": { - "summary": "Check application readiness", - "description": "Indicates if the Weaviate instance has completed its startup routines and is prepared to accept user traffic (data import, queries, etc.). Used for readiness checks, such as Kubernetes readiness probes.", - "operationId": "weaviate.wellknown.readiness", - "responses": { - "200": { - "description": "The application is ready to serve traffic." - }, - "503": { - "description": "The application is not ready to serve traffic. Traffic should be directed to other available replicas if applicable." - } - } - } - }, - "/.well-known/openid-configuration": { - "get": { - "summary": "Get OIDC configuration", - "description": "Provides OpenID Connect (OIDC) discovery information if OIDC authentication is configured for Weaviate. Returns details like the token issuer URL, client ID, and required scopes.", - "responses": { - "200": { - "description": "OIDC configuration details returned successfully.", - "schema": { - "type": "object", - "properties": { - "href": { - "description": "The OIDC issuer URL to redirect to for authentication.", - "type": "string" - }, - "clientId": { - "description": "The OAuth Client ID configured for Weaviate.", - "type": "string" - }, - "scopes": { - "description": "The required OAuth scopes for authentication.", - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": true - } - } - } - }, - "404": { - "description": "OIDC provider is not configured for this Weaviate instance." - }, - "500": { - "description": "An internal server error occurred while retrieving OIDC configuration. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "tags": [ - "well-known", - "oidc", - "discovery" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - } - }, - "/replication/replicate": { - "post": { - "summary": "Initiate a replica movement", - "description": "Begins an asynchronous operation to move or copy a specific shard replica from its current node to a designated target node. The operation involves copying data, synchronizing, and potentially decommissioning the source replica.", - "operationId": "replicate", - "x-serviceIds": [ - "weaviate.replication.replicate" - ], - "tags": [ - "replication" - ], - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/ReplicationReplicateReplicaRequest" - } - } - ], - "responses": { - "200": { - "description": "Replication operation registered successfully. ID of the operation is returned.", - "schema": { - "$ref": "#/definitions/ReplicationReplicateReplicaResponse" - } - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + }, + "ReplicationReplicateDetailsReplicaStatusError": { + "description": "Represents an error encountered during a replication operation, including its timestamp and a human-readable message.", + "type": "object", + "properties": { + "whenErroredUnixMs": { + "description": "The unix timestamp in ms when the error occurred. This is an approximate time and so should not be used for precise timing.", + "format": "int64", + "type": "integer" }, - "501": { - "description": "Replica movement operations are disabled.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "message": { + "description": "A human-readable message describing the error.", + "type": "string" } } }, - "delete": { - "summary": "Delete all replication operations", - "description": "Schedules all replication operations for deletion across all collections, shards, and nodes.", - "operationId": "deleteAllReplications", - "x-serviceIds": [ - "weaviate.replication.deleteAllReplications" - ], - "tags": [ - "replication" - ], - "responses": { - "204": { - "description": "Replication operation registered successfully" - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "ReplicationReplicateDetailsReplicaStatus": { + "description": "Represents the current or historical status of a shard replica involved in a replication operation, including its operational state and any associated errors.", + "type": "object", + "properties": { + "state": { + "description": "The current operational state of the replica during the replication process.", + "type": "string", + "enum": [ + "REGISTERED", + "HYDRATING", + "FINALIZING", + "DEHYDRATING", + "READY", + "CANCELLED" + ] }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "whenStartedUnixMs": { + "description": "The UNIX timestamp in ms when this state was first entered. This is an approximate time and so should not be used for precise timing.", + "format": "int64", + "type": "integer" }, - "501": { - "description": "Replica movement operations are disabled.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "errors": { + "description": "A list of error messages encountered by this replica during the replication operation, if any.", + "type": "array", + "items": { + "$ref": "#/definitions/ReplicationReplicateDetailsReplicaStatusError" } } } - } - }, - "/replication/replicate/force-delete": { - "post": { - "summary": "Force delete replication operations", - "description": "USE AT OWN RISK! Synchronously force delete operations from the FSM. This will not perform any checks on which state the operation is in so may lead to data corruption or loss. It is recommended to first scale the number of replication engine workers to 0 before calling this endpoint to ensure no operations are in-flight.", - "operationId": "forceDeleteReplications", - "x-serviceIds": [ - "weaviate.replication.forceDeleteReplications" - ], - "tags": [ - "replication" - ], - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "$ref": "#/definitions/ReplicationReplicateForceDeleteRequest" - } - } - ], - "responses": { - "200": { - "description": "Replication operations force deleted successfully.", - "schema": { - "$ref": "#/definitions/ReplicationReplicateForceDeleteResponse" - } - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + }, + "ReplicationReplicateDetailsReplicaResponse": { + "description": "Provides a comprehensive overview of a specific replication operation, detailing its unique ID, the involved collection, shard, source and target nodes, transfer type, current status, and optionally, its status history.", + "properties": { + "id": { + "description": "The unique identifier (ID) of this specific replication operation.", + "format": "uuid", + "type": "string" }, - "401": { - "description": "Unauthorized or invalid credentials." + "shard": { + "description": "The name of the shard involved in this replication operation.", + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "collection": { + "description": "The name of the collection to which the shard being replicated belongs.", + "type": "string" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "sourceNode": { + "description": "The identifier of the node from which the replica is being moved or copied (the source node).", + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - }, - "/replication/replicate/{id}": { - "get": { - "summary": "Retrieve a replication operation", - "description": "Fetches the current status and detailed information for a specific replication operation, identified by its unique ID. Optionally includes historical data of the operation's progress if requested.", - "operationId": "replicationDetails", - "x-serviceIds": [ - "weaviate.replication.replicate.details" - ], - "tags": [ - "replication" - ], - "parameters": [ - { - "name": "id", - "in": "path", - "format": "uuid", - "description": "The ID of the replication operation to get details for.", - "required": true, + "targetNode": { + "description": "The identifier of the node to which the replica is being moved or copied (the target node).", "type": "string" }, - { - "name": "includeHistory", - "in": "query", - "description": "Whether to include the history of the replication operation.", - "required": false, - "type": "boolean" - } - ], - "responses": { - "200": { - "description": "The details of the replication operation.", - "schema": { - "$ref": "#/definitions/ReplicationReplicateDetailsReplicaResponse" - } + "type": { + "description": "Indicates whether the operation is a `COPY` (source replica remains) or a `MOVE` (source replica is removed after successful transfer).", + "type": "string", + "enum": [ + "COPY", + "MOVE" + ] }, - "401": { - "description": "Unauthorized or invalid credentials." + "uncancelable": { + "description": "Whether the replica operation can't be cancelled.", + "type": "boolean" }, - "403": { - "description": "Forbidden.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "scheduledForCancel": { + "description": "Whether the replica operation is scheduled for cancellation.", + "type": "boolean" }, - "404": { - "description": "Shard replica operation not found." + "scheduledForDelete": { + "description": "Whether the replica operation is scheduled for deletion.", + "type": "boolean" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "status": { + "description": "An object detailing the current operational state of the replica movement and any errors encountered.", + "type": "object", + "$ref": "#/definitions/ReplicationReplicateDetailsReplicaStatus" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "statusHistory": { + "description": "An array detailing the historical sequence of statuses the replication operation has transitioned through, if requested and available.", + "type": "array", + "items": { + "$ref": "#/definitions/ReplicationReplicateDetailsReplicaStatus" } }, - "501": { - "description": "Replica movement operations are disabled.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "whenStartedUnixMs": { + "description": "The UNIX timestamp in ms when the replication operation was initiated. This is an approximate time and so should not be used for precise timing.", + "format": "int64", + "type": "integer" } - } + }, + "required": [ + "id", + "shard", + "sourceNode", + "targetNode", + "collection", + "status", + "type" + ] }, - "delete": { - "summary": "Delete a replication operation", - "description": "Removes a specific replication operation. If the operation is currently active, it will be cancelled and its resources cleaned up before the operation is deleted.", - "operationId": "deleteReplication", - "x-serviceIds": [ - "weaviate.replication.replicate.delete" - ], - "tags": [ - "replication" - ], - "parameters": [ - { - "name": "id", - "in": "path", + "ReplicationReplicateForceDeleteRequest": { + "description": "Specifies the parameters available when force deleting replication operations.", + "properties": { + "id": { + "description": "The unique identifier (ID) of the replication operation to be forcefully deleted.", "format": "uuid", - "description": "The ID of the replication operation to delete.", - "required": true, "type": "string" - } - ], - "responses": { - "204": { - "description": "Successfully deleted." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Shard replica operation not found." - }, - "409": { - "description": "The operation is not in a deletable state, e.g. it is a MOVE op in the DEHYDRATING state.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } }, - "501": { - "description": "Replica movement operations are disabled.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - }, - "/replication/replicate/list": { - "get": { - "summary": "List replication operations", - "description": "Retrieves a list of currently registered replication operations, optionally filtered by collection, shard, or node ID.", - "operationId": "listReplication", - "x-serviceIds": [ - "weaviate.replication.replicate.details" - ], - "tags": [ - "replication" - ], - "parameters": [ - { - "name": "targetNode", - "in": "query", - "description": "The name of the target node to get details for.", - "required": false, + "collection": { + "description": "The name of the collection to which the shard being replicated belongs.", "type": "string" }, - { - "name": "collection", - "in": "query", - "description": "The name of the collection to get details for.", - "required": false, + "shard": { + "description": "The identifier of the shard involved in the replication operations.", "type": "string" }, - { - "name": "shard", - "in": "query", - "description": "The shard to get details for.", - "required": false, + "node": { + "description": "The name of the target node where the replication operations are registered.", "type": "string" }, - { - "name": "includeHistory", - "in": "query", - "description": "Whether to include the history of the replication operation.", - "required": false, - "type": "boolean" - } - ], - "responses": { - "200": { - "description": "The details of the replication operations.", - "schema": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/ReplicationReplicateDetailsReplicaResponse" - } - } - }, - "400": { - "description": "Bad request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "501": { - "description": "Replica movement operations are disabled.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - }, - "/replication/replicate/{id}/cancel": { - "post": { - "summary": "Cancel a replication operation", - "description": "Requests the cancellation of an active replication operation identified by its ID. The operation will be stopped, but its record will remain in the `CANCELLED` state (can't be resumed) and will not be automatically deleted.", - "operationId": "cancelReplication", - "x-serviceIds": [ - "weaviate.replication.replicate.cancel" - ], - "tags": [ - "replication" - ], - "parameters": [ - { - "name": "id", - "in": "path", - "format": "uuid", - "description": "The ID of the replication operation to cancel.", - "required": true, - "type": "string" + "dryRun": { + "description": "If true, the operation will not actually delete anything but will return the expected outcome of the deletion.", + "type": "boolean", + "default": false } - ], - "responses": { - "204": { - "description": "Successfully cancelled." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + }, + "type": "object" + }, + "ReplicationReplicateForceDeleteResponse": { + "description": "Provides the UUIDs that were successfully force deleted as part of the replication operation. If dryRun is true, this will return the expected outcome without actually deleting anything.", + "properties": { + "deleted": { + "description": "The unique identifiers (IDs) of the replication operations that were forcefully deleted.", + "type": "array", + "items": { + "format": "uuid", + "type": "string" } }, - "404": { - "description": "Shard replica operation not found." - }, - "409": { - "description": "The operation is not in a cancellable state, e.g. it is READY or is a MOVE op in the DEHYDRATING state.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "dryRun": { + "description": "Indicates whether the operation was a dry run (true) or an actual deletion (false).", + "type": "boolean" + } + }, + "type": "object" + }, + "PeerUpdate": { + "description": "A single peer in the network.", + "properties": { + "id": { + "description": "The session ID of the peer.", + "type": "string", + "format": "uuid" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "name": { + "description": "Human readable name.", + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "uri": { + "description": "The location where the peer is exposed to the internet.", + "type": "string", + "format": "uri" }, - "501": { - "description": "Replica movement operations are disabled.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "schemaHash": { + "description": "The latest known hash of the peer's schema.", + "type": "string" } } - } - }, - "/replication/sharding-state": { - "get": { - "summary": "Get sharding state", - "description": "Fetches the current sharding state, including replica locations and statuses, for all collections or a specified collection. If a shard name is provided along with a collection, the state for that specific shard is returned.", - "operationId": "getCollectionShardingState", - "x-serviceIds": [ - "weaviate.replication.shardingstate.collection.get" - ], - "tags": [ - "replication" - ], - "parameters": [ - { - "name": "collection", - "in": "query", - "description": "The collection name to get the sharding state for.", - "required": false, + }, + "PeerUpdateList": { + "description": "List of known peers.", + "items": { + "$ref": "#/definitions/PeerUpdate" + }, + "type": "array" + }, + "VectorWeights": { + "description": "Allow custom overrides of vector weights as math expressions. E.g. `pancake`: `7` will set the weight for the word pancake to 7 in the vectorization, whereas `w * 3` would triple the originally calculated word. This is an open object, with OpenAPI Specification 3.0 this will be more detailed. See Weaviate docs for more info. In the future this will become a key/value (string/string) object.", + "type": "object" + }, + "PropertySchema": { + "description": "Names and values of an individual property. A returned response may also contain additional metadata, such as from classification or feature projection.", + "type": "object" + }, + "SchemaHistory": { + "description": "This is an open object, with OpenAPI Specification 3.0 this will be more detailed. See Weaviate docs for more info. In the future this will become a key/value OR a SingleRef definition.", + "type": "object" + }, + "Schema": { + "description": "Definitions of semantic schemas (also see: https://github.com/weaviate/weaviate-semantic-schemas).", + "properties": { + "classes": { + "description": "Semantic classes that are available.", + "items": { + "$ref": "#/definitions/Class" + }, + "type": "array" + }, + "maintainer": { + "description": "Email of the maintainer.", + "format": "email", "type": "string" }, - { - "name": "shard", - "in": "query", - "description": "The shard to get the sharding state for.", - "required": false, + "name": { + "description": "Name of the schema.", "type": "string" } - ], - "responses": { - "200": { - "description": "Successfully retrieved sharding state.", - "schema": { - "$ref": "#/definitions/ReplicationShardingStateResponse" - } + }, + "type": "object" + }, + "SchemaClusterStatus": { + "description": "Indicates the health of the schema in a cluster.", + "properties": { + "healthy": { + "description": "True if the cluster is in sync, false if there is an issue (see error).", + "type": "boolean", + "x-omitempty": false }, - "400": { - "description": "Bad request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "error": { + "description": "Contains the sync check error if one occurred", + "type": "string", + "x-omitempty": true }, - "401": { - "description": "Unauthorized or invalid credentials." + "hostname": { + "description": "Hostname of the coordinating node, i.e. the one that received the cluster. This can be useful information if the error message contains phrases such as 'other nodes agree, but local does not', etc.", + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "nodeCount": { + "description": "Number of nodes that participated in the sync check", + "type": "number", + "format": "int" }, - "404": { - "description": "Collection or shard not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "ignoreSchemaSync": { + "description": "The cluster check at startup can be ignored (to recover from an out-of-sync situation).", + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "Class": { + "properties": { + "class": { + "description": "Name of the collection (formerly 'class') (required). Multiple words should be concatenated in CamelCase, e.g. `ArticleAuthor`.", + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "vectorConfig": { + "description": "Configure named vectors. Either use this field or `vectorizer`, `vectorIndexType`, and `vectorIndexConfig` fields. Available from `v1.24.0`.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/VectorConfig" } }, - "501": { - "description": "Replica movement operations are disabled.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - }, - "/replication/scale": { - "get": { - "summary": "Get replication scale plan", - "description": "Computes and returns a replication scale plan for a given collection and desired replication factor. The plan includes, for each shard, a list of nodes to be added and a list of nodes to be removed.", - "operationId": "getReplicationScalePlan", - "x-serviceIds": [ - "weaviate.replication.scale.get" - ], - "tags": [ - "replication" - ], - "produces": [ - "application/json" - ], - "parameters": [ - { - "name": "collection", - "in": "query", - "description": "The collection name to get the scaling plan for.", - "required": true, + "vectorIndexType": { + "description": "Name of the vector index type to use for the collection (e.g. `hnsw` or `flat`).", "type": "string" }, - { - "name": "replicationFactor", - "in": "query", - "description": "The desired replication factor to scale to. Must be a positive integer greater than zero.", - "required": true, - "type": "integer", - "minimum": 1 - } - ], - "responses": { - "200": { - "description": "Replication scale plan showing node additions and removals per shard.", - "schema": { - "$ref": "#/definitions/ReplicationScalePlan" - } + "vectorIndexConfig": { + "description": "Vector-index config, that is specific to the type of index selected in vectorIndexType", + "type": "object" }, - "400": { - "description": "Bad request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "shardingConfig": { + "description": "Manage how the index should be sharded and distributed in the cluster", + "type": "object" }, - "401": { - "description": "Unauthorized or invalid credentials." + "replicationConfig": { + "$ref": "#/definitions/ReplicationConfig" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "invertedIndexConfig": { + "$ref": "#/definitions/InvertedIndexConfig" }, - "404": { - "description": "Collection not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "multiTenancyConfig": { + "$ref": "#/definitions/MultiTenancyConfig" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "objectTtlConfig": { + "$ref": "#/definitions/ObjectTtlConfig" }, - "501": { - "description": "Replica movement operations are disabled.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "vectorizer": { + "description": "Specify how the vectors for this collection should be determined. The options are either `none` - this means you have to import a vector with each object yourself - or the name of a module that provides vectorization capabilities, such as `text2vec-weaviate`. If left empty, it will use the globally configured default ([`DEFAULT_VECTORIZER_MODULE`](https://docs.weaviate.io/deploy/configuration/env-vars)) which can itself either be `none` or a specific module.", + "type": "string" + }, + "moduleConfig": { + "description": "Configuration specific to modules in a collection context.", + "type": "object" + }, + "description": { + "description": "Description of the collection for metadata purposes.", + "type": "string" + }, + "properties": { + "description": "Define properties of the collection.", + "items": { + "$ref": "#/definitions/Property" + }, + "type": "array" } - } + }, + "type": "object" }, - "post": { - "summary": "Apply replication scaling plan", - "description": "Apply a replication scaling plan that specifies nodes to add or remove per shard for a given collection.", - "operationId": "applyReplicationScalePlan", - "x-serviceIds": [ - "weaviate.replication.scale.post" - ], - "tags": [ - "replication" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "The replication scaling plan specifying the collection and its shard-level replica adjustments.", - "required": true, - "schema": { - "$ref": "#/definitions/ReplicationScalePlan" - } - } - ], - "responses": { - "200": { - "description": "List of replication shard copy operation IDs initiated for the scale operation", - "schema": { - "$ref": "#/definitions/ReplicationScaleApplyResponse" - } + "Property": { + "properties": { + "dataType": { + "description": "Data type of the property (required). If it starts with a capital (for example Person), may be a reference to another type.", + "items": { + "type": "string" + }, + "type": "array" }, - "400": { - "description": "Bad request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "description": { + "description": "Description of the property.", + "type": "string" }, - "401": { - "description": "Unauthorized or invalid credentials." + "moduleConfig": { + "description": "Configuration specific to modules in a collection context.", + "type": "object" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "name": { + "description": "The name of the property (required). Multiple words should be concatenated in camelCase, e.g. `nameOfAuthor`.", + "type": "string" }, - "404": { - "description": "Collection not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "indexInverted": { + "description": "(Deprecated). Whether to include this property in the inverted index. If `false`, this property cannot be used in `where` filters, `bm25` or `hybrid` search.

Unrelated to vectorization behavior (deprecated as of v1.19; use indexFilterable or/and indexSearchable instead)", + "type": "boolean", + "x-nullable": true }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "indexFilterable": { + "description": "Whether to include this property in the filterable, Roaring Bitmap index. If `false`, this property cannot be used in `where` filters.

Note: Unrelated to vectorization behavior.", + "type": "boolean", + "x-nullable": true }, - "501": { - "description": "Replica movement operations are disabled.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - }, - "/users/own-info": { - "get": { - "summary": "Get current user info", - "description": "Get information about the currently authenticated user, including username and assigned roles.", - "operationId": "getOwnInfo", - "x-serviceIds": [ - "weaviate.users.get.own-info" - ], - "tags": [ - "users" - ], - "responses": { - "200": { - "description": "Info about the user.", - "schema": { - "$ref": "#/definitions/UserOwnInfo" - } + "indexSearchable": { + "description": "Optional. Should this property be indexed in the inverted index. Defaults to true. Applicable only to properties of data type text and text[]. If you choose false, you will not be able to use this property in bm25 or hybrid search. This property has no affect on vectorization decisions done by modules", + "type": "boolean", + "x-nullable": true }, - "401": { - "description": "Unauthorized or invalid credentials." + "indexRangeFilters": { + "description": "Whether to include this property in the filterable, range-based Roaring Bitmap index. Provides better performance for range queries compared to filterable index in large datasets. Applicable only to properties of data type int, number, date.", + "type": "boolean", + "x-nullable": true }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "tokenization": { + "description": "Determines how a property is indexed. This setting applies to `text` and `text[]` data types. The following tokenization methods are available:

- `word` (default): Splits the text on any non-alphanumeric characters and lowercases the tokens.
- `lowercase`: Splits the text on whitespace and lowercases the tokens.
- `whitespace`: Splits the text on whitespace. This tokenization is case-sensitive.
- `field`: Indexes the entire property value as a single token after trimming whitespace.
- `trigram`: Splits the property into rolling trigrams (three-character sequences).
- `gse`: Uses the `gse` tokenizer, suitable for Chinese language text. [See `gse` docs](https://pkg.go.dev/github.com/go-ego/gse#section-readme).
- `kagome_ja`: Uses the `Kagome` tokenizer with a Japanese (IPA) dictionary. [See `kagome` docs](https://github.com/ikawaha/kagome).
- `kagome_kr`: Uses the `Kagome` tokenizer with a Korean dictionary. [See `kagome` docs](https://github.com/ikawaha/kagome).

See [Reference: Tokenization](https://docs.weaviate.io/weaviate/config-refs/collections#tokenization) for details.", + "type": "string", + "enum": [ + "word", + "lowercase", + "whitespace", + "field", + "trigram", + "gse", + "kagome_kr", + "kagome_ja", + "gse_ch" + ] }, - "501": { - "description": "Replica movement operations are disabled.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - }, - "/users/db": { - "get": { - "summary": "List all users", - "description": "Retrieves a list of all database (`db` user type) users with their roles and status information.", - "operationId": "listAllUsers", - "x-serviceIds": [ - "weaviate.users.db.list_all" - ], - "tags": [ - "users" - ], - "parameters": [ - { - "description": "Whether to include the last time the users were utilized.", - "in": "query", - "name": "includeLastUsedTime", - "required": false, + "nestedProperties": { + "description": "The properties of the nested object(s). Applies to object and object[] data types.", + "items": { + "$ref": "#/definitions/NestedProperty" + }, + "type": "array", + "x-omitempty": true + }, + "disableDuplicatedReferences": { + "description": "If set to false, allows multiple references to the same target object within this property. Setting it to true will enforce uniqueness of references within this property. By default, this is set to true.", "type": "boolean", - "default": false + "x-nullable": true, + "default": true } - ], - "responses": { - "200": { - "description": "Info about the users.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/DBUserInfo" - } - } - }, - "401": { - "description": "Unauthorized or invalid credentials." + }, + "type": "object" + }, + "VectorConfig": { + "properties": { + "vectorizer": { + "description": "Configuration of a specific vectorizer used by this vector", + "type": "object" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "vectorIndexType": { + "description": "Name of the vector index to use, eg. (HNSW)", + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "vectorIndexConfig": { + "description": "Vector-index config, that is specific to the type of index selected in vectorIndexType", + "type": "object" } - } - } - }, - "/users/db/{user_id}": { - "get": { - "summary": "Get user info", - "description": "Retrieve detailed information about a specific database user (`db` user type), including their roles, status, and type.", - "operationId": "getUserInfo", - "x-serviceIds": [ - "weaviate.users.db.get" - ], - "tags": [ - "users" - ], - "parameters": [ - { - "description": "The name of the user.", - "in": "path", - "name": "user_id", - "required": true, + }, + "type": "object" + }, + "NestedProperty": { + "properties": { + "dataType": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { "type": "string" }, - { - "description": "Whether to include the last used time of the given user", - "in": "query", - "name": "includeLastUsedTime", - "required": false, + "name": { + "type": "string" + }, + "indexFilterable": { "type": "boolean", - "default": false - } - ], - "responses": { - "200": { - "description": "Info about the user.", - "schema": { - "$ref": "#/definitions/DBUserInfo" - } + "x-nullable": true }, - "401": { - "description": "Unauthorized or invalid credentials." + "indexSearchable": { + "type": "boolean", + "x-nullable": true }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "indexRangeFilters": { + "type": "boolean", + "x-nullable": true }, - "404": { - "description": "User not found." + "tokenization": { + "type": "string", + "enum": [ + "word", + "lowercase", + "whitespace", + "field", + "trigram", + "gse", + "kagome_kr", + "kagome_ja", + "gse_ch" + ] }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "nestedProperties": { + "description": "The properties of the nested object(s). Applies to object and object[] data types.", + "items": { + "$ref": "#/definitions/NestedProperty" + }, + "type": "array", + "x-omitempty": true + } + }, + "type": "object" + }, + "ShardStatusList": { + "description": "The status of all the shards of a Class", + "items": { + "$ref": "#/definitions/ShardStatusGetResponse" + }, + "type": "array" + }, + "ShardStatusGetResponse": { + "description": "Response body of shard status get request", + "properties": { + "name": { + "description": "Name of the shard", + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "status": { + "description": "Status of the shard", + "type": "string" + }, + "vectorQueueSize": { + "description": "Size of the vector queue of the shard", + "type": "integer", + "x-omitempty": false } } }, - "post": { - "summary": "Create a new user", - "description": "Create a new database (`db` user type) user with the specified name. Returns an API key for the newly created user.", - "operationId": "createUser", - "x-serviceIds": [ - "weaviate.users.db.create" - ], - "tags": [ - "users" - ], - "parameters": [ - { - "description": "The name of the user.", - "in": "path", - "name": "user_id", - "required": true, + "ShardStatus": { + "description": "The status of a single shard", + "properties": { + "status": { + "description": "Status of the shard", "type": "string" - }, - { - "in": "body", - "name": "body", - "required": false, - "schema": { - "type": "object", - "properties": { - "import": { - "type": "boolean", - "description": "EXPERIMENTAL, DONT USE. THIS WILL BE REMOVED AGAIN. - import api key from static user", - "default": false - }, - "createTime": { - "type": "string", - "format": "date-time", - "description": "EXPERIMENTAL, DONT USE. THIS WILL BE REMOVED AGAIN. - set the given time as creation time" - } - } - } } - ], - "responses": { - "201": { - "description": "User created successfully and API key returned.", - "schema": { - "$ref": "#/definitions/UserApiKey" - } + } + }, + "BackupCreateStatusResponse": { + "description": "The definition of a backup create metadata", + "properties": { + "id": { + "description": "The ID of the backup. Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", + "type": "string" }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "backend": { + "description": "Backup backend name e.g. filesystem, gcs, s3.", + "type": "string" }, - "401": { - "description": "Unauthorized or invalid credentials." + "path": { + "description": "Destination path of backup files valid for the selected backend.", + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "error": { + "description": "error message if creation failed", + "type": "string" }, - "404": { - "description": "User not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "status": { + "description": "phase of backup creation process", + "type": "string", + "default": "STARTED", + "enum": [ + "STARTED", + "TRANSFERRING", + "TRANSFERRED", + "FINALIZING", + "SUCCESS", + "FAILED", + "CANCELLING", + "CANCELED" + ] }, - "409": { - "description": "A user with the specified name already exists.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "startedAt": { + "description": "Timestamp when the backup process started", + "type": "string", + "format": "date-time" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "completedAt": { + "description": "Timestamp when the backup process completed (successfully or with failure)", + "type": "string", + "format": "date-time" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "size": { + "description": "Size of the backup in Gibs", + "type": "number", + "format": "float64" } } }, - "delete": { - "summary": "Delete a user", - "description": "Delete a database user. You can't delete your current user.", - "operationId": "deleteUser", - "x-serviceIds": [ - "weaviate.users.db.delete" - ], - "tags": [ - "users" - ], - "parameters": [ - { - "description": "The name of the user.", - "in": "path", - "name": "user_id", - "required": true, + "BackupRestoreStatusResponse": { + "description": "The definition of a backup restore metadata.", + "properties": { + "id": { + "description": "The ID of the backup. Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", "type": "string" - } - ], - "responses": { - "204": { - "description": "Successfully deleted." - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "backend": { + "description": "Backup backend name e.g. filesystem, gcs, s3.", + "type": "string" }, - "404": { - "description": "User not found." + "path": { + "description": "Destination path of backup files valid for the selected backup backend, contains bucket and path.", + "type": "string" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "error": { + "description": "Error message if backup restoration failed.", + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "status": { + "description": "Phase of backup restoration process.", + "type": "string", + "default": "STARTED", + "enum": [ + "STARTED", + "TRANSFERRING", + "TRANSFERRED", + "FINALIZING", + "SUCCESS", + "FAILED", + "CANCELLING", + "CANCELED" + ] } } - } - }, - "/users/db/{user_id}/rotate-key": { - "post": { - "summary": "Rotate API key of a user", - "description": "Revoke the current API key for the specified database user (`db` user type) and generate a new one.", - "operationId": "rotateUserApiKey", - "x-serviceIds": [ - "weaviate.users.db.rotateApiKey" - ], - "tags": [ - "users" - ], - "parameters": [ - { - "description": "The name of the user.", - "in": "path", - "name": "user_id", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "API key successfully updated.", - "schema": { - "$ref": "#/definitions/UserApiKey" - } - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + }, + "BackupConfig": { + "description": "Backup custom configuration.", + "type": "object", + "properties": { + "Endpoint": { + "type": "string", + "description": "Name of the endpoint, e.g. s3.amazonaws.com." }, - "401": { - "description": "Unauthorized or invalid credentials." + "Bucket": { + "type": "string", + "description": "Name of the bucket, container, volume, etc." }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "Path": { + "type": "string", + "description": "Path or key within the bucket." }, - "404": { - "description": "User not found." + "CPUPercentage": { + "description": "Desired CPU core utilization ranging from 1%-80%", + "type": "integer", + "default": 50, + "minimum": 1, + "maximum": 80, + "x-nullable": false }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "ChunkSize": { + "description": "Deprecated, has no effect.", + "type": "integer", + "x-nullable": false, + "x-deprecated": true }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "CompressionLevel": { + "description": "compression level used by compression algorithm", + "type": "string", + "default": "DefaultCompression", + "x-nullable": false, + "enum": [ + "DefaultCompression", + "BestSpeed", + "BestCompression", + "ZstdDefaultCompression", + "ZstdBestSpeed", + "ZstdBestCompression", + "NoCompression" + ] } } - } - }, - "/users/db/{user_id}/activate": { - "post": { - "summary": "Activate a user", - "description": "Activate a deactivated database user (`db` user type).", - "operationId": "activateUser", - "x-serviceIds": [ - "weaviate.users.db.activateUser" - ], - "tags": [ - "users" - ], - "parameters": [ - { - "description": "The name of the user.", - "in": "path", - "name": "user_id", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "User successfully activated." - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." + }, + "RestoreConfig": { + "description": "Backup custom configuration", + "type": "object", + "properties": { + "Endpoint": { + "type": "string", + "description": "name of the endpoint, e.g. s3.amazonaws.com" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "Bucket": { + "type": "string", + "description": "Name of the bucket, container, volume, etc" }, - "404": { - "description": "User not found." + "Path": { + "type": "string", + "description": "Path within the bucket" }, - "409": { - "description": "User already activated." + "CPUPercentage": { + "description": "Desired CPU core utilization ranging from 1%-80%", + "type": "integer", + "default": 50, + "minimum": 1, + "maximum": 80, + "x-nullable": false }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "rolesOptions": { + "description": "How roles should be restored", + "type": "string", + "enum": [ + "noRestore", + "all" + ], + "default": "noRestore" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "usersOptions": { + "description": "How users should be restored", + "type": "string", + "enum": [ + "noRestore", + "all" + ], + "default": "noRestore" } } - } - }, - "/users/db/{user_id}/deactivate": { - "post": { - "summary": "Deactivate a user", - "description": "Deactivate a database user (`db` user type).", - "operationId": "deactivateUser", - "x-serviceIds": [ - "weaviate.users.db.deactivateUser" - ], - "tags": [ - "users" - ], - "parameters": [ - { - "description": "The name of the user.", - "in": "path", - "name": "user_id", - "required": true, + }, + "BackupCreateRequest": { + "description": "Request body for creating a backup for a set of collections.", + "properties": { + "id": { + "description": "The ID of the backup (required). Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", "type": "string" }, - { - "in": "body", - "name": "body", - "required": false, - "schema": { - "type": "object", - "properties": { - "revoke_key": { - "type": "boolean", - "description": "Whether the API key should be revoked when deactivating the user.", - "default": false - } - } - } - } - ], - "responses": { - "200": { - "description": "User successfully deactivated." - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "User not found." - }, - "409": { - "description": "User already deactivated." + "config": { + "description": "Custom configuration for the backup creation process", + "type": "object", + "$ref": "#/definitions/BackupConfig" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "include": { + "description": "List of collections to include in the backup creation process. If not set, all collections are included. Cannot be used together with `exclude`.", + "type": "array", + "items": { + "type": "string" } }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "exclude": { + "description": "List of collections to exclude from the backup creation process. If not set, all collections are included. Cannot be used together with `include`.", + "type": "array", + "items": { + "type": "string" } } } - } - }, - "/authz/roles": { - "get": { - "summary": "Get all roles", - "description": "Get all roles and their assigned permissions.", - "operationId": "getRoles", - "x-serviceIds": [ - "weaviate.authz.get.roles" - ], - "tags": [ - "authz" - ], - "responses": { - "200": { - "description": "Successful response.", - "schema": { - "$ref": "#/definitions/RolesListResponse" - } + }, + "BackupCreateResponse": { + "description": "The definition of a backup create response body", + "properties": { + "id": { + "description": "The ID of the backup. Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", + "type": "string" }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "classes": { + "description": "The list of collections (classes) for which the backup creation process was started.", + "type": "array", + "items": { + "type": "string" } }, - "401": { - "description": "Unauthorized or invalid credentials." + "backend": { + "description": "Backup backend name e.g. filesystem, gcs, s3.", + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "bucket": { + "description": "Name of the bucket, container, volume, etc", + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "path": { + "description": "Path within bucket of backup", + "type": "string" + }, + "error": { + "description": "error message if creation failed", + "type": "string" + }, + "status": { + "description": "phase of backup creation process", + "type": "string", + "default": "STARTED", + "enum": [ + "STARTED", + "TRANSFERRING", + "TRANSFERRED", + "FINALIZING", + "SUCCESS", + "FAILED", + "CANCELLING", + "CANCELED" + ] } } }, - "post": { - "summary": "Create new role", - "description": "Create a new role with the specified permissions.", - "operationId": "createRole", - "x-serviceIds": [ - "weaviate.authz.create.role" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/Role" + "BackupListResponse": { + "description": "The definition of a backup create response body.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "The ID of the backup. Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", + "type": "string" + }, + "classes": { + "description": "The list of collections (classes) for which the backup process was started.", + "type": "array", + "items": { + "type": "string" + } + }, + "status": { + "description": "Status of backup process.", + "type": "string", + "enum": [ + "STARTED", + "TRANSFERRING", + "TRANSFERRED", + "FINALIZING", + "SUCCESS", + "FAILED", + "CANCELLING", + "CANCELED" + ] + }, + "startedAt": { + "description": "Timestamp when the backup process started", + "type": "string", + "format": "date-time" + }, + "completedAt": { + "description": "Timestamp when the backup process completed (successfully or with failure)", + "type": "string", + "format": "date-time" + }, + "size": { + "description": "Size of the backup in Gibs", + "type": "number", + "format": "float64" } } - ], - "responses": { - "201": { - "description": "Role created successfully." - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." + } + }, + "BackupRestoreRequest": { + "description": "Request body for restoring a backup for a set of collections (classes).", + "properties": { + "config": { + "description": "Custom configuration for the backup restoration process.", + "type": "object", + "$ref": "#/definitions/RestoreConfig" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "include": { + "description": "List of collections (classes) to include in the backup restoration process.", + "type": "array", + "items": { + "type": "string" } }, - "409": { - "description": "Role already exists.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "exclude": { + "description": "List of collections (classes) to exclude from the backup restoration process.", + "type": "array", + "items": { + "type": "string" } }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "node_mapping": { + "description": "Allows overriding the node names stored in the backup with different ones. Useful when restoring backups to a different environment.", + "type": "object", + "additionalProperties": { + "type": "string" } }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "overwriteAlias": { + "description": "Allows ovewriting the collection alias if there is a conflict", + "type": "boolean" } } - } - }, - "/authz/roles/{id}/add-permissions": { - "post": { - "summary": "Add permissions to a role", - "description": "Add new permissions to an existing role without affecting current permissions.", - "operationId": "addPermissions", - "x-serviceIds": [ - "weaviate.authz.add.role.permissions" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name (ID) of the role being modified.", - "in": "path", - "name": "id", - "required": true, + }, + "BackupRestoreResponse": { + "description": "The definition of a backup restore response body.", + "properties": { + "id": { + "description": "The ID of the backup. Must be URL-safe and work as a filesystem path, only lowercase, numbers, underscore, minus characters allowed.", "type": "string" }, - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "permissions": { - "type": "array", - "items": { - "$ref": "#/definitions/Permission" - }, - "description": "Permissions to be added to the role." - } - }, - "required": [ - "name", - "permissions" - ] - } - } - ], - "responses": { - "200": { - "description": "Permissions added successfully." - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "classes": { + "description": "The list of collections (classes) for which the backup restoration process was started.", + "type": "array", + "items": { + "type": "string" } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "backend": { + "description": "Backup backend name e.g. filesystem, gcs, s3.", + "type": "string" }, - "404": { - "description": "No role found." + "path": { + "description": "Destination path of backup files valid for the selected backend.", + "type": "string" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "error": { + "description": "Error message if backup restoration failed.", + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "status": { + "description": "Phase of backup restoration process.", + "type": "string", + "default": "STARTED", + "enum": [ + "STARTED", + "TRANSFERRING", + "TRANSFERRED", + "FINALIZING", + "SUCCESS", + "FAILED", + "CANCELLING", + "CANCELED" + ] } } - } - }, - "/authz/roles/{id}/remove-permissions": { - "post": { - "summary": "Remove permissions from a role", - "description": "Permissions can be revoked from a specified role. Removing all permissions from a role will delete the role itself.", - "operationId": "removePermissions", - "x-serviceIds": [ - "weaviate.authz.remove.role.permissions" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name of the role being modified.", - "in": "path", - "name": "id", - "required": true, - "type": "string" + }, + "NodeStats": { + "description": "The summary of Weaviate's statistics.", + "properties": { + "shardCount": { + "description": "The count of Weaviate's shards. To see this value, set `output` to `verbose`.", + "format": "int", + "type": "number", + "x-omitempty": false }, - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "permissions": { - "type": "array", - "items": { - "$ref": "#/definitions/Permission" - }, - "description": "Permissions to remove from the role." - } - }, - "required": [ - "permissions" - ] - } + "objectCount": { + "description": "The total number of objects in DB.", + "format": "int64", + "type": "number", + "x-omitempty": false + } + } + }, + "BatchStats": { + "description": "The summary of a nodes batch queue congestion status.", + "properties": { + "queueLength": { + "description": "How many objects are currently in the batch queue.", + "format": "int", + "type": "number", + "x-omitempty": true, + "x-nullable": true + }, + "ratePerSecond": { + "description": "How many objects are approximately processed from the batch queue per second.", + "format": "int", + "type": "number", + "x-omitempty": false } - ], - "responses": { - "200": { - "description": "Permissions removed successfully." + } + }, + "NodeShardStatus": { + "description": "The definition of a node shard status response body", + "properties": { + "name": { + "description": "The name of the shard.", + "type": "string", + "x-omitempty": false }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "class": { + "description": "The name of shard's collection (class).", + "type": "string", + "x-omitempty": false }, - "401": { - "description": "Unauthorized or invalid credentials." + "objectCount": { + "description": "The number of objects in shard.", + "format": "int64", + "type": "number", + "x-omitempty": false }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "vectorIndexingStatus": { + "description": "The status of the vector indexing process.", + "type": "string", + "x-omitempty": false }, - "404": { - "description": "No role found." + "compressed": { + "description": "The status of vector compression/quantization.", + "type": "boolean", + "x-omitempty": false }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "vectorQueueLength": { + "description": "The length of the vector indexing queue.", + "format": "int64", + "type": "number", + "x-omitempty": false + }, + "loaded": { + "description": "The load status of the shard.", + "type": "boolean", + "x-omitempty": false }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "asyncReplicationStatus": { + "description": "The status of the async replication.", + "type": "array", + "items": { + "$ref": "#/definitions/AsyncReplicationStatus" } + }, + "numberOfReplicas": { + "description": "Number of replicas for the shard.", + "type": [ + "integer", + "null" + ], + "format": "int64", + "x-omitempty": true + }, + "replicationFactor": { + "description": "Minimum number of replicas for the shard.", + "type": [ + "integer", + "null" + ], + "format": "int64", + "x-omitempty": true } } - } - }, - "/authz/roles/{id}": { - "get": { - "summary": "Get a role", - "description": "Fetch a role by its name.", - "operationId": "getRole", - "x-serviceIds": [ - "weaviate.authz.get.role" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name of the role.", - "in": "path", - "name": "id", - "required": true, + }, + "AsyncReplicationStatus": { + "description": "The status of the async replication.", + "properties": { + "objectsPropagated": { + "description": "The number of objects propagated in the most recent iteration.", + "type": "number", + "format": "uint64" + }, + "startDiffTimeUnixMillis": { + "description": "The start time of the most recent iteration.", + "type": "number", + "format": "int64" + }, + "targetNode": { + "description": "The target node of the replication, if set, otherwise empty.", "type": "string" } - ], - "responses": { - "200": { - "description": "Successful response.", - "schema": { - "$ref": "#/definitions/Role" - } + } + }, + "ReplicationAsyncConfig": { + "description": "Configuration for asynchronous replication.", + "type": "object", + "properties": { + "maxWorkers": { + "description": "Maximum number of async replication workers.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "hashtreeHeight": { + "description": "Height of the hashtree used for diffing.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true }, - "401": { - "description": "Unauthorized or invalid credentials." + "frequency": { + "description": "Base frequency in milliseconds at which async replication runs diff calculations.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "frequencyWhilePropagating": { + "description": "Frequency in milliseconds at which async replication runs while propagation is active.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true }, - "404": { - "description": "No role found." + "aliveNodesCheckingFrequency": { + "description": "Interval in milliseconds at which liveness of target nodes is checked.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - }, - "delete": { - "summary": "Delete a role", - "description": "Deleting a role will remove it from the system, and revoke the associated permissions from all users who had this role.", - "operationId": "deleteRole", - "x-serviceIds": [ - "weaviate.authz.delete.role" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name of the role.", - "in": "path", - "name": "id", - "required": true, - "type": "string" - } - ], - "responses": { - "204": { - "description": "Successfully deleted." + "loggingFrequency": { + "description": "Interval in seconds at which async replication logs its status.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "diffBatchSize": { + "description": "Maximum number of object keys included in a single diff batch.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true }, - "401": { - "description": "Unauthorized or invalid credentials." + "diffPerNodeTimeout": { + "description": "Timeout in seconds for computing a diff against a single node.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "prePropagationTimeout": { + "description": "Overall timeout in seconds for the pre-propagation phase.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "propagationTimeout": { + "description": "Timeout in seconds for propagating batch of changes to a node.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true + }, + "propagationLimit": { + "description": "Maximum number of objects to propagate in a single async replication run.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true + }, + "propagationDelay": { + "description": "Delay in milliseconds before newly added or updated objects are propagated.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true + }, + "propagationConcurrency": { + "description": "Maximum number of concurrent propagation workers.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true + }, + "propagationBatchSize": { + "description": "Number of objects to include in a single propagation batch.", + "type": "integer", + "format": "int64", + "x-nullable": true, + "x-omitempty": true } } - } - }, - "/authz/roles/{id}/has-permission": { - "post": { - "summary": "Check whether a role possesses a permission", - "description": "Check whether a role has the specified permissions.", - "operationId": "hasPermission", - "x-serviceIds": [ - "weaviate.authz.has.role.permission" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name of the role.", - "in": "path", - "name": "id", - "required": true, + }, + "NodeStatus": { + "description": "The definition of a backup node status response body", + "properties": { + "name": { + "description": "The name of the node.", "type": "string" }, - { - "description": "The permissions to be checked.", - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/Permission" - } - } - ], - "responses": { - "200": { - "description": "Permission check was successful.", - "schema": { - "type": "boolean" - } + "status": { + "description": "Node's status.", + "type": "string", + "default": "HEALTHY", + "enum": [ + "HEALTHY", + "UNHEALTHY", + "UNAVAILABLE", + "TIMEOUT" + ] }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "version": { + "description": "The version of Weaviate.", + "type": "string" }, - "401": { - "description": "Unauthorized or invalid credentials." + "gitHash": { + "description": "The gitHash of Weaviate.", + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "stats": { + "description": "Weaviate overall statistics.", + "type": "object", + "$ref": "#/definitions/NodeStats" + }, + "batchStats": { + "description": "Weaviate batch statistics.", + "type": "object", + "$ref": "#/definitions/BatchStats" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "shards": { + "description": "The list of the shards with it's statistics.", + "type": "array", + "items": { + "$ref": "#/definitions/NodeShardStatus" } }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "operationalMode": { + "description": "Which mode of operation the node is running in.", + "type": "string", + "enum": [ + "ReadWrite", + "WriteOnly", + "ReadOnly", + "ScaleOut" + ] + } + } + }, + "NodesStatusResponse": { + "description": "The status of all of the Weaviate nodes", + "type": "object", + "properties": { + "nodes": { + "type": "array", + "items": { + "$ref": "#/definitions/NodeStatus" } } } - } - }, - "/authz/roles/{id}/users": { - "get": { - "deprecated": true, - "summary": "Get users assigned to a role", - "description": "Get all the users (`db` + `oidc`) who have been assigned a specific role. Deprecated, will be removed when v1.29 is not supported anymore.", - "operationId": "getUsersForRoleDeprecated", - "x-serviceIds": [ - "weaviate.authz.get.roles.users" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name of the role.", - "in": "path", - "name": "id", - "required": true, + }, + "DistributedTask": { + "description": "Distributed task metadata.", + "type": "object", + "properties": { + "id": { + "description": "The ID of the task.", "type": "string" - } - ], - "responses": { - "200": { - "description": "Users assigned to this role.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "version": { + "description": "The version of the task.", + "type": "integer" }, - "401": { - "description": "Unauthorized or invalid credentials." + "status": { + "description": "The status of the task.", + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "startedAt": { + "description": "The time when the task was created.", + "type": "string", + "format": "date-time" }, - "404": { - "description": "No role found." + "finishedAt": { + "description": "The time when the task was finished.", + "type": "string", + "format": "date-time" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "finishedNodes": { + "description": "The nodes that finished the task.", + "type": "array", + "items": { + "type": "string" } + }, + "error": { + "description": "The high level reason why the task failed.", + "type": "string", + "x-omitempty": true + }, + "payload": { + "description": "The payload of the task.", + "type": "object" } } - } - }, - "/authz/roles/{id}/user-assignments": { - "get": { - "summary": "Get users assigned to a role", - "description": "Fetch a list of users which have the specified role.", - "operationId": "getUsersForRole", - "x-serviceIds": [ - "weaviate.authz.get.roles.users" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name (ID) of the role.", - "in": "path", - "name": "id", - "required": true, - "type": "string" + }, + "DistributedTasks": { + "description": "Active distributed tasks by namespace.", + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/DistributedTask" } - ], - "responses": { - "200": { - "description": "Users assigned to this role.", - "schema": { - "type": "array", - "items": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "userType": { - "$ref": "#/definitions/UserTypeOutput" - } - }, - "required": [ - "name", - "userType" - ] - } - } + } + }, + "RaftStatistics": { + "description": "The definition of Raft statistics.", + "properties": { + "appliedIndex": { + "type": "string" }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "commitIndex": { + "type": "string" }, - "401": { - "description": "Unauthorized or invalid credentials." + "fsmPending": { + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "lastContact": { + "type": "string" }, - "404": { - "description": "No role found." + "lastLogIndex": { + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - }, - "/authz/roles/{id}/group-assignments": { - "get": { - "summary": "Get groups that have a specific role assigned", - "description": "Retrieves a list of all groups that have been assigned a specific role, identified by its name.", - "operationId": "getGroupsForRole", - "x-serviceIds": [ - "weaviate.authz.get.roles.groups" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The unique name of the role.", - "in": "path", - "name": "id", - "required": true, + "lastLogTerm": { "type": "string" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the list of groups that have the role assigned.", - "schema": { - "type": "array", - "items": { - "type": "object", - "properties": { - "groupId": { - "type": "string" - }, - "groupType": { - "$ref": "#/definitions/GroupType" - } - }, - "required": [ - "name", - "groupType" - ] - } - } }, - "400": { - "description": "Bad request", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "lastSnapshotIndex": { + "type": "string" }, - "401": { - "description": "Unauthorized or invalid credentials." + "lastSnapshotTerm": { + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "latestConfiguration": { + "description": "Weaviate Raft nodes.", + "type": "object" }, - "404": { - "description": "The specified role was not found." + "latestConfigurationIndex": { + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - }, - "/authz/users/{id}/roles": { - "get": { - "deprecated": true, - "summary": "Get roles assigned to a user", - "description": "Retrieve the roles assigned to a specific user (`db` + `oidc`). Deprecated, will be removed when 1.29 is not supported anymore", - "operationId": "getRolesForUserDeprecated", - "x-serviceIds": [ - "weaviate.authz.get.users.roles" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name of the user.", - "in": "path", - "name": "id", - "required": true, + "numPeers": { "type": "string" - } - ], - "responses": { - "200": { - "description": "Roles assigned to the user.", - "schema": { - "$ref": "#/definitions/RolesListResponse" - } }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "protocolVersion": { + "type": "string" }, - "401": { - "description": "Unauthorized or invalid credentials." + "protocolVersionMax": { + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "protocolVersionMin": { + "type": "string" }, - "404": { - "description": "No roles found for specified user." + "snapshotVersionMax": { + "type": "string" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "snapshotVersionMin": { + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "state": { + "type": "string" + }, + "term": { + "type": "string" } } - } - }, - "/authz/users/{id}/roles/{userType}": { - "get": { - "summary": "Get roles assigned to a user", - "description": "Get all the roles for a specific user (`db` or `oidc`).", - "operationId": "getRolesForUser", - "x-serviceIds": [ - "weaviate.authz.get.users.roles" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name of the user.", - "in": "path", - "name": "id", - "required": true, + }, + "Statistics": { + "description": "The definition of node statistics.", + "properties": { + "name": { + "description": "The name of the node.", "type": "string" }, - { - "in": "path", - "name": "userType", - "required": true, + "status": { + "description": "Node's status.", "type": "string", + "default": "HEALTHY", "enum": [ - "oidc", - "db" - ], - "description": "The type of the user." + "HEALTHY", + "UNHEALTHY", + "UNAVAILABLE", + "TIMEOUT" + ] + }, + "bootstrapped": { + "type": "boolean" + }, + "dbLoaded": { + "type": "boolean" + }, + "initialLastAppliedIndex": { + "type": "number", + "format": "uint64" + }, + "lastAppliedIndex": { + "type": "number" + }, + "isVoter": { + "type": "boolean" }, - { - "in": "query", - "name": "includeFullRoles", - "required": false, - "type": "boolean", - "default": false, - "description": "Whether to include detailed role information like its assigned permissions." - } - ], - "responses": { - "200": { - "description": "Roles assigned to the user.", - "schema": { - "$ref": "#/definitions/RolesListResponse" - } + "leaderId": { + "type": "object" }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "leaderAddress": { + "type": "object" }, - "401": { - "description": "Unauthorized or invalid credentials." + "open": { + "type": "boolean" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "ready": { + "type": "boolean" }, - "404": { - "description": "No roles found for specified user." + "candidates": { + "type": "object" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "raft": { + "description": "Weaviate Raft statistics.", + "type": "object", + "$ref": "#/definitions/RaftStatistics" + } + } + }, + "ClusterStatisticsResponse": { + "description": "The cluster statistics of all of the Weaviate nodes", + "type": "object", + "properties": { + "statistics": { + "type": "array", + "items": { + "$ref": "#/definitions/Statistics" } }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "synchronized": { + "type": "boolean", + "x-omitempty": false } } - } - }, - "/authz/users/{id}/assign": { - "post": { - "summary": "Assign a role to a user", - "description": "Assign one or more roles to a user. Users can have multiple roles.", - "operationId": "assignRoleToUser", - "x-serviceIds": [ - "weaviate.authz.assign.role.user" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name of the user.", - "in": "path", - "name": "id", - "required": true, + }, + "SingleRef": { + "description": "Either set beacon (direct reference) or set collection (class) and schema (concept reference)", + "properties": { + "class": { + "description": "If using a concept reference (rather than a direct reference), specify the desired collection (class) name here.", + "format": "uri", "type": "string" }, - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "description": "The roles that are assigned to the specified user.", - "items": { - "type": "string" - } - }, - "userType": { - "$ref": "#/definitions/UserTypeInput" - } - } - } + "schema": { + "description": "If using a concept reference (rather than a direct reference), specify the desired properties here", + "$ref": "#/definitions/PropertySchema" + }, + "beacon": { + "description": "If using a direct reference, specify the URI to point to the cross-reference here. Should be in the form of weaviate://localhost/ for the example of a local cross-reference to an object", + "format": "uri", + "type": "string" + }, + "href": { + "description": "If using a direct reference, this read-only fields provides a link to the referenced resource. If 'origin' is globally configured, an absolute URI is shown - a relative URI otherwise.", + "format": "uri", + "type": "string" + }, + "classification": { + "description": "Additional Meta information about classifications if the item was part of one", + "$ref": "#/definitions/ReferenceMetaClassification" } - ], - "responses": { - "200": { - "description": "Role assigned successfully." + } + }, + "AdditionalProperties": { + "description": "(Response only) Additional meta information about a single object.", + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "ReferenceMetaClassification": { + "description": "This meta field contains additional info about the classified reference property", + "properties": { + "overallCount": { + "description": "overall neighbors checked as part of the classification. In most cases this will equal k, but could be lower than k - for example if not enough data was present", + "type": "number", + "format": "int64" }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "winningCount": { + "description": "size of the winning group, a number between 1..k", + "type": "number", + "format": "int64" }, - "401": { - "description": "Unauthorized or invalid credentials." + "losingCount": { + "description": "size of the losing group, can be 0 if the winning group size equals k", + "type": "number", + "format": "int64" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "closestOverallDistance": { + "description": "The lowest distance of any neighbor, regardless of whether they were in the winning or losing group", + "type": "number", + "format": "float32" }, - "404": { - "description": "Specified role or user not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "winningDistance": { + "description": "deprecated - do not use, to be removed in 0.23.0", + "type": "number", + "format": "float32" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - }, - "/authz/users/{id}/revoke": { - "post": { - "summary": "Revoke a role from a user", - "description": "Remove one or more roles from a user.", - "operationId": "revokeRoleFromUser", - "x-serviceIds": [ - "weaviate.authz.revoke.role.user" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name of the user.", - "in": "path", - "name": "id", - "required": true, - "type": "string" + "meanWinningDistance": { + "description": "Mean distance of all neighbors from the winning group", + "type": "number", + "format": "float32" }, - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "description": "The roles to revoke from the specified user.", - "items": { - "type": "string" - } - }, - "userType": { - "$ref": "#/definitions/UserTypeInput" - } - } - } - } - ], - "responses": { - "200": { - "description": "Roles revoked successfully." + "closestWinningDistance": { + "description": "Closest distance of a neighbor from the winning group", + "type": "number", + "format": "float32" }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "closestLosingDistance": { + "description": "The lowest distance of a neighbor in the losing group. Optional. If k equals the size of the winning group, there is no losing group", + "type": "number", + "format": "float32", + "x-nullable": true }, - "401": { - "description": "Unauthorized or invalid credentials." + "losingDistance": { + "description": "deprecated - do not use, to be removed in 0.23.0", + "type": "number", + "format": "float32", + "x-nullable": true }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "meanLosingDistance": { + "description": "Mean distance of all neighbors from the losing group. Optional. If k equals the size of the winning group, there is no losing group.", + "type": "number", + "format": "float32", + "x-nullable": true + } + } + }, + "BatchReference": { + "properties": { + "from": { + "description": "Long-form beacon-style URI to identify the source of the cross-reference, including the property name. Should be in the form of `weaviate://localhost/objects///`, where `` and `` must represent the cross-reference property of the source class to be used.", + "format": "uri", + "type": "string", + "example": "weaviate://localhost/Zoo/a5d09582-4239-4702-81c9-92a6e0122bb4/hasAnimals" }, - "404": { - "description": "Specified role or user not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "to": { + "description": "Short-form URI to point to the cross-reference. Should be in the form of `weaviate://localhost/` for the example of a local cross-reference to an object.", + "example": "weaviate://localhost/97525810-a9a5-4eb0-858a-71449aeb007f", + "format": "uri", + "type": "string" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "tenant": { + "type": "string", + "description": "Name of the reference tenant." } } - } - }, - "/authz/groups/{id}/assign": { - "post": { - "summary": "Assign a role to a group", - "description": "Assign roles to the specified group.", - "operationId": "assignRoleToGroup", - "x-serviceIds": [ - "weaviate.authz.assign.role" - ], - "tags": [ - "authz" - ], - "parameters": [ + }, + "BatchReferenceResponse": { + "allOf": [ { - "description": "The name of the group.", - "in": "path", - "name": "id", - "required": true, - "type": "string" + "$ref": "#/definitions/BatchReference" }, { - "in": "body", - "name": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "description": "The roles to assign to the specified group.", - "items": { - "type": "string" + "properties": { + "result": { + "description": "Results for this specific reference.", + "format": "object", + "properties": { + "status": { + "type": "string", + "default": "SUCCESS", + "enum": [ + "SUCCESS", + "FAILED" + ] + }, + "errors": { + "$ref": "#/definitions/ErrorResponse" } - }, - "groupType": { - "$ref": "#/definitions/GroupType" } } } } ], - "responses": { - "200": { - "description": "Roles assigned successfully." + "type": "object" + }, + "GeoCoordinates": { + "properties": { + "latitude": { + "description": "The latitude of the point on earth in decimal form.", + "format": "float", + "type": "number", + "x-nullable": true }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "longitude": { + "description": "The longitude of the point on earth in decimal form.", + "format": "float", + "type": "number", + "x-nullable": true + } + } + }, + "PhoneNumber": { + "properties": { + "input": { + "description": "The raw input as the phone number is present in your raw data set. It will be parsed into the standardized formats if valid.", + "type": "string" }, - "401": { - "description": "Unauthorized or invalid credentials." + "internationalFormatted": { + "description": "Read-only. Parsed result in the international format (e.g. `+49 123 456789`).", + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "defaultCountry": { + "description": "Optional. The ISO 3166-1 alpha-2 country code. This is used to figure out the correct `countryCode` and international format if only a national number (e.g. `0123 4567`) is provided.", + "type": "string" }, - "404": { - "description": "Role or group not found." + "countryCode": { + "description": "Read-only. The numerical country code (e.g. `49`).", + "format": "uint64", + "type": "number" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "national": { + "description": "Read-only. The numerical representation of the national part.", + "format": "uint64", + "type": "number" + }, + "nationalFormatted": { + "description": "Read-only. Parsed result in the national format (e.g. `0123 456789`).", + "type": "string" + }, + "valid": { + "description": "Read-only. Indicates whether the parsed number is a valid phone number.", + "type": "boolean" } } - } - }, - "/authz/groups/{id}/revoke": { - "post": { - "summary": "Revoke a role from a group", - "description": "Revoke roles from the specified group.", - "operationId": "revokeRoleFromGroup", - "x-serviceIds": [ - "weaviate.authz.revoke.role.group" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The name of the group.", - "in": "path", - "name": "id", - "required": true, + }, + "Object": { + "properties": { + "class": { + "description": "Name of the collection (class) the object belongs to.", "type": "string" }, - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "description": "The roles to revoke from the specified group.", - "items": { - "type": "string" - } - }, - "groupType": { - "$ref": "#/definitions/GroupType" - } - } - } - } - ], - "responses": { - "200": { - "description": "Roles revoked successfully." + "vectorWeights": { + "$ref": "#/definitions/VectorWeights" }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "properties": { + "$ref": "#/definitions/PropertySchema" }, - "401": { - "description": "Unauthorized or invalid credentials." + "id": { + "description": "The UUID of the object.", + "format": "uuid", + "type": "string" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "creationTimeUnix": { + "description": "(Response only) Timestamp of creation of this object in milliseconds since epoch UTC.", + "format": "int64", + "type": "integer" }, - "404": { - "description": "Role or group not found." + "lastUpdateTimeUnix": { + "description": "(Response only) Timestamp of the last object update in milliseconds since epoch UTC.", + "format": "int64", + "type": "integer" }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - } - } - }, - "/authz/groups/{id}/roles/{groupType}": { - "get": { - "summary": "Get roles assigned to a specific group", - "description": "Retrieves a list of all roles assigned to a specific group. The group must be identified by both its name (`id`) and its type (`db` or `oidc`).", - "operationId": "getRolesForGroup", - "x-serviceIds": [ - "weaviate.authz.get.groups.roles" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "description": "The unique name of the group.", - "in": "path", - "name": "id", - "required": true, + "vector": { + "description": "This field returns vectors associated with the object. C11yVector, Vector or Vectors values are possible.", + "$ref": "#/definitions/C11yVector" + }, + "vectors": { + "description": "This field returns vectors associated with the object.", + "$ref": "#/definitions/Vectors" + }, + "tenant": { + "description": "The name of the tenant the object belongs to.", "type": "string" }, + "additional": { + "$ref": "#/definitions/AdditionalProperties" + } + }, + "type": "object" + }, + "ObjectsGetResponse": { + "allOf": [ { - "in": "path", - "name": "groupType", - "required": true, - "type": "string", - "enum": [ - "oidc" - ], - "description": "The type of the group." + "$ref": "#/definitions/Object" }, { - "in": "query", - "name": "includeFullRoles", - "required": false, - "type": "boolean", - "default": false, - "description": "If true, the response will include the full role definitions with all associated permissions. If false, only role names are returned." - } - ], - "responses": { - "200": { - "description": "A list of roles assigned to the specified group.", - "schema": { - "$ref": "#/definitions/RolesListResponse" + "properties": { + "deprecations": { + "type": "array", + "items": { + "$ref": "#/definitions/Deprecation" + } + } } }, - "400": { - "description": "Bad request", - "schema": { - "$ref": "#/definitions/ErrorResponse" + { + "properties": { + "result": { + "description": "Results for this specific object.", + "format": "object", + "properties": { + "status": { + "type": "string", + "default": "SUCCESS", + "enum": [ + "SUCCESS", + "FAILED" + ] + }, + "errors": { + "$ref": "#/definitions/ErrorResponse" + } + } + } } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + ], + "type": "object" + }, + "BatchDelete": { + "type": "object", + "properties": { + "match": { + "description": "Outlines how to find the objects to be deleted.", + "type": "object", + "properties": { + "class": { + "description": "The name of the collection (class) from which to delete objects.", + "type": "string", + "example": "City" + }, + "where": { + "description": "Filter to limit the objects to be deleted.", + "type": "object", + "$ref": "#/definitions/WhereFilter" + } } }, - "404": { - "description": "The specified group was not found." + "output": { + "description": "Controls the verbosity of the output, possible values are: `minimal`, `verbose`. Defaults to `minimal`.", + "type": "string", + "default": "minimal" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "deletionTimeUnixMilli": { + "description": "Timestamp of deletion in milliseconds since epoch UTC.", + "format": "int64", + "type": "integer", + "x-nullable": true }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "dryRun": { + "description": "If true, the call will show which objects would be matched using the specified filter without deleting any objects.

Depending on the configured verbosity, you will either receive a count of affected objects, or a list of IDs.", + "type": "boolean", + "default": false } } - } - }, - "/authz/groups/{groupType}": { - "get": { - "summary": "List all groups of a specific type", - "description": "Retrieves a list of all available group names for a specified group type (`oidc` or `db`).", - "operationId": "getGroups", - "x-serviceIds": [ - "weaviate.authz.get.groups" - ], - "tags": [ - "authz" - ], - "parameters": [ - { - "in": "path", - "name": "groupType", - "required": true, - "type": "string", - "enum": [ - "oidc" - ], - "description": "The type of group to retrieve." - } - ], - "responses": { - "200": { - "description": "A list of group names for the specified type.", - "schema": { - "type": "array", - "items": { - "type": "string" + }, + "BatchDeleteResponse": { + "description": "Delete Objects response.", + "type": "object", + "properties": { + "match": { + "description": "Outlines how to find the objects to be deleted.", + "type": "object", + "properties": { + "class": { + "description": "The name of the collection (class) from which to delete objects.", + "type": "string", + "example": "City" + }, + "where": { + "description": "Filter to limit the objects to be deleted.", + "type": "object", + "$ref": "#/definitions/WhereFilter" } } }, - "400": { - "description": "Bad request", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." + "output": { + "description": "Controls the verbosity of the output, possible values are: `minimal`, `verbose`. Defaults to `minimal`.", + "type": "string", + "default": "minimal" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "deletionTimeUnixMilli": { + "description": "Timestamp of deletion in milliseconds since epoch UTC.", + "format": "int64", + "type": "integer", + "x-nullable": true }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "dryRun": { + "description": "If true, objects will not be deleted yet, but merely listed. Defaults to false.", + "type": "boolean", + "default": false }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "results": { + "type": "object", + "properties": { + "matches": { + "description": "How many objects were matched by the filter.", + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "limit": { + "description": "The most amount of objects that can be deleted in a single query, equals [`QUERY_MAXIMUM_RESULTS`](https://docs.weaviate.io/deploy/configuration/env-vars#QUERY_MAXIMUM_RESULTS).", + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "successful": { + "description": "How many objects were successfully deleted in this round.", + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "failed": { + "description": "How many objects should have been deleted but could not be deleted.", + "type": "number", + "format": "int64", + "x-omitempty": false + }, + "objects": { + "description": "With output set to `minimal` only objects with error occurred will the be described. Successfully deleted objects would be omitted. Output set to `verbose` will list all of the objects with their respective statuses.", + "type": "array", + "items": { + "description": "Results for this specific Object.", + "format": "object", + "properties": { + "id": { + "description": "The UUID of the object.", + "format": "uuid", + "type": "string" + }, + "status": { + "type": "string", + "default": "SUCCESS", + "enum": [ + "SUCCESS", + "DRYRUN", + "FAILED" + ] + }, + "errors": { + "$ref": "#/definitions/ErrorResponse" + } + } + } + } } } } - } - }, - "/objects": { - "get": { - "description": "Retrieves a list of data objects. By default, objects are returned in reverse order of creation. Requires a collection name (`class`) parameter to specify which collection's objects to list, otherwise, returns an empty list.", - "operationId": "objects.list", - "x-serviceIds": [ - "weaviate.local.query" - ], - "parameters": [ - { - "$ref": "#/parameters/CommonAfterParameterQuery" - }, - { - "$ref": "#/parameters/CommonOffsetParameterQuery" - }, - { - "$ref": "#/parameters/CommonLimitParameterQuery" + }, + "ObjectsListResponse": { + "description": "List of objects.", + "properties": { + "objects": { + "description": "The actual list of objects.", + "items": { + "$ref": "#/definitions/Object" + }, + "type": "array" }, - { - "$ref": "#/parameters/CommonIncludeParameterQuery" + "deprecations": { + "type": "array", + "items": { + "$ref": "#/definitions/Deprecation" + } }, - { - "$ref": "#/parameters/CommonSortParameterQuery" + "totalResults": { + "description": "The total number of objects for the query. The number of items in a response may be smaller due to paging.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "Classification": { + "description": "Manage classifications, trigger them and view status of past classifications.", + "properties": { + "id": { + "description": "ID to uniquely identify this classification run.", + "format": "uuid", + "type": "string", + "example": "ee722219-b8ec-4db1-8f8d-5150bb1a9e0c" }, - { - "$ref": "#/parameters/CommonOrderParameterQuery" + "class": { + "description": "The name of the collection (class) which is used in this classification.", + "type": "string", + "example": "City" }, - { - "$ref": "#/parameters/CommonClassParameterQuery" + "classifyProperties": { + "description": "Which ref-property to set as part of the classification.", + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "inCountry" + ] }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" - } - ], - "responses": { - "200": { - "description": "Successful response containing the list of objects. If the collection name (`class`) is not provided, the response will not include any objects.", - "schema": { - "$ref": "#/definitions/ObjectsListResponse" - } + "basedOnProperties": { + "description": "Base the text-based classification on these fields (of type text).", + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "description" + ] }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "status": { + "description": "Status of this classification.", + "type": "string", + "enum": [ + "running", + "completed", + "failed" + ], + "example": "running" }, - "401": { - "description": "Unauthorized or invalid credentials." + "meta": { + "description": "Additional meta information about the classification.", + "type": "object", + "$ref": "#/definitions/ClassificationMeta" }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "type": { + "description": "Which algorithm to use for classifications.", + "type": "string" }, - "404": { - "description": "Successful query result but no matching objects were found." + "settings": { + "description": "Classification-type specific settings.", + "type": "object" }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the specified collection exists.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "error": { + "description": "Error message if status == failed.", + "type": "string", + "default": "", + "example": "classify xzy: something went wrong" }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "filters": { + "type": "object", + "properties": { + "sourceWhere": { + "description": "Limit the objects to be classified.", + "type": "object", + "$ref": "#/definitions/WhereFilter" + }, + "trainingSetWhere": { + "description": "Limit the training objects to be considered during the classification. Can only be used on types with explicit training sets, such as 'knn'.", + "type": "object", + "$ref": "#/definitions/WhereFilter" + }, + "targetWhere": { + "description": "Limit the possible sources when using an algorithm which doesn't really on training data, e.g. 'contextual'. When using an algorithm with a training set, such as 'knn', limit the training set instead.", + "type": "object", + "$ref": "#/definitions/WhereFilter" + } } } }, - "summary": "List objects", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - }, - "post": { - "description": "Creates a new data object. The object's metadata and schema values are validated before creation.

**Note (batch import)**:
If you plan on importing a large number of objects, using the `/batch/objects` endpoint is significantly more efficient than sending multiple single requests.

**Note (idempotence)**:
This operation (POST) fails if an object with the provided ID already exists. To update an existing object, use the PUT or PATCH methods.", - "operationId": "objects.create", - "x-serviceIds": [ - "weaviate.local.add" - ], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "The object to be created.", - "required": true, - "schema": { - "$ref": "#/definitions/Object" - } + "type": "object" + }, + "ClassificationMeta": { + "description": "Additional information to a specific classification.", + "properties": { + "started": { + "description": "Time when this classification was started.", + "type": "string", + "format": "date-time", + "example": "2017-07-21T17:32:28Z" }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" - } - ], - "responses": { - "200": { - "description": "Object created successfully.", - "schema": { - "$ref": "#/definitions/Object" - } + "completed": { + "description": "Time when this classification finished.", + "type": "string", + "format": "date-time", + "example": "2017-07-21T17:32:28Z" }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "count": { + "description": "Number of objects which were taken into consideration for classification.", + "type": "integer", + "example": 147 }, - "401": { - "description": "Unauthorized or invalid credentials." + "countSucceeded": { + "description": "Number of objects successfully classified.", + "type": "integer", + "example": 140 }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "countFailed": { + "description": "Number of objects which could not be classified - see error message for details.", + "type": "integer", + "example": 7 + } + }, + "type": "object" + }, + "WhereFilter": { + "description": "Filter search results using a where filter.", + "properties": { + "operands": { + "description": "Combine multiple where filters, requires 'And' or 'Or' operator.", + "type": "array", + "items": { + "$ref": "#/definitions/WhereFilter" } }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the collection exists and the object properties are valid.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "operator": { + "description": "Operator to use.", + "type": "string", + "enum": [ + "And", + "Or", + "Equal", + "Like", + "NotEqual", + "GreaterThan", + "GreaterThanEqual", + "LessThan", + "LessThanEqual", + "WithinGeoRange", + "IsNull", + "ContainsAny", + "ContainsAll", + "ContainsNone", + "Not" + ], + "example": "GreaterThanEqual" }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "summary": "Create an object", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - } - }, - "/objects/{id}": { - "delete": { - "description": "Deletes an object from the database based on its UUID.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}` endpoint instead.", - "operationId": "objects.delete", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Unique UUID of the object to be deleted.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" + "path": { + "description": "Path to the property currently being filtered.", + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "inCity", + "city", + "name" + ] }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" + "valueInt": { + "description": "value as integer", + "type": "integer", + "format": "int64", + "example": 2000, + "x-nullable": true }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" - } - ], - "responses": { - "204": { - "description": "Object deleted successfully." + "valueNumber": { + "description": "value as number/float", + "type": "number", + "format": "float64", + "example": 3.14, + "x-nullable": true }, - "401": { - "description": "Unauthorized or invalid credentials." + "valueBoolean": { + "description": "value as boolean", + "type": "boolean", + "example": false, + "x-nullable": true }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "valueString": { + "description": "value as text (deprecated as of v1.19; alias for valueText)", + "type": "string", + "example": "my search term", + "x-nullable": true }, - "404": { - "description": "Object not found." + "valueText": { + "description": "value as text", + "type": "string", + "example": "my search term", + "x-nullable": true }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "summary": "Delete an object", - "tags": [ - "objects" - ], - "x-available-in-mqtt": true, - "x-available-in-websocket": true, - "deprecated": true - }, - "get": { - "description": "Get a specific object based on its UUID. Also available as Websocket bus.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}` endpoint instead.", - "operationId": "objects.get", - "x-serviceIds": [ - "weaviate.local.query" - ], - "parameters": [ - { - "description": "Unique UUID of the object to be retrieved.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" + "valueDate": { + "description": "value as date (as string)", + "type": "string", + "example": "TODO", + "x-nullable": true }, - { - "$ref": "#/parameters/CommonIncludeParameterQuery" - } - ], - "responses": { - "200": { - "description": "Successful response containing the object.", - "schema": { - "$ref": "#/definitions/Object" - } + "valueIntArray": { + "description": "value as integer", + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "example": "[100, 200]", + "x-nullable": true, + "x-omitempty": true }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "valueNumberArray": { + "description": "value as number/float", + "type": "array", + "items": { + "type": "number", + "format": "float64" + }, + "example": [ + 3.14 + ], + "x-nullable": true, + "x-omitempty": true }, - "401": { - "description": "Unauthorized or invalid credentials." + "valueBooleanArray": { + "description": "value as boolean", + "type": "array", + "items": { + "type": "boolean" + }, + "example": [ + true, + false + ], + "x-nullable": true, + "x-omitempty": true }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "valueStringArray": { + "description": "value as text (deprecated as of v1.19; alias for valueText)", + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "my search term" + ], + "x-nullable": true, + "x-omitempty": true }, - "404": { - "description": "Object not found." + "valueTextArray": { + "description": "value as text", + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "my search term" + ], + "x-nullable": true, + "x-omitempty": true }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + "valueDateArray": { + "description": "value as date (as string)", + "type": "array", + "items": { + "type": "string" + }, + "example": "TODO", + "x-nullable": true, + "x-omitempty": true + }, + "valueGeoRange": { + "description": "value as geo coordinates and distance", + "type": "object", + "$ref": "#/definitions/WhereFilterGeoRange", + "x-nullable": true } }, - "summary": "Get an object", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false, - "deprecated": true - }, - "patch": { - "description": "Update an object based on its UUID (using patch semantics). This method supports json-merge style patch semantics (RFC 7396). Provided meta-data and schema values are validated. `lastUpdateTimeUnix` is set to the time this function is called.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}` endpoint instead.", - "operationId": "objects.patch", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Unique UUID of the object to be patched.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" + "type": "object" + }, + "WhereFilterGeoRange": { + "type": "object", + "description": "Filter within a distance of a georange.", + "properties": { + "geoCoordinates": { + "$ref": "#/definitions/GeoCoordinates", + "x-nullable": false }, - { - "description": "RFC 7396-style JSON merge patch object containing the fields to update.", - "in": "body", - "name": "body", - "required": false, - "schema": { - "$ref": "#/definitions/Object" + "distance": { + "type": "object", + "properties": { + "max": { + "type": "number", + "format": "float64" + } } - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - ], - "responses": { - "204": { - "description": "Object patched successfully." - }, - "400": { - "description": "Malformed patch request body." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } + } + }, + "Tenant": { + "type": "object", + "description": "Attributes representing a single tenant within Weaviate.", + "properties": { + "name": { + "description": "The name of the tenant (required).", + "type": "string" }, - "404": { - "description": "Object not found." + "activityStatus": { + "description": "The activity status of the tenant, which determines if it is queryable and where its data is stored.

Available Statuses:
- `ACTIVE`: The tenant is fully operational and ready for queries. Data is stored on local, hot storage.
- `INACTIVE`: The tenant is not queryable. Data is stored locally.
- `OFFLOADED`: The tenant is inactive and its data is stored in a remote cloud backend.

Usage Rules:
- On Create: This field is optional and defaults to `ACTIVE`. Allowed values are `ACTIVE` and `INACTIVE`.
- On Update: This field is required. Allowed values are `ACTIVE`, `INACTIVE`, and `OFFLOADED`.

Read-Only Statuses:
The following statuses are set by the server and indicate a tenant is transitioning between states:
- `OFFLOADING`
- `ONLOADING`

Note on Deprecated Names:
For backward compatibility, deprecated names are still accepted and are mapped to their modern equivalents: `HOT` (now `ACTIVE`), `COLD` (now `INACTIVE`), `FROZEN` (now `OFFLOADED`), `FREEZING` (now `OFFLOADING`), `UNFREEZING` (now `ONLOADING`).", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE", + "OFFLOADED", + "OFFLOADING", + "ONLOADING", + "HOT", + "COLD", + "FROZEN", + "FREEZING", + "UNFREEZING" + ] + } + } + }, + "Alias": { + "type": "object", + "description": "Represents the mapping between an alias name and a collection. An alias provides an alternative name for accessing a collection.", + "properties": { + "alias": { + "description": "The unique name of the alias that serves as an alternative identifier for the collection.", + "type": "string" }, - "422": { - "description": "The patch object is valid JSON but is unprocessable for other reasons (e.g., invalid schema).", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "class": { + "description": "The name of the collection (class) to which this alias is mapped.", + "type": "string" + } + } + }, + "AliasResponse": { + "description": "Response object containing a list of alias mappings.", + "type": "object", + "properties": { + "aliases": { + "description": "Array of alias objects, each containing an alias-to-collection mapping.", + "type": "array", + "items": { + "$ref": "#/definitions/Alias" } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + } + }, + "externalDocs": { + "url": "https://github.com/weaviate/weaviate" + }, + "info": { + "contact": { + "email": "hello@weaviate.io", + "name": "Weaviate", + "url": "https://github.com/weaviate" + }, + "description": "# Introduction
Weaviate is an open source, AI-native vector database that helps developers create intuitive and reliable AI-powered applications.
### Base Path
The base path for the Weaviate server is structured as `[YOUR-WEAVIATE-HOST]:[PORT]/v1`. As an example, if you wish to access the `schema` endpoint on a local instance, you would navigate to `http://localhost:8080/v1/schema`. Ensure you replace `[YOUR-WEAVIATE-HOST]` and `[PORT]` with your actual server host and port number respectively.
### Questions?
If you have any comments or questions, please feel free to reach out to us at the community forum [https://forum.weaviate.io/](https://forum.weaviate.io/).
### Issues?
If you find a bug or want to file a feature request, please open an issue on our GitHub repository for [Weaviate](https://github.com/weaviate/weaviate).
### Need more documentation?
For a quickstart, code examples, concepts and more, please visit our [documentation page](https://docs.weaviate.io/weaviate).", + "title": "Weaviate REST API", + "version": "1.37.0-dev" + }, + "parameters": { + "CommonAfterParameterQuery": { + "description": "A threshold UUID of the objects to retrieve after, using an UUID-based ordering. This object is not part of the set.

Must be used with collection name (`class`), typically in conjunction with `limit`.

Note `after` cannot be used with `offset` or `sort`.

For a null value similar to offset=0, set an empty string in the request, i.e. `after=` or `after`.", + "in": "query", + "name": "after", + "required": false, + "type": "string" + }, + "CommonOffsetParameterQuery": { + "description": "The starting index of the result window. Note `offset` will retrieve `offset+limit` results and return `limit` results from the object with index `offset` onwards. Limited by the value of `QUERY_MAXIMUM_RESULTS`.

Should be used in conjunction with `limit`.

Cannot be used with `after`.", + "format": "int64", + "in": "query", + "name": "offset", + "required": false, + "type": "integer", + "default": 0 + }, + "CommonLimitParameterQuery": { + "description": "The maximum number of items to be returned per page. The default is 25 unless set otherwise as an environment variable.", + "format": "int64", + "in": "query", + "name": "limit", + "required": false, + "type": "integer" + }, + "CommonIncludeParameterQuery": { + "description": "Include additional information, such as classification information. Allowed values include: `classification`, `vector` and `interpretation`.", + "in": "query", + "name": "include", + "required": false, + "type": "string" + }, + "CommonConsistencyLevelParameterQuery": { + "description": "Determines how many replicas must acknowledge a request before it is considered successful.", + "in": "query", + "name": "consistency_level", + "required": false, + "type": "string" + }, + "CommonTenantParameterQuery": { + "description": "Specifies the tenant in a request targeting a multi-tenant collection (class).", + "in": "query", + "name": "tenant", + "required": false, + "type": "string" + }, + "CommonNodeNameParameterQuery": { + "description": "The target node which should fulfill the request.", + "in": "query", + "name": "node_name", + "required": false, + "type": "string" + }, + "CommonSortParameterQuery": { + "description": "Name(s) of the property to sort by - e.g. `city`, or `country,city`.", + "in": "query", + "name": "sort", + "required": false, + "type": "string" + }, + "CommonOrderParameterQuery": { + "description": "Order parameter to tell how to order (asc or desc) data within given field. Should be used in conjunction with `sort` parameter. If providing multiple `sort` values, provide multiple `order` values in corresponding order, e.g.: `sort=author_name,title&order=desc,asc`.", + "in": "query", + "name": "order", + "required": false, + "type": "string" + }, + "CommonClassParameterQuery": { + "description": "The collection from which to query objects.

Note that if the collection name (`class`) is not provided, the response will not include any objects.", + "in": "query", + "name": "class", + "required": false, + "type": "string" + }, + "CommonOutputVerbosityParameterQuery": { + "description": "Controls the verbosity of the output, possible values are: `minimal`, `verbose`. Defaults to `minimal`.", + "in": "query", + "name": "output", + "required": false, + "type": "string", + "default": "minimal" + } + }, + "paths": { + "/": { + "get": { + "description": "Get links to other endpoints to help discover the REST API.", + "summary": "List available endpoints", + "operationId": "weaviate.root", + "responses": { + "200": { + "description": "Weaviate is alive and ready.", + "schema": { + "type": "object", + "properties": { + "links": { + "type": "array", + "items": { + "$ref": "#/definitions/Link" + } + } + } + } } } - }, - "summary": "Patch an object", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false, - "deprecated": true - }, - "put": { - "description": "Updates an object based on its UUID. Given meta-data and schema values are validated. `lastUpdateTimeUnix` is set to the time this function is called.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}` endpoint instead.", - "operationId": "objects.update", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Unique UUID of the object to be replaced.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "The object definition to replace the existing object with.", - "required": true, - "schema": { - "$ref": "#/definitions/Object" + } + }, + "/.well-known/live": { + "get": { + "summary": "Check application liveness", + "description": "Indicates if the Weaviate instance is running and responsive to basic HTTP requests. Primarily used for health checks, such as Kubernetes liveness probes.", + "operationId": "weaviate.wellknown.liveness", + "responses": { + "200": { + "description": "The application is alive and responding to HTTP requests." } - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - ], - "responses": { - "200": { - "description": "Object replaced successfully.", - "schema": { - "$ref": "#/definitions/Object" + } + }, + "/.well-known/ready": { + "get": { + "summary": "Check application readiness", + "description": "Indicates if the Weaviate instance has completed its startup routines and is prepared to accept user traffic (data import, queries, etc.). Used for readiness checks, such as Kubernetes readiness probes.", + "operationId": "weaviate.wellknown.readiness", + "responses": { + "200": { + "description": "The application is ready to serve traffic." + }, + "503": { + "description": "The application is not ready to serve traffic. Traffic should be directed to other available replicas if applicable." } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/.well-known/openid-configuration": { + "get": { + "summary": "Get OIDC configuration", + "description": "Provides OpenID Connect (OIDC) discovery information if OIDC authentication is configured for Weaviate. Returns details like the token issuer URL, client ID, and required scopes.", + "responses": { + "200": { + "description": "OIDC configuration details returned successfully.", + "schema": { + "type": "object", + "properties": { + "href": { + "description": "The OIDC issuer URL to redirect to for authentication.", + "type": "string" + }, + "clientId": { + "description": "The OAuth Client ID configured for Weaviate.", + "type": "string" + }, + "scopes": { + "description": "The required OAuth scopes for authentication.", + "type": "array", + "items": { + "type": "string" + }, + "x-omitempty": true + } + } + } + }, + "404": { + "description": "OIDC provider is not configured for this Weaviate instance." + }, + "500": { + "description": "An internal server error occurred while retrieving OIDC configuration. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "404": { - "description": "Object not found." - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the collection exists and the object properties are valid.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "tags": [ + "well-known", + "oidc", + "discovery" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + } + }, + "/replication/replicate": { + "post": { + "summary": "Initiate a replica movement", + "description": "Begins an asynchronous operation to move or copy a specific shard replica from its current node to a designated target node. The operation involves copying data, synchronizing, and potentially decommissioning the source replica.", + "operationId": "replicate", + "x-serviceIds": [ + "weaviate.replication.replicate" + ], + "tags": [ + "replication" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ReplicationReplicateReplicaRequest" + } } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Replication operation registered successfully. ID of the operation is returned.", + "schema": { + "$ref": "#/definitions/ReplicationReplicateReplicaResponse" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "501": { + "description": "Replica movement operations are disabled.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } }, - "summary": "Update an object", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false, - "deprecated": true - }, - "head": { - "description": "Checks if an object exists in the system based on its UUID.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}` endpoint instead.", - "operationId": "objects.head", - "x-serviceIds": [ - "weaviate.objects.check" - ], - "parameters": [ - { - "description": "Unique UUID of the object to check.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - } - ], - "responses": { - "204": { - "description": "Object exists." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Object does not exist." - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "delete": { + "summary": "Delete all replication operations", + "description": "Schedules all replication operations for deletion across all collections, shards, and nodes.", + "operationId": "deleteAllReplications", + "x-serviceIds": [ + "weaviate.replication.deleteAllReplications" + ], + "tags": [ + "replication" + ], + "responses": { + "204": { + "description": "Replication operation registered successfully" + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "501": { + "description": "Replica movement operations are disabled.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - }, - "summary": "Check if an object exists", - "tags": [ - "objects" - ], - "x-available-in-mqtt": true, - "x-available-in-websocket": true, - "deprecated": true - } - }, - "/objects/{className}/{id}": { - "get": { - "description": "Get a data object based on its collection name (`className`) and UUID (`id`).", - "operationId": "objects.class.get", - "x-serviceIds": [ - "weaviate.local.query" - ], - "parameters": [ - { - "name": "className", - "description": "Name of the collection (class) the object belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "description": "Unique UUID of the object to be retrieved.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "$ref": "#/parameters/CommonIncludeParameterQuery" - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" - }, - { - "$ref": "#/parameters/CommonNodeNameParameterQuery" - }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" - } - ], - "responses": { - "200": { - "description": "Successful response containing the object.", - "schema": { - "$ref": "#/definitions/Object" - } - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "/replication/replicate/force-delete": { + "post": { + "summary": "Force delete replication operations", + "description": "USE AT OWN RISK! Synchronously force delete operations from the FSM. This will not perform any checks on which state the operation is in so may lead to data corruption or loss. It is recommended to first scale the number of replication engine workers to 0 before calling this endpoint to ensure no operations are in-flight.", + "operationId": "forceDeleteReplications", + "x-serviceIds": [ + "weaviate.replication.forceDeleteReplications" + ], + "tags": [ + "replication" + ], + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/ReplicationReplicateForceDeleteRequest" + } } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Replication operations force deleted successfully.", + "schema": { + "$ref": "#/definitions/ReplicationReplicateForceDeleteResponse" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "404": { - "description": "Object not found." - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/replication/replicate/{id}": { + "get": { + "summary": "Retrieve a replication operation", + "description": "Fetches the current status and detailed information for a specific replication operation, identified by its unique ID. Optionally includes historical data of the operation's progress if requested.", + "operationId": "replicationDetails", + "x-serviceIds": [ + "weaviate.replication.replicate.details" + ], + "tags": [ + "replication" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "format": "uuid", + "description": "The ID of the replication operation to get details for.", + "required": true, + "type": "string" + }, + { + "name": "includeHistory", + "in": "query", + "description": "Whether to include the history of the replication operation.", + "required": false, + "type": "boolean" } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "The details of the replication operation.", + "schema": { + "$ref": "#/definitions/ReplicationReplicateDetailsReplicaResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Shard replica operation not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "501": { + "description": "Replica movement operations are disabled.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } }, - "summary": "Get an object", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - }, - "delete": { - "description": "Removes a data object from a specific collection, identified by its collection name (`className`) and UUID (`id`).

**Note on deleting references (legacy format):**
For backward compatibility with older beacon formats (lacking a collection name), deleting a reference requires the beacon in the request to exactly match the stored format. Beacons always use `localhost` as the host, indicating the target is within the same Weaviate instance.", - "operationId": "objects.class.delete", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "name": "className", - "description": "Name of the collection (class) the object belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "description": "Unique UUID of the object to be deleted.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" - }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" + "delete": { + "summary": "Delete a replication operation", + "description": "Removes a specific replication operation. If the operation is currently active, it will be cancelled and its resources cleaned up before the operation is deleted.", + "operationId": "deleteReplication", + "x-serviceIds": [ + "weaviate.replication.replicate.delete" + ], + "tags": [ + "replication" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "format": "uuid", + "description": "The ID of the replication operation to delete.", + "required": true, + "type": "string" + } + ], + "responses": { + "204": { + "description": "Successfully deleted." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Shard replica operation not found." + }, + "409": { + "description": "The operation is not in a deletable state, e.g. it is a MOVE op in the DEHYDRATING state.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "501": { + "description": "Replica movement operations are disabled.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } } - ], - "responses": { - "204": { - "description": "Object deleted successfully." - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "/replication/replicate/list": { + "get": { + "summary": "List replication operations", + "description": "Retrieves a list of currently registered replication operations, optionally filtered by collection, shard, or node ID.", + "operationId": "listReplication", + "x-serviceIds": [ + "weaviate.replication.replicate.details" + ], + "tags": [ + "replication" + ], + "parameters": [ + { + "name": "targetNode", + "in": "query", + "description": "The name of the target node to get details for.", + "required": false, + "type": "string" + }, + { + "name": "collection", + "in": "query", + "description": "The name of the collection to get details for.", + "required": false, + "type": "string" + }, + { + "name": "shard", + "in": "query", + "description": "The shard to get details for.", + "required": false, + "type": "string" + }, + { + "name": "includeHistory", + "in": "query", + "description": "Whether to include the history of the replication operation.", + "required": false, + "type": "boolean" } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "The details of the replication operations.", + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/ReplicationReplicateDetailsReplicaResponse" + } + } + }, + "400": { + "description": "Bad request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "501": { + "description": "Replica movement operations are disabled.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "404": { - "description": "Object not found." - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/replication/replicate/{id}/cancel": { + "post": { + "summary": "Cancel a replication operation", + "description": "Requests the cancellation of an active replication operation identified by its ID. The operation will be stopped, but its record will remain in the `CANCELLED` state (can't be resumed) and will not be automatically deleted.", + "operationId": "cancelReplication", + "x-serviceIds": [ + "weaviate.replication.replicate.cancel" + ], + "tags": [ + "replication" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "format": "uuid", + "description": "The ID of the replication operation to cancel.", + "required": true, + "type": "string" } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Successfully cancelled." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Shard replica operation not found." + }, + "409": { + "description": "The operation is not in a cancellable state, e.g. it is READY or is a MOVE op in the DEHYDRATING state.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "501": { + "description": "Replica movement operations are disabled.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - }, - "summary": "Delete an object", - "tags": [ - "objects" - ], - "x-available-in-mqtt": true, - "x-available-in-websocket": true - }, - "put": { - "description": "Replaces properties of an existing data object. The object is identified by its collection name (`className`) and UUID (`id`). The request body must contain the complete object definition with the new property values.", - "operationId": "objects.class.put", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "name": "className", - "description": "Name of the collection (class) the object belongs to.", - "in": "path", - "required": true, - "type": "string" - }, - { - "description": "Unique UUID of the object to be replaced.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "The object definition to replace the existing object with.", - "required": true, - "schema": { - "$ref": "#/definitions/Object" + } + }, + "/replication/sharding-state": { + "get": { + "summary": "Get sharding state", + "description": "Fetches the current sharding state, including replica locations and statuses, for all collections or a specified collection. If a shard name is provided along with a collection, the state for that specific shard is returned.", + "operationId": "getCollectionShardingState", + "x-serviceIds": [ + "weaviate.replication.shardingstate.collection.get" + ], + "tags": [ + "replication" + ], + "parameters": [ + { + "name": "collection", + "in": "query", + "description": "The collection name to get the sharding state for.", + "required": false, + "type": "string" + }, + { + "name": "shard", + "in": "query", + "description": "The shard to get the sharding state for.", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Successfully retrieved sharding state.", + "schema": { + "$ref": "#/definitions/ReplicationShardingStateResponse" + } + }, + "400": { + "description": "Bad request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Collection or shard not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "501": { + "description": "Replica movement operations are disabled.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - ], - "responses": { - "200": { - "description": "Object replaced successfully.", - "schema": { - "$ref": "#/definitions/Object" + } + }, + "/replication/scale": { + "get": { + "summary": "Get replication scale plan", + "description": "Computes and returns a replication scale plan for a given collection and desired replication factor. The plan includes, for each shard, a list of nodes to be added and a list of nodes to be removed.", + "operationId": "getReplicationScalePlan", + "x-serviceIds": [ + "weaviate.replication.scale.get" + ], + "tags": [ + "replication" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "collection", + "in": "query", + "description": "The collection name to get the scaling plan for.", + "required": true, + "type": "string" + }, + { + "name": "replicationFactor", + "in": "query", + "description": "The desired replication factor to scale to. Must be a positive integer greater than zero.", + "required": true, + "type": "integer", + "minimum": 1 } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Replication scale plan showing node additions and removals per shard.", + "schema": { + "$ref": "#/definitions/ReplicationScalePlan" + } + }, + "400": { + "description": "Bad request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Collection not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "501": { + "description": "Replica movement operations are disabled.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "404": { - "description": "Object not found." - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the collection exists and the object properties are valid.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "post": { + "summary": "Apply replication scaling plan", + "description": "Apply a replication scaling plan that specifies nodes to add or remove per shard for a given collection.", + "operationId": "applyReplicationScalePlan", + "x-serviceIds": [ + "weaviate.replication.scale.post" + ], + "tags": [ + "replication" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The replication scaling plan specifying the collection and its shard-level replica adjustments.", + "required": true, + "schema": { + "$ref": "#/definitions/ReplicationScalePlan" + } } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "List of replication shard copy operation IDs initiated for the scale operation", + "schema": { + "$ref": "#/definitions/ReplicationScaleApplyResponse" + } + }, + "400": { + "description": "Bad request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Collection not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "501": { + "description": "Replica movement operations are disabled.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - }, - "summary": "Replace an object", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - }, - "patch": { - "description": "Updates specific properties of an existing data object using JSON merge patch semantics (RFC 7396). The object is identified by its collection name (`className`) and UUID (`id`). Only the fields provided in the request body are modified. Metadata and schema values are validated, and the object's `lastUpdateTimeUnix` is updated.", - "operationId": "objects.class.patch", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Name of the collection (class) the object belongs to.", - "name": "className", - "in": "path", - "required": true, - "type": "string" - }, - { - "description": "Unique UUID of the object to be patched.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "description": "RFC 7396-style JSON merge patch object containing the fields to update.", - "in": "body", - "name": "body", - "required": false, - "schema": { - "$ref": "#/definitions/Object" + } + }, + "/users/own-info": { + "get": { + "summary": "Get current user info", + "description": "Get information about the currently authenticated user, including username and assigned roles.", + "operationId": "getOwnInfo", + "x-serviceIds": [ + "weaviate.users.get.own-info" + ], + "tags": [ + "users" + ], + "responses": { + "200": { + "description": "Info about the user.", + "schema": { + "$ref": "#/definitions/UserOwnInfo" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "501": { + "description": "Replica movement operations are disabled.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - ], - "responses": { - "204": { - "description": "Object patched successfully." - }, - "400": { - "description": "Malformed patch request body.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "/users/db": { + "get": { + "summary": "List all users", + "description": "Retrieves a list of all database (`db` user type) users with their roles and status information.", + "operationId": "listAllUsers", + "x-serviceIds": [ + "weaviate.users.db.list_all" + ], + "tags": [ + "users" + ], + "parameters": [ + { + "description": "Whether to include the last time the users were utilized.", + "in": "query", + "name": "includeLastUsedTime", + "required": false, + "type": "boolean", + "default": false } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Info about the users.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/DBUserInfo" + } + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "404": { - "description": "Object not found." - }, - "422": { - "description": "The patch object is valid JSON but is unprocessable for other reasons (e.g., invalid schema).", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/users/db/{user_id}": { + "get": { + "summary": "Get user info", + "description": "Retrieve detailed information about a specific database user (`db` user type), including their roles, status, and type.", + "operationId": "getUserInfo", + "x-serviceIds": [ + "weaviate.users.db.get" + ], + "tags": [ + "users" + ], + "parameters": [ + { + "description": "The name of the user.", + "in": "path", + "name": "user_id", + "required": true, + "type": "string" + }, + { + "description": "Whether to include the last used time of the given user", + "in": "query", + "name": "includeLastUsedTime", + "required": false, + "type": "boolean", + "default": false } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Info about the user.", + "schema": { + "$ref": "#/definitions/DBUserInfo" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "User not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } }, - "summary": "Patch an object", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - }, - "head": { - "description": "Verifies the existence of a specific data object within a collection (class), identified by its collection name (`className`) and UUID (`id`), without returning the object itself.

This is faster than a GET request as it avoids retrieving and processing object data. Existence is confirmed by a 204 No Content status code, while non-existence results in a 404 Not Found.", - "operationId": "objects.class.head", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Name of the collection (class) the object belongs to.", - "name": "className", - "in": "path", - "required": true, - "type": "string" - }, - { - "description": "Unique UUID of the object to check.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" - }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" - } - ], - "responses": { - "204": { - "description": "Object exists." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Object does not exist." - }, - "422": { - "description": "Invalid data provided. Please check the values in your request (e.g., invalid UUID format).", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "post": { + "summary": "Create a new user", + "description": "Create a new database (`db` user type) user with the specified name. Returns an API key for the newly created user.", + "operationId": "createUser", + "x-serviceIds": [ + "weaviate.users.db.create" + ], + "tags": [ + "users" + ], + "parameters": [ + { + "description": "The name of the user.", + "in": "path", + "name": "user_id", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "import": { + "type": "boolean", + "description": "EXPERIMENTAL, DONT USE. THIS WILL BE REMOVED AGAIN. - import api key from static user", + "default": false + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "EXPERIMENTAL, DONT USE. THIS WILL BE REMOVED AGAIN. - set the given time as creation time" + } + } + } } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "201": { + "description": "User created successfully and API key returned.", + "schema": { + "$ref": "#/definitions/UserApiKey" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "User not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "409": { + "description": "A user with the specified name already exists.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } }, - "summary": "Check if an object exists", - "tags": [ - "objects" - ], - "x-available-in-mqtt": true, - "x-available-in-websocket": true - } - }, - "/objects/{id}/references/{propertyName}": { - "post": { - "description": "Add a reference to a specific property of a data object.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}/references/{propertyName}` endpoint instead.", - "operationId": "objects.references.create", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Unique UUID of the source object.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "description": "Unique name of the reference property of the source object.", - "in": "path", - "name": "propertyName", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "The reference to add.", - "required": true, - "schema": { - "$ref": "#/definitions/SingleRef" + "delete": { + "summary": "Delete a user", + "description": "Delete a database user. You can't delete your current user.", + "operationId": "deleteUser", + "x-serviceIds": [ + "weaviate.users.db.delete" + ], + "tags": [ + "users" + ], + "parameters": [ + { + "description": "The name of the user.", + "in": "path", + "name": "user_id", + "required": true, + "type": "string" } - }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" - } - ], - "responses": { - "200": { - "description": "Reference added successfully." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Successfully deleted." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "User not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the property exists and is a reference type.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/users/db/{user_id}/rotate-key": { + "post": { + "summary": "Rotate API key of a user", + "description": "Revoke the current API key for the specified database user (`db` user type) and generate a new one.", + "operationId": "rotateUserApiKey", + "x-serviceIds": [ + "weaviate.users.db.rotateApiKey" + ], + "tags": [ + "users" + ], + "parameters": [ + { + "description": "The name of the user.", + "in": "path", + "name": "user_id", + "required": true, + "type": "string" } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "API key successfully updated.", + "schema": { + "$ref": "#/definitions/UserApiKey" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "User not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - }, - "summary": "Add an object reference", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false, - "deprecated": true - }, - "put": { - "description": "Replace all references in cross-reference property of an object.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}/references/{propertyName}` endpoint instead.", - "operationId": "objects.references.update", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Unique UUID of the source object.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "description": "Unique name of the reference property of the source object.", - "in": "path", - "name": "propertyName", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "The new list of references.", - "required": true, - "schema": { - "$ref": "#/definitions/MultipleRef" + } + }, + "/users/db/{user_id}/activate": { + "post": { + "summary": "Activate a user", + "description": "Activate a deactivated database user (`db` user type).", + "operationId": "activateUser", + "x-serviceIds": [ + "weaviate.users.db.activateUser" + ], + "tags": [ + "users" + ], + "parameters": [ + { + "description": "The name of the user.", + "in": "path", + "name": "user_id", + "required": true, + "type": "string" } - }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" - } - ], - "responses": { - "200": { - "description": "References replaced successfully." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "User successfully activated." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "User not found." + }, + "409": { + "description": "User already activated." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the property exists and is a reference type.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/users/db/{user_id}/deactivate": { + "post": { + "summary": "Deactivate a user", + "description": "Deactivate a database user (`db` user type).", + "operationId": "deactivateUser", + "x-serviceIds": [ + "weaviate.users.db.deactivateUser" + ], + "tags": [ + "users" + ], + "parameters": [ + { + "description": "The name of the user.", + "in": "path", + "name": "user_id", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "required": false, + "schema": { + "type": "object", + "properties": { + "revoke_key": { + "type": "boolean", + "description": "Whether the API key should be revoked when deactivating the user.", + "default": false + } + } + } } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "User successfully deactivated." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "User not found." + }, + "409": { + "description": "User already deactivated." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - }, - "summary": "Replace object references", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false, - "deprecated": true - }, - "delete": { - "description": "Delete the single reference that is given in the body from the list of references that this property has.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}/references/{propertyName}` endpoint instead.", - "operationId": "objects.references.delete", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Unique UUID of the source object.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "description": "Unique name of the reference property of the source object.", - "in": "path", - "name": "propertyName", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "The reference to remove.", - "required": true, - "schema": { - "$ref": "#/definitions/SingleRef" + } + }, + "/authz/roles": { + "get": { + "summary": "Get all roles", + "description": "Get all roles and their assigned permissions.", + "operationId": "getRoles", + "x-serviceIds": [ + "weaviate.authz.get.roles" + ], + "tags": [ + "authz" + ], + "responses": { + "200": { + "description": "Successful response.", + "schema": { + "$ref": "#/definitions/RolesListResponse" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" } - ], - "responses": { - "204": { - "description": "Reference deleted successfully." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Object or reference not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + }, + "post": { + "summary": "Create new role", + "description": "Create a new role with the specified permissions.", + "operationId": "createRole", + "x-serviceIds": [ + "weaviate.authz.create.role" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Role" + } } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "201": { + "description": "Role created successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "409": { + "description": "Role already exists.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - }, - "summary": "Delete an object reference", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false, - "deprecated": true - } - }, - "/objects/{className}/{id}/references/{propertyName}": { - "post": { - "description": "Adds a new reference to a reference property (`propertyName`) on a source data object. The source object is identified by its collection name (`className`) and UUID (`id`). The reference to add is specified in the request body.", - "operationId": "objects.class.references.create", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Name of the collection (class) the source object belongs to.", - "name": "className", - "in": "path", - "required": true, - "type": "string" - }, - { - "description": "Unique UUID of the source object.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "description": "Unique name of the reference property of the source object.", - "in": "path", - "name": "propertyName", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "The reference to add.", - "required": true, - "schema": { - "$ref": "#/definitions/SingleRef" + } + }, + "/authz/roles/{id}/add-permissions": { + "post": { + "summary": "Add permissions to a role", + "description": "Add new permissions to an existing role without affecting current permissions.", + "operationId": "addPermissions", + "x-serviceIds": [ + "weaviate.authz.add.role.permissions" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name (ID) of the role being modified.", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "items": { + "$ref": "#/definitions/Permission" + }, + "description": "Permissions to be added to the role." + } + }, + "required": [ + "name", + "permissions" + ] + } + } + ], + "responses": { + "200": { + "description": "Permissions added successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "No role found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" - }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" } - ], - "responses": { - "200": { - "description": "Reference added successfully." - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "/authz/roles/{id}/remove-permissions": { + "post": { + "summary": "Remove permissions from a role", + "description": "Permissions can be revoked from a specified role. Removing all permissions from a role will delete the role itself.", + "operationId": "removePermissions", + "x-serviceIds": [ + "weaviate.authz.remove.role.permissions" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the role being modified.", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "items": { + "$ref": "#/definitions/Permission" + }, + "description": "Permissions to remove from the role." + } + }, + "required": [ + "permissions" + ] + } } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Permissions removed successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "No role found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "404": { - "description": "Source object not found." - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the property exists and is a reference type.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/authz/roles/{id}": { + "get": { + "summary": "Get a role", + "description": "Fetch a role by its name.", + "operationId": "getRole", + "x-serviceIds": [ + "weaviate.authz.get.role" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the role.", + "in": "path", + "name": "id", + "required": true, + "type": "string" } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successful response.", + "schema": { + "$ref": "#/definitions/Role" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "No role found." + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } }, - "summary": "Add an object reference", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - }, - "put": { - "description": "Replaces all existing references for a specific reference property (`propertyName`) on a source data object. The source object is identified by its collection name (`className`) and UUID (`id`). The new set of references is provided in the request body.", - "operationId": "objects.class.references.put", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Name of the collection (class) the source object belongs to.", - "name": "className", - "in": "path", - "required": true, - "type": "string" - }, - { - "description": "Unique UUID of the source object.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "description": "Unique name of the reference property of the source object.", - "in": "path", - "name": "propertyName", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "The new list of references.", - "required": true, - "schema": { - "$ref": "#/definitions/MultipleRef" - } - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" - }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" - } - ], - "responses": { - "200": { - "description": "References replaced successfully." - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "delete": { + "summary": "Delete a role", + "description": "Deleting a role will remove it from the system, and revoke the associated permissions from all users who had this role.", + "operationId": "deleteRole", + "x-serviceIds": [ + "weaviate.authz.delete.role" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the role.", + "in": "path", + "name": "id", + "required": true, + "type": "string" } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Successfully deleted." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "404": { - "description": "Source object not found." - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the property exists and is a reference type.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/authz/roles/{id}/has-permission": { + "post": { + "summary": "Check whether a role possesses a permission", + "description": "Check whether a role has the specified permissions.", + "operationId": "hasPermission", + "x-serviceIds": [ + "weaviate.authz.has.role.permission" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the role.", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "description": "The permissions to be checked.", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Permission" + } } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Permission check was successful.", + "schema": { + "type": "boolean" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - }, - "summary": "Replace object references", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - }, - "delete": { - "description": "Removes a specific reference from a reference property (`propertyName`) of a source data object. The source object is identified by its collection name (`className`) and UUID (`id`). The reference to remove is specified in the request body.", - "operationId": "objects.class.references.delete", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "description": "Name of the collection (class) the source object belongs to.", - "name": "className", - "in": "path", - "required": true, - "type": "string" - }, - { - "description": "Unique UUID of the source object.", - "format": "uuid", - "in": "path", - "name": "id", - "required": true, - "type": "string" - }, - { - "description": "Unique name of the reference property of the source object.", - "in": "path", - "name": "propertyName", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "The reference to remove.", - "required": true, - "schema": { - "$ref": "#/definitions/SingleRef" + } + }, + "/authz/roles/{id}/users": { + "get": { + "deprecated": true, + "summary": "Get users assigned to a role", + "description": "Get all the users (`db` + `oidc`) who have been assigned a specific role. Deprecated, will be removed when v1.29 is not supported anymore.", + "operationId": "getUsersForRoleDeprecated", + "x-serviceIds": [ + "weaviate.authz.get.roles.users" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the role.", + "in": "path", + "name": "id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Users assigned to this role.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "No role found." + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" - }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" } - ], - "responses": { - "204": { - "description": "Reference deleted successfully." - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "/authz/roles/{id}/user-assignments": { + "get": { + "summary": "Get users assigned to a role", + "description": "Fetch a list of users which have the specified role.", + "operationId": "getUsersForRole", + "x-serviceIds": [ + "weaviate.authz.get.roles.users" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name (ID) of the role.", + "in": "path", + "name": "id", + "required": true, + "type": "string" } - }, - "404": { - "description": "Object or reference not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Users assigned to this role.", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "userType": { + "$ref": "#/definitions/UserTypeOutput" + } + }, + "required": [ + "name", + "userType" + ] + } + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "No role found." + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the property exists and is a reference type.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/authz/roles/{id}/group-assignments": { + "get": { + "summary": "Get groups that have a specific role assigned", + "description": "Retrieves a list of all groups that have been assigned a specific role, identified by its name.", + "operationId": "getGroupsForRole", + "x-serviceIds": [ + "weaviate.authz.get.roles.groups" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The unique name of the role.", + "in": "path", + "name": "id", + "required": true, + "type": "string" } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully retrieved the list of groups that have the role assigned.", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "groupId": { + "type": "string" + }, + "groupType": { + "$ref": "#/definitions/GroupType" + } + }, + "required": [ + "name", + "groupType" + ] + } + } + }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "The specified role was not found." + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - }, - "summary": "Delete an object reference", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - } - }, - "/objects/validate": { - "post": { - "description": "Checks if a data object's structure conforms to the specified collection schema and metadata rules without actually storing the object.

A successful validation returns a 200 OK status code with no body. If validation fails, an error response with details is returned.", - "operationId": "objects.validate", - "x-serviceIds": [ - "weaviate.local.query.meta" - ], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "The object definition to validate.", - "required": true, - "schema": { - "$ref": "#/definitions/Object" + } + }, + "/authz/users/{id}/roles": { + "get": { + "deprecated": true, + "summary": "Get roles assigned to a user", + "description": "Retrieve the roles assigned to a specific user (`db` + `oidc`). Deprecated, will be removed when 1.29 is not supported anymore", + "operationId": "getRolesForUserDeprecated", + "x-serviceIds": [ + "weaviate.authz.get.users.roles" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the user.", + "in": "path", + "name": "id", + "required": true, + "type": "string" } - } - ], - "responses": { - "200": { - "description": "Object is valid according to the schema." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Roles assigned to the user.", + "schema": { + "$ref": "#/definitions/RolesListResponse" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "No roles found for specified user." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "Request body is well-formed but the object is invalid according to the schema.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/authz/users/{id}/roles/{userType}": { + "get": { + "summary": "Get roles assigned to a user", + "description": "Get all the roles for a specific user (`db` or `oidc`).", + "operationId": "getRolesForUser", + "x-serviceIds": [ + "weaviate.authz.get.users.roles" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the user.", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "userType", + "required": true, + "type": "string", + "enum": [ + "oidc", + "db" + ], + "description": "The type of the user." + }, + { + "in": "query", + "name": "includeFullRoles", + "required": false, + "type": "boolean", + "default": false, + "description": "Whether to include detailed role information like its assigned permissions." } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Roles assigned to the user.", + "schema": { + "$ref": "#/definitions/RolesListResponse" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "No roles found for specified user." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - }, - "summary": "Validate an object", - "tags": [ - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - } - }, - "/batch/objects": { - "post": { - "description": "Registers multiple data objects in a single request for efficiency. Metadata and schema values for each object are validated.

**Note (idempotence)**:
This operation is idempotent based on the object UUIDs provided. If an object with a given UUID already exists, it will be overwritten (similar to a PUT operation for that specific object within the batch).", - "operationId": "batch.objects.create", - "x-serviceIds": [ - "weaviate.local.add" - ], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "The request body containing the objects to be created.", - "required": true, - "schema": { - "type": "object", - "properties": { - "fields": { - "description": "Controls which fields are returned in the response for each object. Default is `ALL`.", - "type": "array", - "items": { - "type": "string", - "default": "ALL", - "enum": [ - "ALL", - "class", - "schema", - "id", - "creationTimeUnix" - ] - } - }, - "objects": { - "description": "Array of objects to be created.", - "type": "array", - "items": { - "$ref": "#/definitions/Object" + } + }, + "/authz/users/{id}/assign": { + "post": { + "summary": "Assign a role to a user", + "description": "Assign one or more roles to a user. Users can have multiple roles.", + "operationId": "assignRoleToUser", + "x-serviceIds": [ + "weaviate.authz.assign.role.user" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the user.", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "description": "The roles that are assigned to the specified user.", + "items": { + "type": "string" + } + }, + "userType": { + "$ref": "#/definitions/UserTypeInput" } } } } - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" - } - ], - "responses": { - "200": { - "description": "Request processed successfully. Individual object statuses are provided in the response body.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/ObjectsGetResponse" + ], + "responses": { + "200": { + "description": "Role assigned successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Specified role or user not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" } } - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the collection exists and the object properties are valid.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "summary": "Create objects in batch", - "tags": [ - "batch", - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - }, - "delete": { - "description": "Removes multiple data objects based on a filter specified in the request body.

Deletion occurs based on the filter criteria provided in the `where` clause. There is a configurable limit (default 10,000, set via `QUERY_MAXIMUM_RESULTS`) on how many objects can be deleted in a single batch request to prevent excessive resource usage. Objects are deleted in the order they match the filter. To delete more objects than the limit allows, repeat the request until no more matching objects are found.", - "operationId": "batch.objects.delete", - "x-serviceIds": [ - "weaviate.local.manipulate" - ], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "The request body containing the match filter and output configuration.", - "required": true, - "schema": { - "$ref": "#/definitions/BatchDelete" - } - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" - }, - { - "$ref": "#/parameters/CommonTenantParameterQuery" } - ], - "responses": { - "200": { - "description": "Request processed successfully. See response body for matching objects and deletion results.", - "schema": { - "$ref": "#/definitions/BatchDeleteResponse" - } - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "Invalid data provided. Please check the values in your request (e.g., invalid filter).", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "500": { - "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "/authz/users/{id}/revoke": { + "post": { + "summary": "Revoke a role from a user", + "description": "Remove one or more roles from a user.", + "operationId": "revokeRoleFromUser", + "x-serviceIds": [ + "weaviate.authz.revoke.role.user" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the user.", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "description": "The roles to revoke from the specified user.", + "items": { + "type": "string" + } + }, + "userType": { + "$ref": "#/definitions/UserTypeInput" + } + } + } } - } - }, - "summary": "Delete objects in batch", - "tags": [ - "batch", - "objects" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - } - }, - "/batch/references": { - "post": { - "description": "Batch create cross-references between collection items in bulk.", - "operationId": "batch.references.create", - "x-serviceIds": [ - "weaviate.local.add" - ], - "parameters": [ - { - "in": "body", - "name": "body", - "description": "A list of references to be batched. The ideal size depends on the used database connector. Please see the documentation of the used connector for help.", - "required": true, - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/BatchReference" + ], + "responses": { + "200": { + "description": "Roles revoked successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Specified role or user not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" } } - }, - { - "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - ], - "responses": { - "200": { - "description": "Request Successful. Warning: A successful request does not guarantee that every batched reference was successfully created. Inspect the response body to see which references succeeded and which failed.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/BatchReferenceResponse" + } + }, + "/authz/groups/{id}/assign": { + "post": { + "summary": "Assign a role to a group", + "description": "Assign roles to the specified group.", + "operationId": "assignRoleToGroup", + "x-serviceIds": [ + "weaviate.authz.assign.role" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the group.", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "description": "The roles to assign to the specified group.", + "items": { + "type": "string" + } + }, + "groupType": { + "$ref": "#/definitions/GroupType" + } + } } } - }, - "400": { - "description": "Malformed request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the collection exists and the object properties are valid.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Roles assigned successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Role or group not found." + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/authz/groups/{id}/revoke": { + "post": { + "summary": "Revoke a role from a group", + "description": "Revoke roles from the specified group.", + "operationId": "revokeRoleFromGroup", + "x-serviceIds": [ + "weaviate.authz.revoke.role.group" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The name of the group.", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "roles": { + "type": "array", + "description": "The roles to revoke from the specified group.", + "items": { + "type": "string" + } + }, + "groupType": { + "$ref": "#/definitions/GroupType" + } + } + } } - } - }, - "summary": "Create cross-references in bulk", - "tags": [ - "batch", - "references" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - } - }, - "/graphql": { - "post": { - "summary": "Perform a GraphQL query", - "description": "Executes a single GraphQL query provided in the request body. Use this endpoint for all Weaviate data queries and exploration.", - "operationId": "graphql.post", - "x-serviceIds": [ - "weaviate.local.query", - "weaviate.local.query.meta", - "weaviate.network.query", - "weaviate.network.query.meta" - ], - "parameters": [ - { - "description": "The GraphQL query to execute, including the query string and optional variables.", - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/GraphQLQuery" + ], + "responses": { + "200": { + "description": "Roles revoked successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Role or group not found." + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - ], - "responses": { - "200": { - "description": "Query executed successfully. The response body contains the query result.", - "schema": { - "$ref": "#/definitions/GraphQLResponse" + } + }, + "/authz/groups/{id}/roles/{groupType}": { + "get": { + "summary": "Get roles assigned to a specific group", + "description": "Retrieves a list of all roles assigned to a specific group. The group must be identified by both its name (`id`) and its type (`db` or `oidc`).", + "operationId": "getRolesForGroup", + "x-serviceIds": [ + "weaviate.authz.get.groups.roles" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "description": "The unique name of the group.", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "groupType", + "required": true, + "type": "string", + "enum": [ + "oidc" + ], + "description": "The type of the group." + }, + { + "in": "query", + "name": "includeFullRoles", + "required": false, + "type": "boolean", + "default": false, + "description": "If true, the response will include the full role definitions with all associated permissions. If false, only role names are returned." } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "A list of roles assigned to the specified group.", + "schema": { + "$ref": "#/definitions/RolesListResponse" + } + }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "The specified group was not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/authz/groups/{groupType}": { + "get": { + "summary": "List all groups of a specific type", + "description": "Retrieves a list of all available group names for a specified group type (`oidc` or `db`).", + "operationId": "getGroups", + "x-serviceIds": [ + "weaviate.authz.get.groups" + ], + "tags": [ + "authz" + ], + "parameters": [ + { + "in": "path", + "name": "groupType", + "required": true, + "type": "string", + "enum": [ + "oidc" + ], + "description": "The type of group to retrieve." } - }, - "500": { - "description": "An internal server error occurred during query execution. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "A list of group names for the specified type.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "400": { + "description": "Bad request", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - }, - "tags": [ - "graphql" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - } - }, - "/graphql/batch": { - "post": { - "summary": "Perform batched GraphQL queries", - "description": "Executes multiple GraphQL queries provided in the request body as an array. Allows performing several queries in a single network request for efficiency.", - "operationId": "graphql.batch", - "x-serviceIds": [ - "weaviate.local.query", - "weaviate.local.query.meta", - "weaviate.network.query", - "weaviate.network.query.meta" - ], - "parameters": [ - { - "description": "An array containing multiple GraphQL query objects to execute in batch.", - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/GraphQLQueries" + } + }, + "/objects": { + "get": { + "description": "Retrieves a list of data objects. By default, objects are returned in reverse order of creation. Requires a collection name (`class`) parameter to specify which collection's objects to list, otherwise, returns an empty list.", + "operationId": "objects.list", + "x-serviceIds": [ + "weaviate.local.query" + ], + "parameters": [ + { + "$ref": "#/parameters/CommonAfterParameterQuery" + }, + { + "$ref": "#/parameters/CommonOffsetParameterQuery" + }, + { + "$ref": "#/parameters/CommonLimitParameterQuery" + }, + { + "$ref": "#/parameters/CommonIncludeParameterQuery" + }, + { + "$ref": "#/parameters/CommonSortParameterQuery" + }, + { + "$ref": "#/parameters/CommonOrderParameterQuery" + }, + { + "$ref": "#/parameters/CommonClassParameterQuery" + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - } - ], - "responses": { - "200": { - "description": "Batch request processed successfully. The response body contains an array of results corresponding to the input queries.", - "schema": { - "$ref": "#/definitions/GraphQLResponses" + ], + "responses": { + "200": { + "description": "Successful response containing the list of objects. If the collection name (`class`) is not provided, the response will not include any objects.", + "schema": { + "$ref": "#/definitions/ObjectsListResponse" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Successful query result but no matching objects were found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the specified collection exists.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "List objects", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + }, + "post": { + "description": "Creates a new data object. The object's metadata and schema values are validated before creation.

**Note (batch import)**:
If you plan on importing a large number of objects, using the `/batch/objects` endpoint is significantly more efficient than sending multiple single requests.

**Note (idempotence)**:
This operation (POST) fails if an object with the provided ID already exists. To update an existing object, use the PUT or PATCH methods.", + "operationId": "objects.create", + "x-serviceIds": [ + "weaviate.local.add" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The object to be created.", + "required": true, + "schema": { + "$ref": "#/definitions/Object" + } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - }, - "422": { - "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Object created successfully.", + "schema": { + "$ref": "#/definitions/Object" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the collection exists and the object properties are valid.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "500": { - "description": "An internal server error occurred during batch query execution. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "tags": [ - "graphql" - ], - "x-available-in-mqtt": false, - "x-available-in-websocket": false - } - }, - "/meta": { - "get": { - "summary": "Get instance metadata", - "description": "Provides meta-information about the running Weaviate instance, including its version, loaded modules, and network hostname. This information can be useful for monitoring, compatibility checks, or inter-instance communication.", - "operationId": "meta.get", - "x-serviceIds": [ - "weaviate.local.query.meta" - ], - "tags": [ - "meta" - ], - "responses": { - "200": { - "description": "Successfully retrieved meta information.", - "schema": { - "$ref": "#/definitions/Meta" + "summary": "Create an object", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + } + }, + "/objects/{id}": { + "delete": { + "description": "Deletes an object from the database based on its UUID.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}` endpoint instead.", + "operationId": "objects.delete", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Unique UUID of the object to be deleted.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Object deleted successfully." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object not found." + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "500": { - "description": "An internal server error occurred while retrieving meta information. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Delete an object", + "tags": [ + "objects" + ], + "x-available-in-mqtt": true, + "x-available-in-websocket": true, + "deprecated": true + }, + "get": { + "description": "Get a specific object based on its UUID. Also available as Websocket bus.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}` endpoint instead.", + "operationId": "objects.get", + "x-serviceIds": [ + "weaviate.local.query" + ], + "parameters": [ + { + "description": "Unique UUID of the object to be retrieved.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "$ref": "#/parameters/CommonIncludeParameterQuery" } - } - }, - "x-available-in-mqtt": false, - "x-available-in-websocket": false - } - }, - "/schema": { - "get": { - "summary": "Get all collection definitions", - "description": "Retrieves the definitions of all collections (classes) currently in the database schema.", - "operationId": "schema.dump", - "x-serviceIds": [ - "weaviate.local.query.meta" - ], - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "consistency", - "in": "header", - "required": false, - "default": true, - "type": "boolean", - "description": "If true, the request is proxied to the cluster leader to ensure strong schema consistency. Default is true." - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the database schema.", - "schema": { - "$ref": "#/definitions/Schema" + ], + "responses": { + "200": { + "description": "Successful response containing the object.", + "schema": { + "$ref": "#/definitions/Object" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object not found." + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Get an object", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false, + "deprecated": true + }, + "patch": { + "description": "Update an object based on its UUID (using patch semantics). This method supports json-merge style patch semantics (RFC 7396). Provided meta-data and schema values are validated. `lastUpdateTimeUnix` is set to the time this function is called.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}` endpoint instead.", + "operationId": "objects.patch", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Unique UUID of the object to be patched.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "description": "RFC 7396-style JSON merge patch object containing the fields to update.", + "in": "body", + "name": "body", + "required": false, + "schema": { + "$ref": "#/definitions/Object" + } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - }, - "500": { - "description": "An error occurred while retrieving the schema. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Object patched successfully." + }, + "400": { + "description": "Malformed patch request body." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object not found." + }, + "422": { + "description": "The patch object is valid JSON but is unprocessable for other reasons (e.g., invalid schema).", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - } - } - }, - "post": { - "summary": "Create a new collection", - "description": "Defines and creates a new collection (class).

If [`AutoSchema`](https://docs.weaviate.io/weaviate/config-refs/collections#auto-schema) is enabled (not recommended for production), Weaviate might attempt to infer schema from data during import. Manual definition via this endpoint provides explicit control.", - "operationId": "schema.objects.create", - "x-serviceIds": [ - "weaviate.local.add.meta" - ], - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "objectClass", - "in": "body", - "required": true, - "description": "The definition of the collection (class) to create.", - "schema": { - "$ref": "#/definitions/Class" + }, + "summary": "Patch an object", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false, + "deprecated": true + }, + "put": { + "description": "Updates an object based on its UUID. Given meta-data and schema values are validated. `lastUpdateTimeUnix` is set to the time this function is called.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}` endpoint instead.", + "operationId": "objects.update", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Unique UUID of the object to be replaced.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The object definition to replace the existing object with.", + "required": true, + "schema": { + "$ref": "#/definitions/Object" + } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - } - ], - "responses": { - "200": { - "description": "Collection created successfully and its definition returned.", - "schema": { - "$ref": "#/definitions/Class" + ], + "responses": { + "200": { + "description": "Object replaced successfully.", + "schema": { + "$ref": "#/definitions/Object" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the collection exists and the object properties are valid.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Update an object", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false, + "deprecated": true + }, + "head": { + "description": "Checks if an object exists in the system based on its UUID.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}` endpoint instead.", + "operationId": "objects.head", + "x-serviceIds": [ + "weaviate.objects.check" + ], + "parameters": [ + { + "description": "Unique UUID of the object to check.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" } - }, - "422": { - "description": "Invalid collection definition provided. Check the definition structure and properties.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Object exists." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object does not exist." + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "500": { - "description": "An error occurred during collection creation. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } + "summary": "Check if an object exists", + "tags": [ + "objects" + ], + "x-available-in-mqtt": true, + "x-available-in-websocket": true, + "deprecated": true } - } - }, - "/schema/{className}": { - "get": { - "summary": "Get a single collection", - "description": "Retrieve the definition of a specific collection (`className`), including its properties, configuration, and vectorizer settings.", - "operationId": "schema.objects.get", - "x-serviceIds": [ - "weaviate.local.get.meta" - ], - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) to retrieve.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "consistency", - "in": "header", - "required": false, - "default": true, - "type": "boolean", - "description": "If true, the request is proxied to the cluster leader to ensure strong schema consistency. Default is true." - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the collection definition.", - "schema": { - "$ref": "#/definitions/Class" + }, + "/objects/{className}/{id}": { + "get": { + "description": "Get a data object based on its collection name (`className`) and UUID (`id`).", + "operationId": "objects.class.get", + "x-serviceIds": [ + "weaviate.local.query" + ], + "parameters": [ + { + "name": "className", + "description": "Name of the collection (class) the object belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "description": "Unique UUID of the object to be retrieved.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "$ref": "#/parameters/CommonIncludeParameterQuery" + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" + }, + { + "$ref": "#/parameters/CommonNodeNameParameterQuery" + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successful response containing the object.", + "schema": { + "$ref": "#/definitions/Object" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "404": { - "description": "Collection not found." - }, - "500": { - "description": "An error occurred while retrieving the collection definition. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Get an object", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + }, + "delete": { + "description": "Removes a data object from a specific collection, identified by its collection name (`className`) and UUID (`id`).

**Note on deleting references (legacy format):**
For backward compatibility with older beacon formats (lacking a collection name), deleting a reference requires the beacon in the request to exactly match the stored format. Beacons always use `localhost` as the host, indicating the target is within the same Weaviate instance.", + "operationId": "objects.class.delete", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "name": "className", + "description": "Name of the collection (class) the object belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "description": "Unique UUID of the object to be deleted.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - } - } - }, - "delete": { - "summary": "Delete a collection (and all associated data)", - "description": "Removes a collection definition from the schema. WARNING: This action permanently deletes all data objects stored within the collection.", - "operationId": "schema.objects.delete", - "x-serviceIds": [ - "weaviate.local.manipulate.meta" - ], - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) to delete.", - "in": "path", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "Collection deleted successfully." - }, - "400": { - "description": "Could not delete the collection. See the error response for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Object deleted successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Delete an object", + "tags": [ + "objects" + ], + "x-available-in-mqtt": true, + "x-available-in-websocket": true + }, + "put": { + "description": "Replaces properties of an existing data object. The object is identified by its collection name (`className`) and UUID (`id`). The request body must contain the complete object definition with the new property values.", + "operationId": "objects.class.put", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "name": "className", + "description": "Name of the collection (class) the object belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "description": "Unique UUID of the object to be replaced.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The object definition to replace the existing object with.", + "required": true, + "schema": { + "$ref": "#/definitions/Object" + } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - }, - "500": { - "description": "An error occurred during collection deletion. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Object replaced successfully.", + "schema": { + "$ref": "#/definitions/Object" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the collection exists and the object properties are valid.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - } - } - }, - "put": { - "summary": "Update collection definition", - "description": "Updates the configuration settings of an existing collection (`className`) based on the provided definition. Note: This operation modifies mutable settings specified in the request body. It does not add properties (use `POST /schema/{className}/properties` for that) or change the collection name.", - "operationId": "schema.objects.update", - "x-serviceIds": [ - "weaviate.local.manipulate.meta" - ], - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) to update.", - "in": "path", - "required": true, - "type": "string" }, - { - "name": "objectClass", - "description": "The updated collection definition containing the settings to modify.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/Class" + "summary": "Replace an object", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + }, + "patch": { + "description": "Updates specific properties of an existing data object using JSON merge patch semantics (RFC 7396). The object is identified by its collection name (`className`) and UUID (`id`). Only the fields provided in the request body are modified. Metadata and schema values are validated, and the object's `lastUpdateTimeUnix` is updated.", + "operationId": "objects.class.patch", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Name of the collection (class) the object belongs to.", + "name": "className", + "in": "path", + "required": true, + "type": "string" + }, + { + "description": "Unique UUID of the object to be patched.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "description": "RFC 7396-style JSON merge patch object containing the fields to update.", + "in": "body", + "name": "body", + "required": false, + "schema": { + "$ref": "#/definitions/Object" + } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - } - ], - "responses": { - "200": { - "description": "Collection settings updated successfully.", - "schema": { - "$ref": "#/definitions/Class" + ], + "responses": { + "204": { + "description": "Object patched successfully." + }, + "400": { + "description": "Malformed patch request body.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object not found." + }, + "422": { + "description": "The patch object is valid JSON but is unprocessable for other reasons (e.g., invalid schema).", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Patch an object", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + }, + "head": { + "description": "Verifies the existence of a specific data object within a collection (class), identified by its collection name (`className`) and UUID (`id`), without returning the object itself.

This is faster than a GET request as it avoids retrieving and processing object data. Existence is confirmed by a 204 No Content status code, while non-existence results in a 404 Not Found.", + "operationId": "objects.class.head", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Name of the collection (class) the object belongs to.", + "name": "className", + "in": "path", + "required": true, + "type": "string" + }, + { + "description": "Unique UUID of the object to check.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - }, - "404": { - "description": "Collection not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Object exists." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object does not exist." + }, + "422": { + "description": "Invalid data provided. Please check the values in your request (e.g., invalid UUID format).", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "422": { - "description": "Invalid update attempt.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Check if an object exists", + "tags": [ + "objects" + ], + "x-available-in-mqtt": true, + "x-available-in-websocket": true + } + }, + "/objects/{id}/references/{propertyName}": { + "post": { + "description": "Add a reference to a specific property of a data object.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}/references/{propertyName}` endpoint instead.", + "operationId": "objects.references.create", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Unique UUID of the source object.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "description": "Unique name of the reference property of the source object.", + "in": "path", + "name": "propertyName", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The reference to add.", + "required": true, + "schema": { + "$ref": "#/definitions/SingleRef" + } + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - }, - "500": { - "description": "An error occurred while updating the collection. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Reference added successfully." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the property exists and is a reference type.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - } - } - } - }, - "/schema/{className}/properties": { - "post": { - "summary": "Add a property to a collection", - "description": "Adds a new property definition to an existing collection (`className`) definition.", - "operationId": "schema.objects.properties.add", - "x-serviceIds": [ - "weaviate.local.manipulate.meta" - ], - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) to add the property to.", - "in": "path", - "required": true, - "type": "string" }, - { - "name": "body", - "description": "The definition of the property to add.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/Property" + "summary": "Add an object reference", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false, + "deprecated": true + }, + "put": { + "description": "Replace all references in cross-reference property of an object.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}/references/{propertyName}` endpoint instead.", + "operationId": "objects.references.update", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Unique UUID of the source object.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "description": "Unique name of the reference property of the source object.", + "in": "path", + "name": "propertyName", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The new list of references.", + "required": true, + "schema": { + "$ref": "#/definitions/MultipleRef" + } + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - } - ], - "responses": { - "200": { - "description": "Property added successfully and its definition returned.", - "schema": { - "$ref": "#/definitions/Property" + ], + "responses": { + "200": { + "description": "References replaced successfully." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the property exists and is a reference type.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Replace object references", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false, + "deprecated": true + }, + "delete": { + "description": "Delete the single reference that is given in the body from the list of references that this property has.

**Note**: This endpoint is deprecated and will be removed in a future version. Use the `/objects/{className}/{id}/references/{propertyName}` endpoint instead.", + "operationId": "objects.references.delete", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Unique UUID of the source object.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "description": "Unique name of the reference property of the source object.", + "in": "path", + "name": "propertyName", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The reference to remove.", + "required": true, + "schema": { + "$ref": "#/definitions/SingleRef" + } + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - }, - "422": { - "description": "Invalid property definition provided.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Reference deleted successfully." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object or reference not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "500": { - "description": "An error occurred while adding the property. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } + "summary": "Delete an object reference", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false, + "deprecated": true } - } - }, - "/schema/{className}/shards": { - "get": { - "summary": "Get the shards status of a collection", - "description": "Retrieves the status of all shards associated with the specified collection (`className`). For multi-tenant collections, use the `tenant` query parameter to retrieve status for a specific tenant's shards.", - "operationId": "schema.objects.shards.get", - "x-serviceIds": [ - "weaviate.local.get.meta" - ], - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) whose shards to query.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tenant", - "description": "The name of the tenant for which to retrieve shard statuses (only applicable for multi-tenant collections).", - "in": "query", - "type": "string" - } - ], - "responses": { - "200": { - "description": "Shard statuses retrieved successfully.", - "schema": { - "$ref": "#/definitions/ShardStatusList" + }, + "/objects/{className}/{id}/references/{propertyName}": { + "post": { + "description": "Adds a new reference to a reference property (`propertyName`) on a source data object. The source object is identified by its collection name (`className`) and UUID (`id`). The reference to add is specified in the request body.", + "operationId": "objects.class.references.create", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Name of the collection (class) the source object belongs to.", + "name": "className", + "in": "path", + "required": true, + "type": "string" + }, + { + "description": "Unique UUID of the source object.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "description": "Unique name of the reference property of the source object.", + "in": "path", + "name": "propertyName", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The reference to add.", + "required": true, + "schema": { + "$ref": "#/definitions/SingleRef" + } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Reference added successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Source object not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the property exists and is a reference type.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "404": { - "description": "Collection not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Add an object reference", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + }, + "put": { + "description": "Replaces all existing references for a specific reference property (`propertyName`) on a source data object. The source object is identified by its collection name (`className`) and UUID (`id`). The new set of references is provided in the request body.", + "operationId": "objects.class.references.put", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Name of the collection (class) the source object belongs to.", + "name": "className", + "in": "path", + "required": true, + "type": "string" + }, + { + "description": "Unique UUID of the source object.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "description": "Unique name of the reference property of the source object.", + "in": "path", + "name": "propertyName", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The new list of references.", + "required": true, + "schema": { + "$ref": "#/definitions/MultipleRef" + } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - }, - "500": { - "description": "An error occurred while retrieving shard statuses. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "References replaced successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Source object not found." + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the property exists and is a reference type.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - } - } - } - }, - "/schema/{className}/shards/{shardName}": { - "put": { - "summary": "Update a shard status", - "description": "Updates the status of a specific shard within a collection (e.g., sets it to `READY` or `READONLY`). This is typically used after resolving an underlying issue (like disk space) that caused a shard to become non-operational. There is also a convenience function in each client to set the status of all shards of a collection.", - "operationId": "schema.objects.shards.update", - "x-serviceIds": [ - "weaviate.local.manipulate.meta" - ], - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) containing the shard.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "shardName", - "description": "The name of the shard to update.", - "in": "path", - "required": true, - "type": "string" }, - { - "in": "body", - "name": "body", - "description": "The shard status object containing the desired new status.", - "required": true, - "schema": { - "$ref": "#/definitions/ShardStatus" - } - } - ], - "responses": { - "200": { - "description": "Shard status updated successfully.", - "schema": { - "$ref": "#/definitions/ShardStatus" + "summary": "Replace object references", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + }, + "delete": { + "description": "Removes a specific reference from a reference property (`propertyName`) of a source data object. The source object is identified by its collection name (`className`) and UUID (`id`). The reference to remove is specified in the request body.", + "operationId": "objects.class.references.delete", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "description": "Name of the collection (class) the source object belongs to.", + "name": "className", + "in": "path", + "required": true, + "type": "string" + }, + { + "description": "Unique UUID of the source object.", + "format": "uuid", + "in": "path", + "name": "id", + "required": true, + "type": "string" + }, + { + "description": "Unique name of the reference property of the source object.", + "in": "path", + "name": "propertyName", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The reference to remove.", + "required": true, + "schema": { + "$ref": "#/definitions/SingleRef" + } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - }, - "422": { - "description": "Invalid update attempt", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Reference deleted successfully." + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Object or reference not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the property exists and is a reference type.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Delete an object reference", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + } + }, + "/objects/validate": { + "post": { + "description": "Checks if a data object's structure conforms to the specified collection schema and metadata rules without actually storing the object.

A successful validation returns a 200 OK status code with no body. If validation fails, an error response with details is returned.", + "operationId": "objects.validate", + "x-serviceIds": [ + "weaviate.local.query.meta" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The object definition to validate.", + "required": true, + "schema": { + "$ref": "#/definitions/Object" + } } - }, - "404": { - "description": "Collection or shard not found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Object is valid according to the schema." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Request body is well-formed but the object is invalid according to the schema.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "500": { - "description": "An error occurred while updating the shard status. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } + "summary": "Validate an object", + "tags": [ + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false } - } - }, - "/schema/{className}/tenants": { - "post": { - "summary": "Create a new tenant", - "description": "Creates one or more new tenants for a specified collection (`className`). Multi-tenancy must be enabled for the collection via its definition.", - "operationId": "tenants.create", - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the multi-tenant enabled collection (class).", - "in": "path", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "An array of tenant objects to create.", - "required": true, - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Tenant" + }, + "/batch/objects": { + "post": { + "description": "Registers multiple data objects in a single request for efficiency. Metadata and schema values for each object are validated.

**Note (idempotence)**:
This operation is idempotent based on the object UUIDs provided. If an object with a given UUID already exists, it will be overwritten (similar to a PUT operation for that specific object within the batch).", + "operationId": "batch.objects.create", + "x-serviceIds": [ + "weaviate.local.add" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The request body containing the objects to be created.", + "required": true, + "schema": { + "type": "object", + "properties": { + "fields": { + "description": "Controls which fields are returned in the response for each object. Default is `ALL`.", + "type": "array", + "items": { + "type": "string", + "default": "ALL", + "enum": [ + "ALL", + "class", + "schema", + "id", + "creationTimeUnix" + ] + } + }, + "objects": { + "description": "Array of objects to be created.", + "type": "array", + "items": { + "$ref": "#/definitions/Object" + } + } + } } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - } - ], - "responses": { - "200": { - "description": "Tenants created successfully.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Tenant" + ], + "responses": { + "200": { + "description": "Request processed successfully. Individual object statuses are provided in the response body.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectsGetResponse" + } + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the collection exists and the object properties are valid.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" } } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Create objects in batch", + "tags": [ + "batch", + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + }, + "delete": { + "description": "Removes multiple data objects based on a filter specified in the request body.

Deletion occurs based on the filter criteria provided in the `where` clause. There is a configurable limit (default 10,000, set via `QUERY_MAXIMUM_RESULTS`) on how many objects can be deleted in a single batch request to prevent excessive resource usage. Objects are deleted in the order they match the filter. To delete more objects than the limit allows, repeat the request until no more matching objects are found.", + "operationId": "batch.objects.delete", + "x-serviceIds": [ + "weaviate.local.manipulate" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The request body containing the match filter and output configuration.", + "required": true, + "schema": { + "$ref": "#/definitions/BatchDelete" + } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" + }, + { + "$ref": "#/parameters/CommonTenantParameterQuery" } - }, - "422": { - "description": "Invalid request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Request processed successfully. See response body for matching objects and deletion results.", + "schema": { + "$ref": "#/definitions/BatchDeleteResponse" + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid data provided. Please check the values in your request (e.g., invalid filter).", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while trying to fulfill the request. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "500": { - "description": "An error occurred while creating tenants. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } + "summary": "Delete objects in batch", + "tags": [ + "batch", + "objects" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false } }, - "put": { - "summary": "Update a tenant", - "description": "Updates the activity status (e.g., `ACTIVE`, `INACTIVE`, etc.) of one or more specified tenants within a collection (`className`).", - "operationId": "tenants.update", - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) containing the tenants.", - "in": "path", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "description": "An array of tenant objects specifying the tenants to update and their desired new status.", - "required": true, - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Tenant" + "/batch/references": { + "post": { + "description": "Batch create cross-references between collection items in bulk.", + "operationId": "batch.references.create", + "x-serviceIds": [ + "weaviate.local.add" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "A list of references to be batched. The ideal size depends on the used database connector. Please see the documentation of the used connector for help.", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/BatchReference" + } } + }, + { + "$ref": "#/parameters/CommonConsistencyLevelParameterQuery" } - } - ], - "responses": { - "200": { - "description": "Tenant statuses updated successfully.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Tenant" + ], + "responses": { + "200": { + "description": "Request Successful. Warning: A successful request does not guarantee that every batched reference was successfully created. Inspect the response body to see which references succeeded and which failed.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/BatchReferenceResponse" + } + } + }, + "400": { + "description": "Malformed request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request. Ensure the collection exists and the object properties are valid.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" } } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "summary": "Create cross-references in bulk", + "tags": [ + "batch", + "references" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false + } + }, + "/graphql": { + "post": { + "summary": "Perform a GraphQL query", + "description": "Executes a single GraphQL query provided in the request body. Use this endpoint for all Weaviate data queries and exploration.", + "operationId": "graphql.post", + "x-serviceIds": [ + "weaviate.local.query", + "weaviate.local.query.meta", + "weaviate.network.query", + "weaviate.network.query.meta" + ], + "parameters": [ + { + "description": "The GraphQL query to execute, including the query string and optional variables.", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/GraphQLQuery" + } } - }, - "422": { - "description": "Invalid update request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Query executed successfully. The response body contains the query result.", + "schema": { + "$ref": "#/definitions/GraphQLResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred during query execution. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "500": { - "description": "An error occurred while updating tenants. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } + "tags": [ + "graphql" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false } }, - "delete": { - "summary": "Delete tenants", - "description": "Deletes one or more specified tenants from a collection (`className`). WARNING: This action permanently deletes all data associated with the specified tenants.", - "operationId": "tenants.delete", - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) from which to delete tenants.", - "in": "path", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "tenants", - "description": "An array of tenant names to delete.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "description": "Name of a tenant to delete." + "/graphql/batch": { + "post": { + "summary": "Perform batched GraphQL queries", + "description": "Executes multiple GraphQL queries provided in the request body as an array. Allows performing several queries in a single network request for efficiency.", + "operationId": "graphql.batch", + "x-serviceIds": [ + "weaviate.local.query", + "weaviate.local.query.meta", + "weaviate.network.query", + "weaviate.network.query.meta" + ], + "parameters": [ + { + "description": "An array containing multiple GraphQL query objects to execute in batch.", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/GraphQLQueries" } } - } - ], - "responses": { - "200": { - "description": "Tenants deleted successfully." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "Invalid request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Batch request processed successfully. The response body contains an array of results corresponding to the input queries.", + "schema": { + "$ref": "#/definitions/GraphQLResponses" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "The request syntax is correct, but the server couldn't process it due to semantic issues. Please check the values in your request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred during batch query execution. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "500": { - "description": "An error occurred while deleting tenants. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } + "tags": [ + "graphql" + ], + "x-available-in-mqtt": false, + "x-available-in-websocket": false } }, - "get": { - "summary": "Get the list of tenants", - "description": "Retrieves a list of all tenants currently associated with the specified collection.", - "operationId": "tenants.get", - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) whose tenants to list.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "consistency", - "in": "header", - "required": false, - "default": true, - "type": "boolean", - "description": "If true, the request is proxied to the cluster leader to ensure strong schema consistency. Default is true." - } - ], - "responses": { - "200": { - "description": "Successfully retrieved tenants.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Tenant" + "/meta": { + "get": { + "summary": "Get instance metadata", + "description": "Provides meta-information about the running Weaviate instance, including its version, loaded modules, and network hostname. This information can be useful for monitoring, compatibility checks, or inter-instance communication.", + "operationId": "meta.get", + "x-serviceIds": [ + "weaviate.local.query.meta" + ], + "tags": [ + "meta" + ], + "responses": { + "200": { + "description": "Successfully retrieved meta information.", + "schema": { + "$ref": "#/definitions/Meta" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred while retrieving meta information. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" } } }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "x-available-in-mqtt": false, + "x-available-in-websocket": false + } + }, + "/schema": { + "get": { + "summary": "Get all collection definitions", + "description": "Retrieves the definitions of all collections (classes) currently in the database schema.", + "operationId": "schema.dump", + "x-serviceIds": [ + "weaviate.local.query.meta" + ], + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "consistency", + "in": "header", + "required": false, + "default": true, + "type": "boolean", + "description": "If true, the request is proxied to the cluster leader to ensure strong schema consistency. Default is true." } - }, - "422": { - "description": "Invalid request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully retrieved the database schema.", + "schema": { + "$ref": "#/definitions/Schema" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while retrieving the schema. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "500": { - "description": "An error occurred while listing tenants. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "post": { + "summary": "Create a new collection", + "description": "Defines and creates a new collection (class).

If [`AutoSchema`](https://docs.weaviate.io/weaviate/config-refs/collections#auto-schema) is enabled (not recommended for production), Weaviate might attempt to infer schema from data during import. Manual definition via this endpoint provides explicit control.", + "operationId": "schema.objects.create", + "x-serviceIds": [ + "weaviate.local.add.meta" + ], + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "objectClass", + "in": "body", + "required": true, + "description": "The definition of the collection (class) to create.", + "schema": { + "$ref": "#/definitions/Class" + } + } + ], + "responses": { + "200": { + "description": "Collection created successfully and its definition returned.", + "schema": { + "$ref": "#/definitions/Class" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid collection definition provided. Check the definition structure and properties.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred during collection creation. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } - } - }, - "/schema/{className}/tenants/{tenantName}": { - "head": { - "summary": "Check if a tenant exists", - "description": "Checks for the existence of a specific tenant within the given collection (`className`).", - "operationId": "tenant.exists", - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) to check within.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tenantName", - "description": "The name of the tenant to check for.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "consistency", - "in": "header", - "required": false, - "default": true, - "type": "boolean", - "description": "If true, the request is proxied to the cluster leader to ensure strong schema consistency. Default is true." + }, + "/schema/{className}": { + "get": { + "summary": "Get a single collection", + "description": "Retrieve the definition of a specific collection (`className`), including its properties, configuration, and vectorizer settings.", + "operationId": "schema.objects.get", + "x-serviceIds": [ + "weaviate.local.get.meta" + ], + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) to retrieve.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "consistency", + "in": "header", + "required": false, + "default": true, + "type": "boolean", + "description": "If true, the request is proxied to the cluster leader to ensure strong schema consistency. Default is true." + } + ], + "responses": { + "200": { + "description": "Successfully retrieved the collection definition.", + "schema": { + "$ref": "#/definitions/Class" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Collection not found." + }, + "500": { + "description": "An error occurred while retrieving the collection definition. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } } - ], - "responses": { - "200": { - "description": "The tenant exists in the specified collection." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + }, + "delete": { + "summary": "Delete a collection (and all associated data)", + "description": "Removes a collection definition from the schema. WARNING: This action permanently deletes all data objects stored within the collection.", + "operationId": "schema.objects.delete", + "x-serviceIds": [ + "weaviate.local.manipulate.meta" + ], + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) to delete.", + "in": "path", + "required": true, + "type": "string" } - }, - "404": { - "description": "Tenant or collection not found." - }, - "422": { - "description": "Invalid request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Collection deleted successfully." + }, + "400": { + "description": "Could not delete the collection. See the error response for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred during collection deletion. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "summary": "Update collection definition", + "description": "Updates the configuration settings of an existing collection (`className`) based on the provided definition. Note: This operation modifies mutable settings specified in the request body. It does not add properties (use `POST /schema/{className}/properties` for that) or change the collection name.", + "operationId": "schema.objects.update", + "x-serviceIds": [ + "weaviate.local.manipulate.meta" + ], + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) to update.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "objectClass", + "description": "The updated collection definition containing the settings to modify.", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Class" + } } - }, - "500": { - "description": "An error occurred during the check. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Collection settings updated successfully.", + "schema": { + "$ref": "#/definitions/Class" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Collection not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid update attempt.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while updating the collection. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } }, - "get": { - "summary": "Get a specific tenant", - "description": "Retrieves details about a specific tenant within the given collection (`className`), such as its current activity status.", - "operationId": "tenants.get.one", - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) containing the tenant.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tenantName", - "description": "The name of the tenant to retrieve.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "consistency", - "in": "header", - "required": false, - "default": true, - "type": "boolean", - "description": "If true, the request is proxied to the cluster leader to ensure strong schema consistency. Default is true." - } - ], - "responses": { - "200": { - "description": "Successfully retrieved tenant details.", - "schema": { - "$ref": "#/definitions/Tenant" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Tenant or collection not found." - }, - "422": { - "description": "Invalid request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "/schema/{className}/properties": { + "post": { + "summary": "Add a property to a collection", + "description": "Adds a new property definition to an existing collection (`className`) definition.", + "operationId": "schema.objects.properties.add", + "x-serviceIds": [ + "weaviate.local.manipulate.meta" + ], + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) to add the property to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "description": "The definition of the property to add.", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Property" + } } - }, - "500": { - "description": "An error occurred while retrieving the tenant. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Property added successfully and its definition returned.", + "schema": { + "$ref": "#/definitions/Property" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid property definition provided.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while adding the property. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } - } - }, - "/aliases": { - "get": { - "summary": "List aliases", - "description": "Retrieve a list of all aliases in the system. Results can be filtered by specifying a collection (class) name to get aliases for a specific collection only.", - "operationId": "aliases.get", - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "class", - "description": "Optional filter to retrieve aliases for a specific collection (class) only. If not provided, returns all aliases.", - "in": "query", - "required": false, - "type": "string" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the list of aliases", - "schema": { - "$ref": "#/definitions/AliasResponse" + }, + "/schema/{className}/properties/{propertyName}/index/{indexName}": { + "delete": { + "summary": "Delete a property's inverted index", + "description": "Deletes an inverted index of a specific property within a collection (`className`). The index to delete is identified by `indexName` and must be one of `filterable`, `searchable`, or `rangeFilters`.", + "operationId": "schema.objects.properties.delete", + "x-serviceIds": [ + "weaviate.local.manipulate.meta" + ], + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) containing the property.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "propertyName", + "description": "The name of the property whose inverted index should be deleted.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "indexName", + "description": "The name of the inverted index to delete from the property.", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "filterable", + "searchable", + "rangeFilters" + ] } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Index deleted successfully." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid index, property or collection provided.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while deleting the index. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "Invalid collection (class) parameter provided", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/schema/{className}/shards": { + "get": { + "summary": "Get the shards status of a collection", + "description": "Retrieves the status of all shards associated with the specified collection (`className`). For multi-tenant collections, use the `tenant` query parameter to retrieve status for a specific tenant's shards.", + "operationId": "schema.objects.shards.get", + "x-serviceIds": [ + "weaviate.local.get.meta" + ], + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) whose shards to query.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "tenant", + "description": "The name of the tenant for which to retrieve shard statuses (only applicable for multi-tenant collections).", + "in": "query", + "type": "string" } - }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Shard statuses retrieved successfully.", + "schema": { + "$ref": "#/definitions/ShardStatusList" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Collection not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while retrieving shard statuses. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } }, - "post": { - "summary": "Create a new alias", - "description": "Create a new alias mapping between an alias name and a collection (class). The alias acts as an alternative name for accessing the collection.", - "operationId": "aliases.create", - "tags": [ - "schema" - ], - "parameters": [ - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "$ref": "#/definitions/Alias" + "/schema/{className}/shards/{shardName}": { + "put": { + "summary": "Update a shard status", + "description": "Updates the status of a specific shard within a collection (e.g., sets it to `READY` or `READONLY`). This is typically used after resolving an underlying issue (like disk space) that caused a shard to become non-operational. There is also a convenience function in each client to set the status of all shards of a collection.", + "operationId": "schema.objects.shards.update", + "x-serviceIds": [ + "weaviate.local.manipulate.meta" + ], + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) containing the shard.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "shardName", + "description": "The name of the shard to update.", + "in": "path", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The shard status object containing the desired new status.", + "required": true, + "schema": { + "$ref": "#/definitions/ShardStatus" + } + } + ], + "responses": { + "200": { + "description": "Shard status updated successfully.", + "schema": { + "$ref": "#/definitions/ShardStatus" + } + }, + "422": { + "description": "Invalid update attempt", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Collection or shard not found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while updating the shard status. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - ], - "responses": { - "200": { - "description": "Successfully created a new alias for the specified collection (class)", - "schema": { - "$ref": "#/definitions/Alias" + } + }, + "/schema/{className}/tenants": { + "post": { + "summary": "Create a new tenant", + "description": "Creates one or more new tenants for a specified collection (`className`). Multi-tenancy must be enabled for the collection via its definition.", + "operationId": "tenants.create", + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the multi-tenant enabled collection (class).", + "in": "path", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "An array of tenant objects to create.", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Tenant" + } + } } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Tenants created successfully.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Tenant" + } + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while creating tenants. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "Invalid create alias request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "put": { + "summary": "Update a tenant", + "description": "Updates the activity status (e.g., `ACTIVE`, `INACTIVE`, etc.) of one or more specified tenants within a collection (`className`).", + "operationId": "tenants.update", + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) containing the tenants.", + "in": "path", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "An array of tenant objects specifying the tenants to update and their desired new status.", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Tenant" + } + } } - }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Tenant statuses updated successfully.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Tenant" + } + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid update request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while updating tenants. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - } - } - }, - "/aliases/{aliasName}": { - "get": { - "summary": "Get an alias", - "description": "Retrieve details about a specific alias by its name, including which collection (class) it points to.", - "operationId": "aliases.get.alias", - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "aliasName", - "in": "path", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the alias details.", - "schema": { - "$ref": "#/definitions/Alias" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + }, + "delete": { + "summary": "Delete tenants", + "description": "Deletes one or more specified tenants from a collection (`className`). WARNING: This action permanently deletes all data associated with the specified tenants.", + "operationId": "tenants.delete", + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) from which to delete tenants.", + "in": "path", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "tenants", + "description": "An array of tenant names to delete.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Name of a tenant to delete." + } + } } - }, - "404": { - "description": "Not Found - Alias does not exist", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Tenants deleted successfully." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while deleting tenants. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "Invalid alias name provided.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "get": { + "summary": "Get the list of tenants", + "description": "Retrieves a list of all tenants currently associated with the specified collection.", + "operationId": "tenants.get", + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) whose tenants to list.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "consistency", + "in": "header", + "required": false, + "default": true, + "type": "boolean", + "description": "If true, the request is proxied to the cluster leader to ensure strong schema consistency. Default is true." } - }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully retrieved tenants.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Tenant" + } + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while listing tenants. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } }, - "put": { - "summary": "Update an alias", - "description": "Update an existing alias to point to a different collection (class). This allows you to redirect an alias from one collection to another without changing the alias name.", - "operationId": "aliases.update", - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "aliasName", - "in": "path", - "required": true, - "type": "string" - }, - { - "in": "body", - "name": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "class": { - "description": "The new collection (class) that the alias should point to.", - "type": "string" - } + "/schema/{className}/tenants/{tenantName}": { + "head": { + "summary": "Check if a tenant exists", + "description": "Checks for the existence of a specific tenant within the given collection (`className`).", + "operationId": "tenant.exists", + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) to check within.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "tenantName", + "description": "The name of the tenant to check for.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "consistency", + "in": "header", + "required": false, + "default": true, + "type": "boolean", + "description": "If true, the request is proxied to the cluster leader to ensure strong schema consistency. Default is true." + } + ], + "responses": { + "200": { + "description": "The tenant exists in the specified collection." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Tenant or collection not found." + }, + "422": { + "description": "Invalid request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred during the check. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" } } } - ], - "responses": { - "200": { - "description": "Successfully updated the alias to point to the new collection (class).", - "schema": { - "$ref": "#/definitions/Alias" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Not Found - Alias does not exist", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "Invalid update alias request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + }, + "get": { + "summary": "Get a specific tenant", + "description": "Retrieves details about a specific tenant within the given collection (`className`), such as its current activity status.", + "operationId": "tenants.get.one", + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) containing the tenant.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "tenantName", + "description": "The name of the tenant to retrieve.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "consistency", + "in": "header", + "required": false, + "default": true, + "type": "boolean", + "description": "If true, the request is proxied to the cluster leader to ensure strong schema consistency. Default is true." } - }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully retrieved tenant details.", + "schema": { + "$ref": "#/definitions/Tenant" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Tenant or collection not found." + }, + "422": { + "description": "Invalid request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error occurred while retrieving the tenant. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } }, - "delete": { - "summary": "Delete an alias", - "description": "Remove an existing alias from the system. This will delete the alias mapping but will not affect the underlying collection (class).", - "operationId": "aliases.delete", - "tags": [ - "schema" - ], - "parameters": [ - { - "name": "aliasName", - "in": "path", - "required": true, - "type": "string" - } - ], - "responses": { - "204": { - "description": "Successfully deleted the alias." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "/aliases": { + "get": { + "summary": "List aliases", + "description": "Retrieve a list of all aliases in the system. Results can be filtered by specifying a collection (class) name to get aliases for a specific collection only.", + "operationId": "aliases.get", + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "class", + "description": "Optional filter to retrieve aliases for a specific collection (class) only. If not provided, returns all aliases.", + "in": "query", + "required": false, + "type": "string" } - }, - "404": { - "description": "Not Found - Alias does not exist", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully retrieved the list of aliases", + "schema": { + "$ref": "#/definitions/AliasResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid collection (class) parameter provided", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "Invalid delete alias request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "post": { + "summary": "Create a new alias", + "description": "Create a new alias mapping between an alias name and a collection (class). The alias acts as an alternative name for accessing the collection.", + "operationId": "aliases.create", + "tags": [ + "schema" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Alias" + } } - }, - "500": { - "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully created a new alias for the specified collection (class)", + "schema": { + "$ref": "#/definitions/Alias" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid create alias request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } - } - }, - "/backups/{backend}": { - "post": { - "summary": "Create a backup", - "description": "Initiates the creation of a backup for specified collections on a designated backend storage.

Notes:
- Backups are compressed using gzip by default.
- Weaviate remains operational during the backup process.", - "operationId": "backups.create", - "x-serviceIds": [ - "weaviate.local.backup" - ], - "tags": [ - "backups" - ], - "parameters": [ - { - "name": "backend", - "in": "path", - "required": true, - "type": "string", - "description": "Specifies the backend storage system where the backup will be stored (e.g., `filesystem`, `gcs`, `s3`, `azure`)." - }, - { - "in": "body", - "name": "body", - "description": "Details of the backup request, including the backup ID and collections to include or exclude.", - "required": true, - "schema": { - "$ref": "#/definitions/BackupCreateRequest" + }, + "/aliases/{aliasName}": { + "get": { + "summary": "Get an alias", + "description": "Retrieve details about a specific alias by its name, including which collection (class) it points to.", + "operationId": "aliases.get.alias", + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "aliasName", + "in": "path", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Successfully retrieved the alias details.", + "schema": { + "$ref": "#/definitions/Alias" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Not Found - Alias does not exist", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid alias name provided.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - ], - "responses": { - "200": { - "description": "Backup creation process initiated successfully. Check the status endpoint for progress.", - "schema": { - "$ref": "#/definitions/BackupCreateResponse" + }, + "put": { + "summary": "Update an alias", + "description": "Update an existing alias to point to a different collection (class). This allows you to redirect an alias from one collection to another without changing the alias name.", + "operationId": "aliases.update", + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "aliasName", + "in": "path", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "class": { + "description": "The new collection (class) that the alias should point to.", + "type": "string" + } + } + } } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully updated the alias to point to the new collection (class).", + "schema": { + "$ref": "#/definitions/Alias" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Not Found - Alias does not exist", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid update alias request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "Invalid backup creation request. Check the request body and backend configuration.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "delete": { + "summary": "Delete an alias", + "description": "Remove an existing alias from the system. This will delete the alias mapping but will not affect the underlying collection (class).", + "operationId": "aliases.delete", + "tags": [ + "schema" + ], + "parameters": [ + { + "name": "aliasName", + "in": "path", + "required": true, + "type": "string" } - }, - "500": { - "description": "An internal server error occurred during backup initiation. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Successfully deleted the alias." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Not Found - Alias does not exist", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid delete alias request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An error has occurred while trying to fulfill the request. Most likely the ErrorResponse will contain more information about the error.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } }, - "get": { - "summary": "List all created backups", - "description": "List all created backups IDs, Status", - "operationId": "backups.list", - "x-serviceIds": [ - "weaviate.local.backup" - ], - "tags": [ - "backups" - ], - "parameters": [ - { - "name": "backend", - "in": "path", - "required": true, - "type": "string", - "description": "Specifies the backend storage system to list backups from (e.g., `filesystem`, `gcs`, `s3`, `azure`)." - }, - { - "name": "order", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "desc", - "description": "Order of returned list of backups based on creation time. (asc or desc)" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the list of backups in progress.", - "schema": { - "$ref": "#/definitions/BackupListResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "Invalid request to list backups.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "/backups/{backend}": { + "post": { + "summary": "Create a backup", + "description": "Initiates the creation of a backup for specified collections on a designated backend storage.

Notes:
- Backups are compressed using gzip by default.
- Weaviate remains operational during the backup process.", + "operationId": "backups.create", + "x-serviceIds": [ + "weaviate.local.backup" + ], + "tags": [ + "backups" + ], + "parameters": [ + { + "name": "backend", + "in": "path", + "required": true, + "type": "string", + "description": "Specifies the backend storage system where the backup will be stored (e.g., `filesystem`, `gcs`, `s3`, `azure`)." + }, + { + "in": "body", + "name": "body", + "description": "Details of the backup request, including the backup ID and collections to include or exclude.", + "required": true, + "schema": { + "$ref": "#/definitions/BackupCreateRequest" + } } - }, - "500": { - "description": "An internal server error occurred while listing backups. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Backup creation process initiated successfully. Check the status endpoint for progress.", + "schema": { + "$ref": "#/definitions/BackupCreateResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid backup creation request. Check the request body and backend configuration.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred during backup initiation. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - } - } - }, - "/backups/{backend}/{id}": { - "get": { - "summary": "Get backup creation status", - "description": "Checks the status of a specific backup creation process identified by its ID on the specified backend.

Client libraries often provide a 'wait for completion' feature that polls this endpoint automatically. Use this endpoint for manual status checks or if 'wait for completion' is disabled.", - "operationId": "backups.create.status", - "x-serviceIds": [ - "weaviate.local.backup" - ], - "tags": [ - "backups" - ], - "parameters": [ - { - "name": "backend", - "in": "path", - "required": true, - "type": "string", - "description": "Specifies the backend storage system where the backup resides (e.g., `filesystem`, `gcs`, `s3`, `azure`)." - }, - { - "name": "id", - "in": "path", - "required": true, - "type": "string", - "description": "The unique identifier of the backup. Must be URL-safe and compatible with filesystem paths (only lowercase, numbers, underscore, minus characters allowed)." - }, - { - "name": "bucket", - "in": "query", - "required": false, - "type": "string", - "description": "Optional: Specifies the bucket, container, or volume name if required by the backend." - }, - { - "name": "path", - "in": "query", - "required": false, - "type": "string", - "description": "Optional: Specifies the path within the bucket/container/volume if the backup is not at the root." - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the status of the backup creation process.", - "schema": { - "$ref": "#/definitions/BackupCreateStatusResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Backup not found on the specified backend with the given ID.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "Invalid request to check backup creation status.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + }, + "get": { + "summary": "List all created backups", + "description": "List all created backups IDs, Status", + "operationId": "backups.list", + "x-serviceIds": [ + "weaviate.local.backup" + ], + "tags": [ + "backups" + ], + "parameters": [ + { + "name": "backend", + "in": "path", + "required": true, + "type": "string", + "description": "Specifies the backend storage system to list backups from (e.g., `filesystem`, `gcs`, `s3`, `azure`)." + }, + { + "name": "order", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc", + "description": "Order of returned list of backups based on creation time. (asc or desc)" } - }, - "500": { - "description": "An internal server error occurred while checking backup status. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully retrieved the list of backups in progress.", + "schema": { + "$ref": "#/definitions/BackupListResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid request to list backups.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred while listing backups. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } }, - "delete": { - "summary": "Cancel a backup", - "description": "Cancels an ongoing backup operation identified by its ID.", - "operationId": "backups.cancel", - "x-serviceIds": [ - "weaviate.local.backup" - ], - "tags": [ - "backups" - ], - "parameters": [ - { - "name": "backend", - "in": "path", - "required": true, - "type": "string", - "description": "Specifies the backend storage system where the backup resides (e.g., `filesystem`, `gcs`, `s3`, `azure`)." - }, - { - "name": "id", - "in": "path", - "required": true, - "type": "string", - "description": "The unique identifier of the backup to cancel. Must be URL-safe and compatible with filesystem paths (only lowercase, numbers, underscore, minus characters allowed)." - }, - { - "name": "bucket", - "in": "query", - "required": false, - "type": "string", - "description": "Optional: Specifies the bucket, container, or volume name if required by the backend." - }, - { - "name": "path", - "in": "query", - "required": false, - "type": "string", - "description": "Optional: Specifies the path within the bucket/container/volume if the backup is not at the root." - } - ], - "responses": { - "204": { - "description": "Backup canceled successfully." - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "Invalid backup cancellation request.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "500": { - "description": "An internal server error occurred during backup cancellation. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "/backups/{backend}/{id}": { + "get": { + "summary": "Get backup creation status", + "description": "Checks the status of a specific backup creation process identified by its ID on the specified backend.

Client libraries often provide a 'wait for completion' feature that polls this endpoint automatically. Use this endpoint for manual status checks or if 'wait for completion' is disabled.", + "operationId": "backups.create.status", + "x-serviceIds": [ + "weaviate.local.backup" + ], + "tags": [ + "backups" + ], + "parameters": [ + { + "name": "backend", + "in": "path", + "required": true, + "type": "string", + "description": "Specifies the backend storage system where the backup resides (e.g., `filesystem`, `gcs`, `s3`, `azure`)." + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string", + "description": "The unique identifier of the backup. Must be URL-safe and compatible with filesystem paths (only lowercase, numbers, underscore, minus characters allowed)." + }, + { + "name": "bucket", + "in": "query", + "required": false, + "type": "string", + "description": "Optional: Specifies the bucket, container, or volume name if required by the backend." + }, + { + "name": "path", + "in": "query", + "required": false, + "type": "string", + "description": "Optional: Specifies the path within the bucket/container/volume if the backup is not at the root." } - } - } - } - }, - "/backups/{backend}/{id}/restore": { - "post": { - "summary": "Restore from a backup", - "description": "Initiates the restoration of collections from a specified backup located on a designated backend.

Requirements:
- Target cluster must have the same number of nodes as the source cluster where the backup was created.
- Collections included in the restore must not already exist on the target cluster.
- Node names must match between the backup and the target cluster.", - "operationId": "backups.restore", - "x-serviceIds": [ - "weaviate.local.backup" - ], - "tags": [ - "backups" - ], - "parameters": [ - { - "name": "backend", - "in": "path", - "required": true, - "type": "string", - "description": "Specifies the backend storage system where the backup resides (e.g., `filesystem`, `gcs`, `s3`, `azure`)." - }, - { - "name": "id", - "in": "path", - "required": true, - "type": "string", - "description": "The unique identifier of the backup to restore from. Must be URL-safe and compatible with filesystem paths (only lowercase, numbers, underscore, minus characters allowed)." - }, - { - "in": "body", - "name": "body", - "description": "Details of the restore request, including collections to include or exclude and node mapping if necessary.", - "required": true, - "schema": { - "$ref": "#/definitions/BackupRestoreRequest" + ], + "responses": { + "200": { + "description": "Successfully retrieved the status of the backup creation process.", + "schema": { + "$ref": "#/definitions/BackupCreateStatusResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Backup not found on the specified backend with the given ID.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid request to check backup creation status.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred while checking backup status. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - ], - "responses": { - "200": { - "description": "Backup restoration process initiated successfully. Check the status endpoint for progress.", - "schema": { - "$ref": "#/definitions/BackupRestoreResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Backup not found on the specified backend with the given ID.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "Invalid backup restoration request. Check requirements and request body.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + }, + "delete": { + "summary": "Cancel a backup", + "description": "Cancels an ongoing backup operation identified by its ID.", + "operationId": "backups.cancel", + "x-serviceIds": [ + "weaviate.local.backup" + ], + "tags": [ + "backups" + ], + "parameters": [ + { + "name": "backend", + "in": "path", + "required": true, + "type": "string", + "description": "Specifies the backend storage system where the backup resides (e.g., `filesystem`, `gcs`, `s3`, `azure`)." + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string", + "description": "The unique identifier of the backup to cancel. Must be URL-safe and compatible with filesystem paths (only lowercase, numbers, underscore, minus characters allowed)." + }, + { + "name": "bucket", + "in": "query", + "required": false, + "type": "string", + "description": "Optional: Specifies the bucket, container, or volume name if required by the backend." + }, + { + "name": "path", + "in": "query", + "required": false, + "type": "string", + "description": "Optional: Specifies the path within the bucket/container/volume if the backup is not at the root." } - }, - "500": { - "description": "An internal server error occurred during restore initiation. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Backup canceled successfully." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid backup cancellation request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred during backup cancellation. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } }, - "get": { - "summary": "Get backup restoration status", - "description": "Checks the status of a specific backup restoration process identified by the backup ID on the specified backend.

Client libraries often provide a 'wait for completion' feature that polls this endpoint automatically. Use this endpoint for manual status checks or if 'wait for completion' is disabled.", - "operationId": "backups.restore.status", - "x-serviceIds": [ - "weaviate.local.backup" - ], - "tags": [ - "backups" - ], - "parameters": [ - { - "name": "backend", - "in": "path", - "required": true, - "type": "string", - "description": "Specifies the backend storage system where the backup resides (e.g., `filesystem`, `gcs`, `s3`, `azure`)." - }, - { - "name": "id", - "in": "path", - "required": true, - "type": "string", - "description": "The unique identifier of the backup being restored. Must be URL-safe and compatible with filesystem paths (only lowercase, numbers, underscore, minus characters allowed)." - }, - { - "name": "bucket", - "in": "query", - "required": false, - "type": "string", - "description": "Optional: Specifies the bucket, container, or volume name if required by the backend." - }, - { - "name": "path", - "in": "query", - "required": false, - "type": "string", - "description": "Optional: Specifies the path within the bucket." - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the status of the backup restoration process.", - "schema": { - "$ref": "#/definitions/BackupRestoreStatusResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Backup not found on the specified backend with the given ID.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + "/backups/{backend}/{id}/restore": { + "post": { + "summary": "Restore from a backup", + "description": "Initiates the restoration of collections from a specified backup located on a designated backend.

Requirements:
- Target cluster must have the same number of nodes as the source cluster where the backup was created.
- Collections included in the restore must not already exist on the target cluster.
- Node names must match between the backup and the target cluster.", + "operationId": "backups.restore", + "x-serviceIds": [ + "weaviate.local.backup" + ], + "tags": [ + "backups" + ], + "parameters": [ + { + "name": "backend", + "in": "path", + "required": true, + "type": "string", + "description": "Specifies the backend storage system where the backup resides (e.g., `filesystem`, `gcs`, `s3`, `azure`)." + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string", + "description": "The unique identifier of the backup to restore from. Must be URL-safe and compatible with filesystem paths (only lowercase, numbers, underscore, minus characters allowed)." + }, + { + "in": "body", + "name": "body", + "description": "Details of the restore request, including collections to include or exclude and node mapping if necessary.", + "required": true, + "schema": { + "$ref": "#/definitions/BackupRestoreRequest" + } } - }, - "500": { - "description": "An internal server error occurred while checking restore status. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Backup restoration process initiated successfully. Check the status endpoint for progress.", + "schema": { + "$ref": "#/definitions/BackupRestoreResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Backup not found on the specified backend with the given ID.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid backup restoration request. Check requirements and request body.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred during restore initiation. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } - } - } - }, - "/cluster/statistics": { - "get": { - "summary": "Get cluster statistics", - "description": "Provides statistics about the internal Raft consensus protocol state for the Weaviate cluster.", - "operationId": "cluster.get.statistics", - "x-serviceIds": [ - "weaviate.cluster.statistics.get" - ], - "tags": [ - "cluster" - ], - "responses": { - "200": { - "description": "Successfully retrieved Raft cluster statistics.", - "schema": { - "$ref": "#/definitions/ClusterStatisticsResponse" + }, + "get": { + "summary": "Get backup restoration status", + "description": "Checks the status of a specific backup restoration process identified by the backup ID on the specified backend.

Client libraries often provide a 'wait for completion' feature that polls this endpoint automatically. Use this endpoint for manual status checks or if 'wait for completion' is disabled.", + "operationId": "backups.restore.status", + "x-serviceIds": [ + "weaviate.local.backup" + ], + "tags": [ + "backups" + ], + "parameters": [ + { + "name": "backend", + "in": "path", + "required": true, + "type": "string", + "description": "Specifies the backend storage system where the backup resides (e.g., `filesystem`, `gcs`, `s3`, `azure`)." + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string", + "description": "The unique identifier of the backup being restored. Must be URL-safe and compatible with filesystem paths (only lowercase, numbers, underscore, minus characters allowed)." + }, + { + "name": "bucket", + "in": "query", + "required": false, + "type": "string", + "description": "Optional: Specifies the bucket, container, or volume name if required by the backend." + }, + { + "name": "path", + "in": "query", + "required": false, + "type": "string", + "description": "Optional: Specifies the path within the bucket." } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully retrieved the status of the backup restoration process.", + "schema": { + "$ref": "#/definitions/BackupRestoreStatusResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Backup not found on the specified backend with the given ID.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred while checking restore status. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "422": { - "description": "Invalid request for cluster statistics.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + }, + "delete": { + "summary": "Cancel a backup restoration", + "description": "Cancels an ongoing backup restoration process identified by its ID on the specified backend storage.", + "operationId": "backups.restore.cancel", + "x-serviceIds": [ + "weaviate.local.backup" + ], + "tags": [ + "backups" + ], + "parameters": [ + { + "name": "backend", + "in": "path", + "required": true, + "type": "string", + "description": "Specifies the backend storage system where the backup resides (e.g., `filesystem`, `gcs`, `s3`, `azure`)." + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string", + "description": "The unique identifier of the backup restoration to cancel. Must be URL-safe and compatible with filesystem paths (only lowercase, numbers, underscore, minus characters allowed)." + }, + { + "name": "bucket", + "in": "query", + "required": false, + "type": "string", + "description": "Optional: Specifies the bucket, container, or volume name if required by the backend." + }, + { + "name": "path", + "in": "query", + "required": false, + "type": "string", + "description": "Optional: Specifies the path within the bucket/container/volume if the backup is not at the root." } - }, - "500": { - "description": "An internal server error occurred while retrieving cluster statistics. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "204": { + "description": "Backup restoration cancelled successfully." + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid backup restoration cancellation request.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred during backup restoration cancellation. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } - } - }, - "/nodes": { - "get": { - "summary": "Get node status", - "description": "Retrieves status information about all nodes in the cluster. Use the `output` query parameter to control the level of detail.", - "operationId": "nodes.get", - "x-serviceIds": [ - "weaviate.nodes.status.get" - ], - "tags": [ - "nodes" - ], - "parameters": [ - { - "$ref": "#/parameters/CommonOutputVerbosityParameterQuery" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the status for all nodes.", - "schema": { - "$ref": "#/definitions/NodesStatusResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Not Found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "Invalid request for node status.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "500": { - "description": "An internal server error occurred while retrieving node status. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + }, + "/cluster/statistics": { + "get": { + "summary": "Get cluster statistics", + "description": "Provides statistics about the internal Raft consensus protocol state for the Weaviate cluster.", + "operationId": "cluster.get.statistics", + "x-serviceIds": [ + "weaviate.cluster.statistics.get" + ], + "tags": [ + "cluster" + ], + "responses": { + "200": { + "description": "Successfully retrieved Raft cluster statistics.", + "schema": { + "$ref": "#/definitions/ClusterStatisticsResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid request for cluster statistics.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred while retrieving cluster statistics. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } - } - }, - "/nodes/{className}": { - "get": { - "summary": "Get node status by collection", - "description": "Retrieves status information only for the nodes that host shards for the specified collection (`className`). Use the `output` query parameter to control the level of detail.", - "operationId": "nodes.get.class", - "x-serviceIds": [ - "weaviate.nodes.status.get.class" - ], - "tags": [ - "nodes" - ], - "parameters": [ - { - "name": "className", - "description": "The name of the collection (class) for which to retrieve node status.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "shardName", - "in": "query", - "required": false, - "type": "string" - }, - { - "$ref": "#/parameters/CommonOutputVerbosityParameterQuery" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the status for nodes relevant to the specified collection.", - "schema": { - "$ref": "#/definitions/NodesStatusResponse" - } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "404": { - "description": "Not Found.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "422": { - "description": "Invalid request for node status.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + }, + "/nodes": { + "get": { + "summary": "Get node status", + "description": "Retrieves status information about all nodes in the cluster. Use the `output` query parameter to control the level of detail.", + "operationId": "nodes.get", + "x-serviceIds": [ + "weaviate.nodes.status.get" + ], + "tags": [ + "nodes" + ], + "parameters": [ + { + "$ref": "#/parameters/CommonOutputVerbosityParameterQuery" } - }, - "500": { - "description": "An internal server error occurred while retrieving node status for the collection. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully retrieved the status for all nodes.", + "schema": { + "$ref": "#/definitions/NodesStatusResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Not Found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid request for node status.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred while retrieving node status. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } - } - }, - "/tasks": { - "get": { - "summary": "Lists all distributed tasks in the cluster", - "operationId": "distributedTasks.get", - "x-serviceIds": [ - "weaviate.distributedTasks.get" - ], - "tags": [ - "distributedTasks" - ], - "responses": { - "200": { - "description": "Distributed tasks successfully returned.", - "schema": { - "$ref": "#/definitions/DistributedTasks" - } - }, - "403": { - "description": "Unauthorized or invalid credentials.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + }, + "/nodes/{className}": { + "get": { + "summary": "Get node status by collection", + "description": "Retrieves status information only for the nodes that host shards for the specified collection (`className`). Use the `output` query parameter to control the level of detail.", + "operationId": "nodes.get.class", + "x-serviceIds": [ + "weaviate.nodes.status.get.class" + ], + "tags": [ + "nodes" + ], + "parameters": [ + { + "name": "className", + "description": "The name of the collection (class) for which to retrieve node status.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "shardName", + "in": "query", + "required": false, + "type": "string" + }, + { + "$ref": "#/parameters/CommonOutputVerbosityParameterQuery" } - }, - "500": { - "description": "An internal server error occurred while retrieving distributed tasks. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully retrieved the status for nodes relevant to the specified collection.", + "schema": { + "$ref": "#/definitions/NodesStatusResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Not Found.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "422": { + "description": "Invalid request for node status.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred while retrieving node status for the collection. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } } } - } - }, - "/classifications/": { - "post": { - "summary": "Start a classification", - "description": "Initiates a background classification task based on the provided parameters. Use the GET /classifications/{id} endpoint to monitor the status and retrieve results.", - "operationId": "classifications.post", - "x-serviceIds": [ - "weaviate.classifications.post" - ], - "parameters": [ - { - "description": "Configuration parameters for the classification task, including type, target properties, and training data references.", - "in": "body", - "schema": { - "$ref": "#/definitions/Classification" + }, + "/tasks": { + "get": { + "summary": "Lists all distributed tasks in the cluster", + "operationId": "distributedTasks.get", + "x-serviceIds": [ + "weaviate.distributedTasks.get" + ], + "tags": [ + "distributedTasks" + ], + "responses": { + "200": { + "description": "Distributed tasks successfully returned.", + "schema": { + "$ref": "#/definitions/DistributedTasks" + } }, - "name": "params", - "required": true - } - ], - "responses": { - "201": { - "description": "Classification task successfully initiated. The response body contains the classification details including its ID.", - "schema": { - "$ref": "#/definitions/Classification" + "403": { + "description": "Unauthorized or invalid credentials.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred while retrieving distributed tasks. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } - }, - "400": { - "description": "Invalid request body or parameters.", - "schema": { - "$ref": "#/definitions/ErrorResponse" + } + } + }, + "/classifications/": { + "post": { + "summary": "Start a classification", + "description": "Initiates a background classification task based on the provided parameters. Use the GET /classifications/{id} endpoint to monitor the status and retrieve results.", + "operationId": "classifications.post", + "x-serviceIds": [ + "weaviate.classifications.post" + ], + "parameters": [ + { + "description": "Configuration parameters for the classification task, including type, target properties, and training data references.", + "in": "body", + "schema": { + "$ref": "#/definitions/Classification" + }, + "name": "params", + "required": true } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "201": { + "description": "Classification task successfully initiated. The response body contains the classification details including its ID.", + "schema": { + "$ref": "#/definitions/Classification" + } + }, + "400": { + "description": "Invalid request body or parameters.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "500": { + "description": "An internal server error occurred while starting the classification task. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "500": { - "description": "An internal server error occurred while starting the classification task. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "tags": [ - "classifications" - ] - } - }, - "/classifications/{id}": { - "get": { - "summary": "Get classification status", - "description": "Retrieves the status, metadata, and results (if completed) of a classification task identified by its unique ID.", - "operationId": "classifications.get", - "x-serviceIds": [ - "weaviate.classifications.get" - ], - "parameters": [ - { - "description": "The unique identifier (UUID) of the classification task.", - "in": "path", - "type": "string", - "name": "id", - "required": true - } - ], - "responses": { - "200": { - "description": "Successfully retrieved the classification details.", - "schema": { - "$ref": "#/definitions/Classification" + "tags": [ + "classifications" + ] + } + }, + "/classifications/{id}": { + "get": { + "summary": "Get classification status", + "description": "Retrieves the status, metadata, and results (if completed) of a classification task identified by its unique ID.", + "operationId": "classifications.get", + "x-serviceIds": [ + "weaviate.classifications.get" + ], + "parameters": [ + { + "description": "The unique identifier (UUID) of the classification task.", + "in": "path", + "type": "string", + "name": "id", + "required": true } - }, - "401": { - "description": "Unauthorized or invalid credentials." - }, - "403": { - "description": "Forbidden", - "schema": { - "$ref": "#/definitions/ErrorResponse" + ], + "responses": { + "200": { + "description": "Successfully retrieved the classification details.", + "schema": { + "$ref": "#/definitions/Classification" + } + }, + "401": { + "description": "Unauthorized or invalid credentials." + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + }, + "404": { + "description": "Classification with the given ID not found." + }, + "500": { + "description": "An internal server error occurred while retrieving the classification status. Check the ErrorResponse for details.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } } }, - "404": { - "description": "Classification with the given ID not found." - }, - "500": { - "description": "An internal server error occurred while retrieving the classification status. Check the ErrorResponse for details.", - "schema": { - "$ref": "#/definitions/ErrorResponse" - } - } - }, - "tags": [ - "classifications" - ] + "tags": [ + "classifications" + ] + } } - } - }, - "produces": [ - "application/json" - ], - "schemes": [ - "https" - ], - "security": [ - {}, - { - "oidc": [] - } - ], - "securityDefinitions": { - "oidc": { - "type": "oauth2", - "description": "OIDC (OpenConnect ID - based on OAuth2)", - "flow": "implicit", - "authorizationUrl": "http://to-be-configured-in-the-application-config" - } - }, - "swagger": "2.0", - "tags": [ - { - "name": "objects", - "description": "Operations for managing individual data objects. Objects are the primary units of data stored within Weaviate collections. Each object conforms to the data schema definition of its parent collection, containing specific properties (data fields). Objects have one or multiple associated vector embeddings and can link to other objects via cross-references. These endpoints allow you to perform CRUD (Create, Read, Update, Delete) operations on individual data objects." - }, - { - "name": "batch", - "description": "Operations for performing actions on multiple data items (objects or references) in a single API request. Batch operations significantly improve performance and efficiency, especially for bulk data imports or large-scale deletions, by reducing network overhead compared to sending individual requests. These endpoints allow for creating multiple objects or deleting objects based on filters." }, - { - "name": "graphql" - }, - { - "name": "meta" - }, - { - "name": "schema", - "description": "Operations related to managing collections. In Weaviate, 'collections' (formerly called 'classes') store your data objects. Each collection has a definition that specifies its data structure (properties and their data types), vectorizer settings (how vectors are generated or managed), and indexing configuration (how data is indexed for efficient search). These endpoints allow you to create, retrieve, update, and delete collection definitions. For detailed usage and code examples on interacting with collections, see the documentation: [https://weaviate.io/developers/weaviate/manage-data/collections](https://weaviate.io/developers/weaviate/manage-data/collections)." - }, - { - "name": "backups", - "description": "Operations related to creating and managing backups of Weaviate data. This feature allows you to create snapshots of your collections and store them on external storage backends such as cloud object storage (S3, GCS, Azure) or a shared filesystem. These endpoints enable you to initiate backup and restore processes, monitor their status, list available backups on a backend, and delete unwanted backups. Backups are essential for disaster recovery, data migration, and maintaining point-in-time copies of your vector database." - }, - { - "name": "users", - "description": "Endpoints for user account management in Weaviate. This includes operations specific to Weaviate-managed database users (`db` users), such as creation (which generates an API key), listing, deletion, activation/deactivation, and API key rotation. It also provides operations applicable to any authenticated user (`db` or `oidc`), like retrieving their own information (username and assigned roles).

**User Types:**
* **`db` users:** Managed entirely within Weaviate (creation, deletion, API keys). Use these endpoints for full lifecycle management.
* **`oidc` users:** Authenticated via an external OpenID Connect provider. Their lifecycle (creation, credentials) is managed externally, but their role assignments *within Weaviate* are managed via the `authz` endpoints." - }, - { - "name": "authz", - "description": "Endpoints for managing Weaviate's Role-Based Access Control (RBAC) system. Access to Weaviate resources is granted through roles, which are collections of fine-grained permissions.

**Permissions:** Define allowed actions (e.g., `read_data`, `create_collections`, `delete_users`) on specific resources. Resources can be specified broadly (e.g., all collections: `*`) or narrowly (e.g., a specific collection name, tenant pattern, user name, or role name).

**Roles:** Are named sets of permissions. Managing roles involves creating roles with specific permissions, retrieving role definitions, deleting roles, and adding or removing permissions from existing roles.

**Role assignment:** Roles grant their contained permissions to users or groups. These endpoints allow assigning roles to:
* `db` users: Users managed directly by Weaviate via API or environment variables, authenticating with API keys.
* `oidc` users: Users authenticated via an external OpenID Connect provider, managed externally but assigned roles within Weaviate.
* OIDC `groups`: Users authenticated via OIDC who belong to a group automatically inherit roles assigned to that group.

Operations also include revoking roles, checking if a role has a specific permission, listing roles assigned to a user, and listing users/groups assigned to a role. The authorization framework applies universally to both `db` and `oidc` users based on their assigned roles." + "produces": [ + "application/json" + ], + "schemes": [ + "https" + ], + "security": [ + {}, + { + "oidc": [] + } + ], + "securityDefinitions": { + "oidc": { + "type": "oauth2", + "description": "OIDC (OpenConnect ID - based on OAuth2)", + "flow": "implicit", + "authorizationUrl": "http://to-be-configured-in-the-application-config" + } }, - { - "name": "replication", - "description": "Operations related to managing data replication, including initiating and monitoring shard replica movements between nodes, querying current sharding states, and managing the lifecycle of replication tasks." - } - ] -} + "swagger": "2.0", + "tags": [ + { + "name": "objects", + "description": "Operations for managing individual data objects. Objects are the primary units of data stored within Weaviate collections. Each object conforms to the data schema definition of its parent collection, containing specific properties (data fields). Objects have one or multiple associated vector embeddings and can link to other objects via cross-references. These endpoints allow you to perform CRUD (Create, Read, Update, Delete) operations on individual data objects." + }, + { + "name": "batch", + "description": "Operations for performing actions on multiple data items (objects or references) in a single API request. Batch operations significantly improve performance and efficiency, especially for bulk data imports or large-scale deletions, by reducing network overhead compared to sending individual requests. These endpoints allow for creating multiple objects or deleting objects based on filters." + }, + { + "name": "graphql" + }, + { + "name": "meta" + }, + { + "name": "schema", + "description": "Operations related to managing collections. In Weaviate, 'collections' (formerly called 'classes') store your data objects. Each collection has a definition that specifies its data structure (properties and their data types), vectorizer settings (how vectors are generated or managed), and indexing configuration (how data is indexed for efficient search). These endpoints allow you to create, retrieve, update, and delete collection definitions. For detailed usage and code examples on interacting with collections, see the documentation: [https://weaviate.io/developers/weaviate/manage-data/collections](https://weaviate.io/developers/weaviate/manage-data/collections)." + }, + { + "name": "backups", + "description": "Operations related to creating and managing backups of Weaviate data. This feature allows you to create snapshots of your collections and store them on external storage backends such as cloud object storage (S3, GCS, Azure) or a shared filesystem. These endpoints enable you to initiate backup and restore processes, monitor their status, list available backups on a backend, and delete unwanted backups. Backups are essential for disaster recovery, data migration, and maintaining point-in-time copies of your vector database." + }, + { + "name": "users", + "description": "Endpoints for user account management in Weaviate. This includes operations specific to Weaviate-managed database users (`db` users), such as creation (which generates an API key), listing, deletion, activation/deactivation, and API key rotation. It also provides operations applicable to any authenticated user (`db` or `oidc`), like retrieving their own information (username and assigned roles).

**User Types:**
* **`db` users:** Managed entirely within Weaviate (creation, deletion, API keys). Use these endpoints for full lifecycle management.
* **`oidc` users:** Authenticated via an external OpenID Connect provider. Their lifecycle (creation, credentials) is managed externally, but their role assignments *within Weaviate* are managed via the `authz` endpoints." + }, + { + "name": "authz", + "description": "Endpoints for managing Weaviate's Role-Based Access Control (RBAC) system. Access to Weaviate resources is granted through roles, which are collections of fine-grained permissions.

**Permissions:** Define allowed actions (e.g., `read_data`, `create_collections`, `delete_users`) on specific resources. Resources can be specified broadly (e.g., all collections: `*`) or narrowly (e.g., a specific collection name, tenant pattern, user name, or role name).

**Roles:** Are named sets of permissions. Managing roles involves creating roles with specific permissions, retrieving role definitions, deleting roles, and adding or removing permissions from existing roles.

**Role assignment:** Roles grant their contained permissions to users or groups. These endpoints allow assigning roles to:
* `db` users: Users managed directly by Weaviate via API or environment variables, authenticating with API keys.
* `oidc` users: Users authenticated via an external OpenID Connect provider, managed externally but assigned roles within Weaviate.
* OIDC `groups`: Users authenticated via OIDC who belong to a group automatically inherit roles assigned to that group.

Operations also include revoking roles, checking if a role has a specific permission, listing roles assigned to a user, and listing users/groups assigned to a role. The authorization framework applies universally to both `db` and `oidc` users based on their assigned roles." + }, + { + "name": "replication", + "description": "Operations related to managing data replication, including initiating and monitoring shard replica movements between nodes, querying current sharding states, and managing the lifecycle of replication tasks." + } + ] + }