/** @file
  This header file defines Redfish service and Redfish data structures that
  are used to communicate with Redfish Ex Protocol.

  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
  (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
  Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

    SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#pragma once

#include <Uefi.h>
#include <Protocol/Http.h>

typedef  VOID  *REDFISH_SERVICE;
typedef  VOID  *REDFISH_PAYLOAD;

///
/// REDFISH_REQUEST definition.
///
typedef struct {
  UINTN              HeaderCount;
  EFI_HTTP_HEADER    *Headers;
  CHAR8              *Content;
  CHAR8              *ContentType;
  UINTN              ContentLength;
} REDFISH_REQUEST;

///
/// REDFISH_REQUEST definition.
///
typedef struct {
  EFI_HTTP_STATUS_CODE    *StatusCode;
  UINTN                   HeaderCount;
  EFI_HTTP_HEADER         *Headers;
  REDFISH_PAYLOAD         Payload;
} REDFISH_RESPONSE;
