syntax = "proto3"; package usage.v1beta; import "common/healthcheck/v1beta/healthcheck.proto"; import "common/task/v1alpha/task.proto"; import "google/api/field_behavior.proto"; // Google API import "google/api/resource.proto"; // Protobuf standard import "google/protobuf/timestamp.proto"; import "mgmt/v1beta/metric.proto"; import "mgmt/v1beta/mgmt.proto"; // LivenessRequest represents a request to check a service liveness status message LivenessRequest { // HealthCheckRequest message optional common.healthcheck.v1beta.HealthCheckRequest health_check_request = 1 [(google.api.field_behavior) = OPTIONAL]; } // LivenessResponse represents a response for a service liveness status message LivenessResponse { // HealthCheckResponse message common.healthcheck.v1beta.HealthCheckResponse health_check_response = 1; } // ReadinessRequest represents a request to check a service readiness status message ReadinessRequest { // HealthCheckRequest message optional common.healthcheck.v1beta.HealthCheckRequest health_check_request = 1 [(google.api.field_behavior) = OPTIONAL]; } // ReadinessResponse represents a response for a service readiness status message ReadinessResponse { // HealthCheckResponse message common.healthcheck.v1beta.HealthCheckResponse health_check_response = 1; } // Session represents a unique session whenever a new instance of Instill Core // service gets started. The usage server returns a token that should be used as // part of the challenge when sending a report with data collected from this // session message Session { option (google.api.resource) = {pattern: "sessions/{session}"}; // Service enumerates the services to collect data from enum Service { // Service: UNSPECIFIED SERVICE_UNSPECIFIED = 0; // Service: MGMT SERVICE_MGMT = 1; // Service: CONNECTOR (Deprecated) SERVICE_CONNECTOR = 2; // Service: MODEL SERVICE_MODEL = 3; // Service: PIPELINE SERVICE_PIPELINE = 4; // Service: ARTIFACT SERVICE_ARTIFACT = 5; // Service: AGENT SERVICE_AGENT = 6; } // Resource name in the format of 'sessions/uid' string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Resource UUID string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // name of the service to collect data from Service service = 3 [(google.api.field_behavior) = REQUIRED]; // Session edition, allowed values include: 'local-ce' and 'local-ce:dev' string edition = 4 [(google.api.field_behavior) = REQUIRED]; // Version of the service string version = 5 [(google.api.field_behavior) = REQUIRED]; // Architecture of the system string arch = 6 [(google.api.field_behavior) = REQUIRED]; // Operating system string os = 7 [(google.api.field_behavior) = REQUIRED]; // Session service uptime int64 uptime = 8 [(google.api.field_behavior) = REQUIRED]; // Report time google.protobuf.Timestamp report_time = 9 [(google.api.field_behavior) = REQUIRED]; // Token to send report. The token is generated by the server and sent to // the client. Client needs to use the token to send report to the server. string token = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; // Session creation time google.protobuf.Timestamp create_time = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; // Session update time google.protobuf.Timestamp update_time = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; // Owner UUID of the instance, can also be considered as instance UUID string owner_uid = 13 [(google.api.field_behavior) = REQUIRED]; } // Management service usage data message MgmtUsageData { // Repeated user usage data repeated mgmt.v1beta.AuthenticatedUser user_usages = 1; // Repeated org usage data repeated mgmt.v1beta.Organization org_usages = 2; } // Connector service usage data (Deprecated) message ConnectorUsageData { // Per user usage data in the connector service message UserUsageData { // Per execute usage metadata message ConnectorExecuteData { // UID for the executed connector string connector_uid = 1 [(google.api.field_behavior) = REQUIRED]; // UID for the execute log string execute_uid = 2 [(google.api.field_behavior) = REQUIRED]; // Timestamp for the execution google.protobuf.Timestamp execute_time = 3 [(google.api.field_behavior) = REQUIRED]; // Definition UID of the connector string connector_definition_uid = 4 [(google.api.field_behavior) = REQUIRED]; // Final status of the execution mgmt.v1beta.Status status = 5 [(google.api.field_behavior) = REQUIRED]; // UUID of the user who execute the connector string user_uid = 8 [(google.api.field_behavior) = REQUIRED]; // Type of the user who execute the connector mgmt.v1beta.OwnerType user_type = 9 [(google.api.field_behavior) = REQUIRED]; } // Owner UUID string owner_uid = 1 [(google.api.field_behavior) = REQUIRED]; // Execution data for each user repeated ConnectorExecuteData connector_execute_data = 2 [(google.api.field_behavior) = REQUIRED]; // Owner type mgmt.v1beta.OwnerType owner_type = 3 [(google.api.field_behavior) = REQUIRED]; } // Usage data of all users in the connector service repeated UserUsageData usages = 1; } // Model service usage data message ModelUsageData { // Per user usage data in the model service message UserUsageData { // Per trigger usage metadata message ModelTriggerData { // UID for the triggered model string model_uid = 1 [(google.api.field_behavior) = REQUIRED]; // UID for the trigger log string trigger_uid = 2 [(google.api.field_behavior) = REQUIRED]; // Timestamp for the trigger google.protobuf.Timestamp trigger_time = 3 [(google.api.field_behavior) = REQUIRED]; // Definition UID of the model string model_definition_uid = 4 [(google.api.field_behavior) = REQUIRED]; // Task of the model common.task.v1alpha.Task model_task = 5 [(google.api.field_behavior) = REQUIRED]; // Final status of the execution mgmt.v1beta.Status status = 6 [(google.api.field_behavior) = REQUIRED]; // UUID of the user who trigger the model string user_uid = 7 [(google.api.field_behavior) = REQUIRED]; // Type of the user who trigger the model mgmt.v1beta.OwnerType user_type = 8 [(google.api.field_behavior) = REQUIRED]; } // Owner UUID string owner_uid = 1 [(google.api.field_behavior) = REQUIRED]; // Trigger data for each user repeated ModelTriggerData model_trigger_data = 2 [(google.api.field_behavior) = REQUIRED]; // Owner type mgmt.v1beta.OwnerType owner_type = 3 [(google.api.field_behavior) = REQUIRED]; } // Usage data of all users in the model service repeated UserUsageData usages = 1; } // Pipeline service usage data message PipelineUsageData { // Per user usage data in the pipeline service message UserUsageData { // Per trigger usage metadata message PipelineTriggerData { // UID for the triggered pipeline string pipeline_uid = 1 [(google.api.field_behavior) = REQUIRED]; // UID for the trigger log string trigger_uid = 2 [(google.api.field_behavior) = REQUIRED]; // Timestamp for the trigger google.protobuf.Timestamp trigger_time = 3 [(google.api.field_behavior) = REQUIRED]; // Trigger mode mgmt.v1beta.Mode trigger_mode = 4 [(google.api.field_behavior) = REQUIRED]; // Final status of the execution mgmt.v1beta.Status status = 5 [(google.api.field_behavior) = REQUIRED]; // Version for the triggered release pipeline, empty string if not release string pipeline_release_id = 6 [(google.api.field_behavior) = REQUIRED]; // UID for the triggered release pipeline, empty string if not release string pipeline_release_uid = 7 [(google.api.field_behavior) = REQUIRED]; // UUID of the user who trigger the pipeline string user_uid = 8 [(google.api.field_behavior) = REQUIRED]; // Type of the user who trigger the pipeline mgmt.v1beta.OwnerType user_type = 9 [(google.api.field_behavior) = REQUIRED]; // ID for the triggered pipeline string pipeline_id = 10 [(google.api.field_behavior) = REQUIRED]; } // Owner UUID string owner_uid = 1 [(google.api.field_behavior) = REQUIRED]; // Trigger data for each user repeated PipelineTriggerData pipeline_trigger_data = 2 [(google.api.field_behavior) = REQUIRED]; // Owner type mgmt.v1beta.OwnerType owner_type = 3 [(google.api.field_behavior) = REQUIRED]; } // Usage data of all users in the pipeline service repeated UserUsageData usages = 1; } // Artifact service usage data message ArtifactUsageData { // Per user usage data in the artifact service message UserUsageData { // Owner UUID string owner_uid = 1 [(google.api.field_behavior) = REQUIRED]; // Owner type mgmt.v1beta.OwnerType owner_type = 2 [(google.api.field_behavior) = REQUIRED]; } // Usage data of all users in the artifact service repeated UserUsageData usages = 1; } // Agent service usage data message AgentUsageData { // Per user usage data in the agent service message UserUsageData { // Owner UUID string owner_uid = 1 [(google.api.field_behavior) = REQUIRED]; // Owner type mgmt.v1beta.OwnerType owner_type = 2 [(google.api.field_behavior) = REQUIRED]; } // Usage data of all users in the agent service repeated UserUsageData usages = 1; } // SessionReport represents a report to be sent to the server that includes the // usage data of a session message SessionReport { // Session uid string session_uid = 1 [(google.api.field_behavior) = REQUIRED]; // Session token string token = 2 [(google.api.field_behavior) = REQUIRED]; // Proof-of-work See https://en.wikipedia.org/wiki/Proof_of_work string pow = 3 [(google.api.field_behavior) = REQUIRED]; // Session Session session = 4 [(google.api.field_behavior) = REQUIRED]; // Service usage data oneof usage_data { // Management service usage data MgmtUsageData mgmt_usage_data = 5; // Connector service usage data (Deprecated) ConnectorUsageData connector_usage_data = 6; // Model service usage data ModelUsageData model_usage_data = 7; // Pipeline service usage data PipelineUsageData pipeline_usage_data = 8; // Artifact service usage data ArtifactUsageData artifact_usage_data = 9; // Agent service usage data AgentUsageData agent_usage_data = 10; } } // CreateSessionRequest represents a request to create a new session message CreateSessionRequest { // A session resource to create Session session = 1 [(google.api.field_behavior) = REQUIRED]; } // CreateSessionResponse represents a response for a session response message CreateSessionResponse { // A session resource Session session = 1; } // SendReportRequest represents a request to send a usage report message SendSessionReportRequest { // A report resource to create SessionReport report = 1 [(google.api.field_behavior) = REQUIRED]; } // SendReportResponse represents an empty response message SendSessionReportResponse {}