syntax = "proto3";

package va;
option go_package = "github.com/letsencrypt/boulder/va/proto";

import "core/proto/core.proto";

service VA {
  rpc PerformValidation(PerformValidationRequest) returns (ValidationResult) {}
}

service CAA {
  rpc IsCAAValid(IsCAAValidRequest) returns (IsCAAValidResponse) {}
}

message IsCAAValidRequest {
  // NOTE: Domain may be a name with a wildcard prefix (e.g. `*.example.com`)
  string domain = 1;
  string validationMethod = 2;
  int64 accountURIID = 3;
}

// If CAA is valid for the requested domain, the problem will be empty
message IsCAAValidResponse {
  core.ProblemDetails problem = 1;
}

message PerformValidationRequest {
  string domain = 1;
  core.Challenge challenge = 2;
  AuthzMeta authz = 3;
  string expectedKeyAuthorization = 4;
}

message AuthzMeta {
  string id = 1;
  int64 regID = 2;
}

message ValidationResult {
  repeated core.ValidationRecord records = 1;
  core.ProblemDetails problems = 2;
}
