private IList <Parameter> CreateGetByExampleParameters(OpenApiMetadataPathsResource openApiMetadataResource, bool isCompositeContext) { var parameterList = CreateQueryParameters(isCompositeContext) .Concat( openApiMetadataResource.DefaultGetByExampleParameters.Select( p => new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference(p) })) .ToList(); IEnumerableExtensions.ForEach( openApiMetadataResource.RequestProperties, x => { parameterList.Add( new Parameter { name = StringExtensions.ToCamelCase(x.PropertyName), @in = openApiMetadataResource.IsPathParameter(x) ? "path" : "query", description = OpenApiMetadataDocumentHelper.PropertyDescription(x), type = OpenApiMetadataDocumentHelper.PropertyType(x), format = x.PropertyType.ToOpenApiFormat(), required = openApiMetadataResource.IsPathParameter(x), isIdentity = OpenApiMetadataDocumentHelper.GetIsIdentity(x), maxLength = OpenApiMetadataDocumentHelper.GetMaxLength(x), isDeprecated = OpenApiMetadataDocumentHelper.GetIsDeprecated(x), deprecatedReasons = OpenApiMetadataDocumentHelper.GetDeprecatedReasons(x) }); }); return(parameterList); }
private IList <Parameter> CreateQueryParameters(bool isCompositeContext) { var parameterList = new List <Parameter> { new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("offset") }, new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("limit") } }; if (_apiSettings.IsFeatureEnabled("ChangeQueries") && !isCompositeContext) { parameterList.Add( new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("MinChangeVersion") }); parameterList.Add( new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("MaxChangeVersion") }); } if (_openApiMetadataPathsFactorySelectorStrategy.HasTotalCount) { parameterList.Add( new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("totalCount") }); } return(parameterList); }
private Operation CreateGetByIdOperation(OpenApiMetadataPathsResource openApiMetadataResource) { var parameters = new[] { // Path parameters need to be inline in the operation, and not referenced. OpenApiMetadataDocumentHelper.CreateIdParameter(), new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("If-None-Match") } }.Concat( openApiMetadataResource.DefaultGetByIdParameters .Select(p => new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference(p) })) .ToList(); if (_apiSettings.IsFeatureEnabled(ApiFeature.ChangeQueries.GetConfigKeyName())) { parameters.Add(new Parameter { name = "Snapshot-Identifier", @in = "header", description = "Indicates the Snapshot-Identifier that should be used.", type = "string", required = false }); } return(new Operation { tags = new List <string> { OpenApiMetadataDocumentHelper.GetResourcePluralName(openApiMetadataResource.Resource) .ToCamelCase() }, summary = "Retrieves a specific resource using the resource's identifier (using the \"Get By Id\" pattern).", description = "This GET operation retrieves a resource by the specified resource identifier.", operationId = $"get{openApiMetadataResource.Resource.PluralName}ById", deprecated = openApiMetadataResource.IsDeprecated, produces = new[] { _contentTypeStrategy.GetOperationContentType(openApiMetadataResource, ContentTypeUsage.Readable) }, parameters = parameters, responses = CreateReadResponses(openApiMetadataResource, false) }); }
private IList <Parameter> CreateGetByExampleParameters(OpenApiMetadataPathsResource openApiMetadataResource, bool isCompositeContext) { var parameterList = CreateQueryParameters(isCompositeContext) .Concat( openApiMetadataResource.DefaultGetByExampleParameters.Select( p => new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference(p) })) .ToList(); IEnumerableExtensions.ForEach( openApiMetadataResource.RequestProperties, x => { parameterList.Add( new Parameter { name = StringExtensions.ToCamelCase(x.PropertyName), @in = openApiMetadataResource.IsPathParameter(x) ? "path" : "query", description = OpenApiMetadataDocumentHelper.PropertyDescription(x), type = OpenApiMetadataDocumentHelper.PropertyType(x), format = x.PropertyType.ToOpenApiFormat(), required = openApiMetadataResource.IsPathParameter(x), isIdentity = OpenApiMetadataDocumentHelper.GetIsIdentity(x), maxLength = OpenApiMetadataDocumentHelper.GetMaxLength(x), isDeprecated = OpenApiMetadataDocumentHelper.GetIsDeprecated(x), deprecatedReasons = OpenApiMetadataDocumentHelper.GetDeprecatedReasons(x) }); }); if (_apiSettings.IsFeatureEnabled(ApiFeature.ChangeQueries.GetConfigKeyName())) { parameterList.Add(new Parameter { name = "Snapshot-Identifier", @in = "header", description = "Indicates the Snapshot-Identifier that should be used.", type = "string", required = false }); } return(parameterList); }
private Operation CreateDeletesOperation(OpenApiMetadataPathsResource openApiMetadataResource) { return(new Operation { tags = new List <string> { OpenApiMetadataDocumentHelper.GetResourcePluralName(openApiMetadataResource.Resource) .ToCamelCase() }, summary = "Retrieves deleted resources based on change version.", description = "The DELETES operation is used to retrieve deleted resources.", operationId = $"deletes{openApiMetadataResource.Resource.PluralName}", deprecated = openApiMetadataResource.IsDeprecated, consumes = new[] { _contentTypeStrategy.GetOperationContentType( openApiMetadataResource, ContentTypeUsage.Writable) }, parameters = new List <Parameter> { new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("offset") }, new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("limit") }, new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("MinChangeVersion") }, new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("MaxChangeVersion") } }, responses = OpenApiMetadataDocumentHelper.GetReadOperationResponses( _pathsFactoryNamingStrategy.GetResourceName(openApiMetadataResource, ContentTypeUsage.Readable), true, true) }); }
private Operation CreateGetByIdOperation(OpenApiMetadataPathsResource openApiMetadataResource) { return(new Operation { tags = new List <string> { OpenApiMetadataDocumentHelper.GetResourcePluralName(openApiMetadataResource.Resource) .ToCamelCase() }, summary = "Retrieves a specific resource using the resource's identifier (using the \"Get By Id\" pattern).", description = "This GET operation retrieves a resource by the specified resource identifier.", operationId = $"get{openApiMetadataResource.Resource.PluralName}ById", deprecated = openApiMetadataResource.IsDeprecated, produces = new[] { _contentTypeStrategy.GetOperationContentType(openApiMetadataResource, ContentTypeUsage.Readable) }, parameters = new[] { // Path parameters need to be inline in the operation, and not referenced. OpenApiMetadataDocumentHelper.CreateIdParameter(), new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("If-None-Match") } }.Concat( openApiMetadataResource.DefaultGetByIdParameters .Select(p => new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference(p) })) .ToList(), responses = OpenApiMetadataDocumentHelper.GetReadOperationResponses( _pathsFactoryNamingStrategy.GetResourceName(openApiMetadataResource, ContentTypeUsage.Readable), false) }); }
// NOTE: This adds the deletes get request for change queries. private Operation CreateDeletesOperation(OpenApiMetadataPathsResource openApiMetadataResource) { var responses = OpenApiMetadataDocumentHelper.GetReadOperationResponses( _pathsFactoryNamingStrategy.GetResourceName(openApiMetadataResource, ContentTypeUsage.Readable), true, true); var parameters = new List <Parameter> { new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("offset") }, new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("limit") }, new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("MinChangeVersion") }, new Parameter { @ref = OpenApiMetadataDocumentHelper.GetParameterReference("MaxChangeVersion") } }; if (_apiSettings.IsFeatureEnabled(ApiFeature.ChangeQueries.GetConfigKeyName())) { responses.Add( "410", new Response { description = "Gone. An attempt to connect to the database for the snapshot specified by the Snapshot-Identifier header was unsuccessful (indicating the snapshot may have been removed)." }); parameters.Add(new Parameter { name = "Snapshot-Identifier", @in = "header", description = "Indicates the Snapshot-Identifier that should be used.", type = "string", required = false }); } return(new Operation { tags = new List <string> { OpenApiMetadataDocumentHelper.GetResourcePluralName(openApiMetadataResource.Resource) .ToCamelCase() }, summary = "Retrieves deleted resources based on change version.", description = "The DELETES operation is used to retrieve deleted resources.", operationId = $"deletes{openApiMetadataResource.Resource.PluralName}", deprecated = openApiMetadataResource.IsDeprecated, consumes = new[] { _contentTypeStrategy.GetOperationContentType( openApiMetadataResource, ContentTypeUsage.Writable) }, parameters = parameters, responses = responses }); }