// Copyright 2025, ANSYS Inc. Unauthorized use, distribution or duplication is prohibited.
syntax = "proto3";
package ansys.api.discovery.v1.design.constructs.datumpoint;

import "ansys/api/discovery/v1/commonmessages.proto";
import "ansys/api/discovery/v1/design/designmessages.proto";

option csharp_namespace = "Ansys.Api.Discovery.V1.Design.Constructs.DatumPoint";

service DatumPoint
{
  rpc Create(DatumPointCreationRequest) returns (DatumPointCreationResponse);

  rpc Delete(MultipleEntitiesRequest) returns (DeleteResponse);

  rpc Get(EntityRequest) returns(GetResponse);

  rpc GetAll(ParentEntityRequest) returns(GetAllResponse);

  rpc GetIsDeleted(MultipleEntitiesRequest) returns(GetIsDeletedResponse);

  rpc GetIsPinned(EntityRequest) returns(GetBooleanResponse);
  rpc GetPointPosition(EntityRequest) returns (GetPointResponse);
  rpc GetIsSuppressed(EntityRequest) returns (GetBooleanResponse);

  rpc SetPositionX(SetQuantityRequest) returns (TrackedSetResponse);
  rpc SetPositionY(SetQuantityRequest) returns (TrackedSetResponse);
  rpc SetPositionZ(SetQuantityRequest) returns (TrackedSetResponse);

  rpc SetIsSuppressed(SetBooleanRequest) returns (TrackedSetResponse);

}

message DatumPointCreationRequestData {
  repeated DatumPointEntity points = 1;
  EntityIdentifier parent_id = 2;
}

message DatumPointCreationRequest {
  repeated DatumPointCreationRequestData request_data=1;
}

message DatumPointCreationResponse {
  repeated EntityIdentifier ids =1;
  CreationResponse creation_response = 2;
}

message GetPointResponse {
  Point point = 1;
  GetDataResponse get_data_response = 2;
}

message GetResponse{
  DatumPointEntity point = 1;
  GetDataResponse get_data_response = 2;
}

message GetAllResponse{
  repeated DatumPointEntity points = 1;
  GetDataResponse get_data_response = 2;
}

