<?php

declare(strict_types=1);

namespace Drupal\api_monitor_client\Entity;

use Drupal\Core\Entity\ContentEntityInterface;
use Drupal\Core\Entity\EntityPublishedInterface;

/**
 * Provides an interface for defining Api Monitor Manual entities.
 */
interface ApiMonitorManualInterface extends ContentEntityInterface, EntityPublishedInterface {

  /**
   * Gets the API ID (machine name).
   *
   * @return string
   *   The API ID.
   */
  public function getApiId(): string;

  /**
   * Gets the provider entity.
   *
   * @return \Drupal\api_monitor_client\Entity\ApiMonitorProviderInterface|null
   *   The provider entity or NULL.
   */
  public function getProvider(): ?ApiMonitorProviderInterface;

  /**
   * Gets the endpoint path.
   *
   * @return string
   *   The endpoint path.
   */
  public function getEndpointPath(): string;

  /**
   * Gets the HTTP method.
   *
   * @return string
   *   The HTTP method (GET, POST, etc.).
   */
  public function getMethod(): string;

  /**
   * Gets custom headers.
   *
   * @return array
   *   Associative array of headers.
   */
  public function getHeaders(): array;

  /**
   * Gets the request body.
   *
   * @return string|null
   *   The request body or NULL.
   */
  public function getBody(): ?string;

  /**
   * Gets the auth type.
   *
   * @return string
   *   The authentication type.
   */
  public function getAuthType(): string;

  /**
   * Gets the auth credentials.
   *
   * @return string|null
   *   The authentication credentials or NULL.
   */
  public function getAuthCredentials(): ?string;

  /**
   * Gets the auth header name for API Key authentication.
   *
   * @return string|null
   *   The header name (e.g., X-API-Key) or NULL.
   */
  public function getAuthHeaderName(): ?string;

  /**
   * Gets the referenced probe plugin ID.
   *
   * @return string|null
   *   The probe plugin ID or NULL.
   */
  public function getProbePlugin(): ?string;

}
