in src/Azure.Deployments.Extensibility.Core/Models.cs [34:103]
public record ExtensibleResourceMetadata(
IEnumerable<JsonPath>? ReadOnlyProperties,
IEnumerable<JsonPath>? ImmutableProperties,
IEnumerable<JsonPath>? DynamicProperties);
/// <summary>
/// Provides error details of a failed extensibility operation.
/// </summary>
/// <param name="Code">The error code.</param>
/// <param name="Target">
/// The JSON Pointer to the property causing the error. Must start with "/import" or "/resource" depending on
/// which top level request property the error is on. When the error response is received by the deployments
/// extensibility host, the JSON Pointer will be augumented with the import alias or resource symbolic name
/// to make it easier for users to map the error to a location in the deployment template. For example,
/// "/resource/properties/foo" will be converted to "resources/myResource/properties/foo".
/// </param>
/// <param name="Message">The error message.</param>
/// <param name="SanitizedMessage">Optional. The sanitized error message for logging.</param>
public record ExtensibilityError(string Code, JsonPointer Target, string Message, string? SanitizedMessage = null);
/// <summary>
/// Provides information about an extensibility operation.
/// </summary>
/// <typeparam name="TConfig">The extensible config type parameter.</typeparam>
/// <typeparam name="TProperties">The extensible resource properties type parameter.</typeparam>
/// <param name="Import">The extensible import.</param>
/// <param name="Resource">The extensible resource.</param>
public record ExtensibilityOperationRequest<TConfig, TProperties>(ExtensibleImport<TConfig> Import, ExtensibleResource<TProperties> Resource);
/// <summary>
/// Provides information about an extensibility operation request.
/// </summary>
/// <param name="Import">The extensible import.</param>
/// <param name="Resource">The extensible resource.</param>
public record ExtensibilityOperationRequest(ExtensibleImport<JsonElement> Import, ExtensibleResource<JsonElement> Resource)
: ExtensibilityOperationRequest<JsonElement, JsonElement>(Import, Resource);
public abstract record ExtensibilityOperationResponse();
/// <summary>
/// Provides information about a successful extensibility operation.
/// </summary>
/// <param name="Resource">The updated extensible resource after the operation is complete.</param>
/// <param name="ResourceMetadata">The extensible resource metadata. The metadata is needed by ARM template What-If to produce clean results. It should only be set for the "previewSave" operation.</param>
public record ExtensibilityOperationSuccessResponse(ExtensibleResource<JsonElement> Resource, ExtensibleResourceMetadata? ResourceMetadata = null)
: ExtensibilityOperationResponse();
/// <summary>
/// Provides information about a failed extensibility operation.
/// </summary>
public record ExtensibilityOperationErrorResponse : ExtensibilityOperationResponse
{
[JsonConstructor]
public ExtensibilityOperationErrorResponse(IEnumerable<ExtensibilityError> errors)
{
this.Errors = errors;
}
/// <summary>
/// The extensibility operation error response.
/// </summary>
/// <param name="error">The error to return.</param>
/// <param name="additionalErrors">Additional errors to return.</param>
public ExtensibilityOperationErrorResponse(ExtensibilityError error, params ExtensibilityError[] additionalErrors)
: this((new[] { error }).Concat(additionalErrors))
{
}
public IEnumerable<ExtensibilityError> Errors { get; }
}