// Copyright 2019 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // syntax = "proto3"; package google.cloud.talent.v4beta1; import "google/api/annotations.proto"; import "google/api/field_behavior.proto"; import "google/cloud/talent/v4beta1/common.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; import "google/type/date.proto"; option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent"; option java_multiple_files = true; option java_outer_classname = "ApplicationResourceProto"; option java_package = "com.google.cloud.talent.v4beta1"; option objc_class_prefix = "CTS"; // Resource that represents a job application record of a candidate. message Application { // Enum that represents the application status. enum ApplicationState { // Default value. APPLICATION_STATE_UNSPECIFIED = 0; // The current stage is in progress or pending, for example, interviews in // progress. IN_PROGRESS = 1; // The current stage was terminated by a candidate decision. CANDIDATE_WITHDREW = 2; // The current stage was terminated by an employer or agency decision. EMPLOYER_WITHDREW = 3; // The current stage is successfully completed, but the next stage (if // applicable) has not begun. COMPLETED = 4; // The current stage was closed without an exception, or terminated for // reasons unrealated to the candidate. CLOSED = 5; } // The stage of the application. enum ApplicationStage { // Default value. APPLICATION_STAGE_UNSPECIFIED = 0; // Candidate has applied or a recruiter put candidate into consideration but // candidate is not yet screened / no decision has been made to move or not // move the candidate to the next stage. NEW = 1; // A recruiter decided to screen the candidate for this role. SCREEN = 2; // Candidate is being / was sent to the customer / hiring manager for // detailed review. HIRING_MANAGER_REVIEW = 3; // Candidate was approved by the client / hiring manager and is being / was // interviewed for the role. INTERVIEW = 4; // Candidate will be / has been given an offer of employment. OFFER_EXTENDED = 5; // Candidate has accepted their offer of employment. OFFER_ACCEPTED = 6; // Candidate has begun (or completed) their employment or assignment with // the employer. STARTED = 7; } // Required during application update. // // Resource name assigned to an application by the API. // // The format is // "projects/{project_id}/tenants/{tenant_id}/profiles/{profile_id}/applications/{application_id}". // For example, "projects/foo/tenants/bar/profiles/baz/applications/qux". string name = 1; // Required. Client side application identifier, used to uniquely identify the // application. // // The maximum number of allowed characters is 255. string external_id = 31 [(google.api.field_behavior) = REQUIRED]; // Output only. Resource name of the candidate of this application. // // The format is // "projects/{project_id}/tenants/{tenant_id}/profiles/{profile_id}". // For example, "projects/foo/tenants/bar/profiles/baz". string profile = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // One of either a job or a company is required. // // Resource name of the job which the candidate applied for. // // The format is // "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For example, // "projects/foo/tenants/bar/jobs/baz". string job = 4; // One of either a job or a company is required. // // Resource name of the company which the candidate applied for. // // The format is // "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}". // For example, "projects/foo/tenants/bar/companies/baz". string company = 5; // The application date. google.type.Date application_date = 7; // Required. What is the most recent stage of the application (that is, new, // screen, send cv, hired, finished work)? This field is intentionally not // comprehensive of every possible status, but instead, represents statuses // that would be used to indicate to the ML models good / bad matches. ApplicationStage stage = 11 [(google.api.field_behavior) = REQUIRED]; // The application state. ApplicationState state = 13; // All interviews (screen, onsite, and so on) conducted as part of this // application (includes details such as user conducting the interview, // timestamp, feedback, and so on). repeated Interview interviews = 16; // If the candidate is referred by a employee. google.protobuf.BoolValue referral = 18; // Required. Reflects the time that the application was created. google.protobuf.Timestamp create_time = 19 [(google.api.field_behavior) = REQUIRED]; // The last update timestamp. google.protobuf.Timestamp update_time = 20; // Free text reason behind the recruitement outcome (for example, reason for // withdraw / reject, reason for an unsuccessful finish, and so on). // // Number of characters allowed is 100. string outcome_notes = 21; // Outcome positiveness shows how positive the outcome is. Outcome outcome = 22; // Output only. Indicates whether this job application is a match to // application related filters. This value is only applicable in profile // search response. google.protobuf.BoolValue is_match = 28 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Job title snippet shows how the job title is related to a // search query. It's empty if the job title isn't related to the search // query. string job_title_snippet = 29 [(google.api.field_behavior) = OUTPUT_ONLY]; }