diff --git a/src/Squidex/Controllers/Api/Schemas/Models/BooleanFieldPropertiesDto.cs b/src/Squidex/Controllers/Api/Schemas/Models/BooleanFieldPropertiesDto.cs
new file mode 100644
index 000000000..bb830876f
--- /dev/null
+++ b/src/Squidex/Controllers/Api/Schemas/Models/BooleanFieldPropertiesDto.cs
@@ -0,0 +1,38 @@
+// ==========================================================================
+// BooleanFieldPropertiesDto.cs
+// Squidex Headless CMS
+// ==========================================================================
+// Copyright (c) Squidex Group
+// All rights reserved.
+// ==========================================================================
+
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using NJsonSchema.Annotations;
+using Squidex.Core.Schemas;
+using Squidex.Infrastructure.Reflection;
+
+namespace Squidex.Controllers.Api.Schemas.Models
+{
+ [JsonSchema("boolean")]
+ public sealed class BooleanFieldPropertiesDto : FieldPropertiesDto
+ {
+ ///
+ /// The default value for the field value.
+ ///
+ public bool? DefaultValue { get; set; }
+
+ ///
+ /// The editor that is used to manage this field.
+ ///
+ [JsonConverter(typeof(StringEnumConverter))]
+ public BooleanFieldEditor Editor { get; set; }
+
+ public override FieldProperties ToProperties()
+ {
+ var result = SimpleMapper.Map(this, new BooleanFieldProperties());
+
+ return result;
+ }
+ }
+}
diff --git a/src/Squidex/Controllers/Api/Schemas/Models/Converters/SchemaConverter.cs b/src/Squidex/Controllers/Api/Schemas/Models/Converters/SchemaConverter.cs
index 4259f8a45..e5f460951 100644
--- a/src/Squidex/Controllers/Api/Schemas/Models/Converters/SchemaConverter.cs
+++ b/src/Squidex/Controllers/Api/Schemas/Models/Converters/SchemaConverter.cs
@@ -26,6 +26,10 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters
{
typeof(StringFieldProperties),
p => Convert((StringFieldProperties)p)
+ },
+ {
+ typeof(BooleanFieldProperties),
+ p => Convert((BooleanFieldProperties)p)
}
};
@@ -52,6 +56,13 @@ namespace Squidex.Controllers.Api.Schemas.Models.Converters
return dto;
}
+ private static FieldPropertiesDto Convert(BooleanFieldProperties source)
+ {
+ var result = SimpleMapper.Map(source, new BooleanFieldPropertiesDto());
+
+ return result;
+ }
+
private static FieldPropertiesDto Convert(StringFieldProperties source)
{
var result = SimpleMapper.Map(source, new StringFieldPropertiesDto());
diff --git a/src/Squidex/Controllers/Api/Schemas/Models/SchemaDetailsDto.cs b/src/Squidex/Controllers/Api/Schemas/Models/SchemaDetailsDto.cs
index c7d641469..d86da7dd5 100644
--- a/src/Squidex/Controllers/Api/Schemas/Models/SchemaDetailsDto.cs
+++ b/src/Squidex/Controllers/Api/Schemas/Models/SchemaDetailsDto.cs
@@ -27,6 +27,11 @@ namespace Squidex.Controllers.Api.Schemas.Models
[RegularExpression("^[a-z0-9]+(\\-[a-z0-9]+)*$")]
public string Name { get; set; }
+ ///
+ /// Indicates if the schema is published.
+ ///
+ public bool IsPublished { get; set; }
+
///
/// The list of fields.
///
diff --git a/src/Squidex/Controllers/Api/Schemas/Models/SchemaDto.cs b/src/Squidex/Controllers/Api/Schemas/Models/SchemaDto.cs
index 6f45c75c4..4204b31ec 100644
--- a/src/Squidex/Controllers/Api/Schemas/Models/SchemaDto.cs
+++ b/src/Squidex/Controllers/Api/Schemas/Models/SchemaDto.cs
@@ -26,6 +26,11 @@ namespace Squidex.Controllers.Api.Schemas.Models
[RegularExpression("^[a-z0-9]+(\\-[a-z0-9]+)*$")]
public string Name { get; set; }
+ ///
+ /// Indicates if the schema is published.
+ ///
+ public bool IsPublished { get; set; }
+
///
/// The user that has created the schema.
///
diff --git a/src/Squidex/Controllers/Api/Schemas/SchemasController.cs b/src/Squidex/Controllers/Api/Schemas/SchemasController.cs
index 8f8a82210..287cdc875 100644
--- a/src/Squidex/Controllers/Api/Schemas/SchemasController.cs
+++ b/src/Squidex/Controllers/Api/Schemas/SchemasController.cs
@@ -126,6 +126,42 @@ namespace Squidex.Controllers.Api.Schemas
return NoContent();
}
+ ///
+ /// Publishs a schema.
+ ///
+ /// The app where the schema is a part of.
+ /// The name of the schema to publish.
+ ///
+ /// 400 => Schema is already published.
+ /// 204 => Schema has been deleted.
+ ///
+ [HttpPut]
+ [Route("apps/{app}/schemas/{name}/publish")]
+ public async Task PublishSchema(string app, string name)
+ {
+ await CommandBus.PublishAsync(new PublishSchema());
+
+ return NoContent();
+ }
+
+ ///
+ /// Unpublishs a schema.
+ ///
+ /// The app where the schema is a part of.
+ /// The name of the schema to unpublish.
+ ///
+ /// 400 => Schema is not published.
+ /// 204 => Schema has been deleted.
+ ///
+ [HttpPut]
+ [Route("apps/{app}/schemas/{name}/publish")]
+ public async Task UnpublishSchema(string app, string name)
+ {
+ await CommandBus.PublishAsync(new UnpublishSchema());
+
+ return NoContent();
+ }
+
///
/// Delete a schema.
///