documentOperationResponses method

  1. @override
Map<String, APIResponse> documentOperationResponses(
  1. APIDocumentContext context,
  2. Operation operation
)
override

Returns a map of possible responses for operation.

To provide documentation for an operation, you must override this method and return a map of possible responses. The key is a String representation of a status code (e.g., "200") and the value is an APIResponse object.

Implementation

@override
Map<String, APIResponse> documentOperationResponses(
    APIDocumentContext context, Operation operation) {
  switch (operation.method) {
    case "GET":
      if (operation.pathVariables.isEmpty) {
        return {
          "200": APIResponse.schema(
              "Returns a list of objects.",
              APISchemaObject.array(
                  ofSchema: context.schema.getObjectWithType(InstanceType))),
          "400": APIResponse.schema("Invalid request.",
              APISchemaObject.object({"error": APISchemaObject.string()}))
        };
      }

      return {
        "200": APIResponse.schema("Returns a single object.",
            context.schema.getObjectWithType(InstanceType)),
        "404": APIResponse("No object found.")
      };
    case "PUT":
      return {
        "200": APIResponse.schema("Returns updated object.",
            context.schema.getObjectWithType(InstanceType)),
        "404": APIResponse("No object found."),
        "400": APIResponse.schema("Invalid request.",
            APISchemaObject.object({"error": APISchemaObject.string()})),
        "409": APIResponse.schema("Object already exists",
            APISchemaObject.object({"error": APISchemaObject.string()})),
      };
    case "POST":
      return {
        "200": APIResponse.schema("Returns created object.",
            context.schema.getObjectWithType(InstanceType)),
        "400": APIResponse.schema("Invalid request.",
            APISchemaObject.object({"error": APISchemaObject.string()})),
        "409": APIResponse.schema("Object already exists",
            APISchemaObject.object({"error": APISchemaObject.string()}))
      };
    case "DELETE":
      return {
        "200": APIResponse("Object successfully deleted."),
        "404": APIResponse("No object found."),
      };
  }

  return {};
}