documentOperationResponses method Null safety

  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,
) {
  if (operation!.method == "GET") {
    return {
      "200": APIResponse.schema(
        "Serves a login form.",
        APISchemaObject.string(),
        contentTypes: ["text/html"],
      )
    };
  } else if (operation.method == "POST") {
    return {
      "${HttpStatus.movedTemporarily}": APIResponse(
        "If successful, in the case of a 'response type' of 'code', the query "
        "parameter of the redirect URI named 'code' contains authorization code. "
        "Otherwise, the query parameter 'error' is present and contains a error string. "
        "In the case of a 'response type' of 'token', the redirect URI's fragment "
        "contains an access token. Otherwise, the fragment contains an error code.",
        headers: {
          "Location": APIHeader()
            ..schema = APISchemaObject.string(format: "uri")
        },
      ),
      "${HttpStatus.badRequest}": APIResponse.schema(
        "If 'client_id' is invalid, the redirect URI cannot be verified and this response is sent.",
        APISchemaObject.object({"error": APISchemaObject.string()}),
        contentTypes: ["application/json"],
      )
    };
  }

  throw StateError("AuthRedirectController documentation failed.");
}