src/Microsoft.Azure.WebJobs.Extensions.OpenApi.Core/Abstractions/IDocument.cs (24 lines of code) (raw):

using System.Reflection; using System.Threading.Tasks; using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Enums; using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Filters; using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Visitors; using Microsoft.OpenApi; using Microsoft.OpenApi.Models; using Newtonsoft.Json.Serialization; namespace Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Abstractions { /// <summary> /// This provides interfaces to its implementing class. /// </summary> public interface IDocument { /// <summary> /// Gets the underlying <see cref="OpenApiDocument"/> instance. /// </summary> OpenApiDocument OpenApiDocument { get; } /// <summary> /// Initializes the document instance. /// </summary> /// <returns><see cref="IDocument"/> instance.</returns> IDocument InitialiseDocument(); /// <summary> /// Adds metadata to build OpenAPI document. /// </summary> /// <param name="info"><see cref="OpenApiInfo"/> instance.</param> /// <returns><see cref="IDocument"/> instance.</returns> IDocument AddMetadata(OpenApiInfo info); /// <summary> /// Adds server details. /// </summary> /// <param name="req"><see cref="IHttpRequestDataObject"/> instance.</param> /// <param name="routePrefix">Route prefix value.</param> /// <param name="options"><see cref="IOpenApiConfigurationOptions"/> instance.</param> /// <returns><see cref="IDocument"/> instance.</returns> IDocument AddServer(IHttpRequestDataObject req, string routePrefix, IOpenApiConfigurationOptions options = null); /// <summary> /// Adds the naming strategy. /// </summary> /// <param name="strategy"><see cref="NamingStrategy"/> instance to create the JSON schema from .NET Types.</param> /// <returns><see cref="IDocument"/> instance.</returns> IDocument AddNamingStrategy(NamingStrategy strategy); /// <summary> /// Adds the visitor collection. /// </summary> /// <param name="collection"><see cref="VisitorCollection"/> instance.</param> /// <returns><see cref="IDocument"/> instance.</returns> IDocument AddVisitors(VisitorCollection collection); /// <summary> /// Builds OpenAPI document. /// </summary> /// <param name="assemblyPath">Assembly file path.</param> /// <param name="version">OpenAPI spec version.</param> /// <returns><see cref="IDocument"/> instance.</returns> IDocument Build(string assemblyPath, OpenApiVersionType version = OpenApiVersionType.V2); /// <summary> /// Builds OpenAPI document. /// </summary> /// <param name="assembly"><see cref="Assembly"/> instance.</param> /// <param name="version">OpenAPI spec version.</param> /// <returns><see cref="IDocument"/> instance.</returns> IDocument Build(Assembly assembly, OpenApiVersionType version = OpenApiVersionType.V2); /// <summary> /// Applies the given <see cref="DocumentFilterCollection"/> to the <see cref="IDocument"/>. /// </summary> /// <param name="collection"><see cref="DocumentFilterCollection"/> instance.</param> /// <returns></returns> IDocument ApplyDocumentFilters(DocumentFilterCollection collection); /// <summary> /// Renders OpenAPI document. /// </summary> /// <param name="version"><see cref="OpenApiSpecVersion"/> value.</param> /// <param name="format"><see cref="OpenApiFormat"/> value.</param> /// <returns>Serialised OpenAPI document.</returns> Task<string> RenderAsync(OpenApiSpecVersion version, OpenApiFormat format); } }