Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / google-proto-files / google / cloud / talent / v4beta1 / job.proto
1 // Copyright 2019 Google LLC.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 //
15
16 syntax = "proto3";
17
18 package google.cloud.talent.v4beta1;
19
20 import "google/api/annotations.proto";
21 import "google/cloud/talent/v4beta1/common.proto";
22 import "google/protobuf/timestamp.proto";
23
24 option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
25 option java_multiple_files = true;
26 option java_outer_classname = "JobResourceProto";
27 option java_package = "com.google.cloud.talent.v4beta1";
28 option objc_class_prefix = "CTS";
29
30 // A Job resource represents a job posting (also referred to as a "job listing"
31 // or "job requisition"). A job belongs to a
32 // [Company][google.cloud.talent.v4beta1.Company], which is the hiring entity
33 // responsible for the job.
34 message Job {
35   // Application related details of a job posting.
36   message ApplicationInfo {
37     // Optional but at least one of
38     // [uris][google.cloud.talent.v4beta1.Job.ApplicationInfo.uris],
39     // [emails][google.cloud.talent.v4beta1.Job.ApplicationInfo.emails] or
40     // [instruction][google.cloud.talent.v4beta1.Job.ApplicationInfo.instruction]
41     // must be specified.
42     //
43     // Use this field to specify email address(es) to which resumes or
44     // applications can be sent.
45     //
46     // The maximum number of allowed characters for each entry is 255.
47     repeated string emails = 1;
48
49     // Optional but at least one of
50     // [uris][google.cloud.talent.v4beta1.Job.ApplicationInfo.uris],
51     // [emails][google.cloud.talent.v4beta1.Job.ApplicationInfo.emails] or
52     // [instruction][google.cloud.talent.v4beta1.Job.ApplicationInfo.instruction]
53     // must be specified.
54     //
55     // Use this field to provide instructions, such as "Mail your application
56     // to ...", that a candidate can follow to apply for the job.
57     //
58     // This field accepts and sanitizes HTML input, and also accepts
59     // bold, italic, ordered list, and unordered list markup tags.
60     //
61     // The maximum number of allowed characters is 3,000.
62     string instruction = 2;
63
64     // Optional but at least one of
65     // [uris][google.cloud.talent.v4beta1.Job.ApplicationInfo.uris],
66     // [emails][google.cloud.talent.v4beta1.Job.ApplicationInfo.emails] or
67     // [instruction][google.cloud.talent.v4beta1.Job.ApplicationInfo.instruction]
68     // must be specified.
69     //
70     // Use this URI field to direct an applicant to a website, for example to
71     // link to an online application form.
72     //
73     // The maximum number of allowed characters for each entry is 2,000.
74     repeated string uris = 3;
75   }
76
77   // Output only.
78   //
79   // Derived details about the job posting.
80   message DerivedInfo {
81     // Structured locations of the job, resolved from
82     // [Job.addresses][google.cloud.talent.v4beta1.Job.addresses].
83     //
84     // [locations][google.cloud.talent.v4beta1.Job.DerivedInfo.locations] are
85     // exactly matched to
86     // [Job.addresses][google.cloud.talent.v4beta1.Job.addresses] in the same
87     // order.
88     repeated Location locations = 1;
89
90     // Job categories derived from
91     // [Job.title][google.cloud.talent.v4beta1.Job.title] and
92     // [Job.description][google.cloud.talent.v4beta1.Job.description].
93     repeated JobCategory job_categories = 3;
94   }
95
96   // Input only.
97   //
98   // Options for job processing.
99   message ProcessingOptions {
100     // Optional.
101     //
102     // If set to `true`, the service does not attempt to resolve a
103     // more precise address for the job.
104     bool disable_street_address_resolution = 1;
105
106     // Optional.
107     //
108     // Option for job HTML content sanitization. Applied fields are:
109     //
110     // * description
111     // * applicationInfo.instruction
112     // * incentives
113     // * qualifications
114     // * responsibilities
115     //
116     // HTML tags in these fields may be stripped if sanitiazation isn't
117     // disabled.
118     //
119     // Defaults to
120     // [HtmlSanitization.SIMPLE_FORMATTING_ONLY][google.cloud.talent.v4beta1.HtmlSanitization.SIMPLE_FORMATTING_ONLY].
121     HtmlSanitization html_sanitization = 2;
122   }
123
124   // Required during job update.
125   //
126   // The resource name for the job. This is generated by the service when a
127   // job is created.
128   //
129   // The format is "projects/{project_id}/jobs/{job_id}",
130   // for example, "projects/api-test-project/jobs/1234".
131   //
132   // Use of this field in job queries and API calls is preferred over the use of
133   // [requisition_id][google.cloud.talent.v4beta1.Job.requisition_id] since this
134   // value is unique.
135   string name = 1;
136
137   // Required.
138   //
139   // The resource name of the company listing the job, such as
140   // "projects/api-test-project/companies/foo".
141   string company_name = 2;
142
143   // Required.
144   //
145   // The requisition ID, also referred to as the posting ID, is assigned by the
146   // client to identify a job. This field is intended to be used by clients
147   // for client identification and tracking of postings. A job isn't allowed
148   // to be created if there is another job with the same
149   // [company][google.cloud.talent.v4beta1.Job.name],
150   // [language_code][google.cloud.talent.v4beta1.Job.language_code] and
151   // [requisition_id][google.cloud.talent.v4beta1.Job.requisition_id].
152   //
153   // The maximum number of allowed characters is 255.
154   string requisition_id = 3;
155
156   // Required.
157   //
158   // The title of the job, such as "Software Engineer"
159   //
160   // The maximum number of allowed characters is 500.
161   string title = 4;
162
163   // Required.
164   //
165   // The description of the job, which typically includes a multi-paragraph
166   // description of the company and related information. Separate fields are
167   // provided on the job object for
168   // [responsibilities][google.cloud.talent.v4beta1.Job.responsibilities],
169   // [qualifications][google.cloud.talent.v4beta1.Job.qualifications], and other
170   // job characteristics. Use of these separate job fields is recommended.
171   //
172   // This field accepts and sanitizes HTML input, and also accepts
173   // bold, italic, ordered list, and unordered list markup tags.
174   //
175   // The maximum number of allowed characters is 100,000.
176   string description = 5;
177
178   // Optional but strongly recommended for the best service experience.
179   //
180   // Location(s) where the employer is looking to hire for this job posting.
181   //
182   // Specifying the full street address(es) of the hiring location enables
183   // better API results, especially job searches by commute time.
184   //
185   // At most 50 locations are allowed for best search performance. If a job has
186   // more locations, it is suggested to split it into multiple jobs with unique
187   // [requisition_id][google.cloud.talent.v4beta1.Job.requisition_id]s (e.g.
188   // 'ReqA' becomes 'ReqA-1', 'ReqA-2', etc.) as multiple jobs with the same
189   // [company][google.cloud.talent.v4beta1.Job.name][], [language_code][] and
190   // [requisition_id][google.cloud.talent.v4beta1.Job.requisition_id] are not
191   // allowed. If the original
192   // [requisition_id][google.cloud.talent.v4beta1.Job.requisition_id] must be
193   // preserved, a custom field should be used for storage. It is also suggested
194   // to group the locations that close to each other in the same job for better
195   // search experience.
196   //
197   // The maximum number of allowed characters is 500.
198   repeated string addresses = 6;
199
200   // Required. At least one field within
201   // [ApplicationInfo][google.cloud.talent.v4beta1.Job.ApplicationInfo] must be
202   // specified.
203   //
204   // Job application information.
205   ApplicationInfo application_info = 7;
206
207   // Optional.
208   //
209   // The benefits included with the job.
210   repeated JobBenefit job_benefits = 8;
211
212   // Optional.
213   //
214   // Job compensation information.
215   CompensationInfo compensation_info = 9;
216
217   // Optional.
218   //
219   // A map of fields to hold both filterable and non-filterable custom job
220   // attributes that are not covered by the provided structured fields.
221   //
222   // The keys of the map are strings up to 64 bytes and must match the
223   // pattern: [a-zA-Z][a-zA-Z0-9_]*. For example, key0LikeThis or
224   // KEY_1_LIKE_THIS.
225   //
226   // At most 100 filterable and at most 100 unfilterable keys are supported.
227   // For filterable `string_values`, across all keys at most 200 values are
228   // allowed, with each string no more than 255 characters. For unfilterable
229   // `string_values`, the maximum total size of `string_values` across all keys
230   // is 50KB.
231   map<string, CustomAttribute> custom_attributes = 10;
232
233   // Optional.
234   //
235   // The desired education degrees for the job, such as Bachelors, Masters.
236   repeated DegreeType degree_types = 11;
237
238   // Optional.
239   //
240   // The department or functional area within the company with the open
241   // position.
242   //
243   // The maximum number of allowed characters is 255.
244   string department = 12;
245
246   // Optional.
247   //
248   // The employment type(s) of a job, for example,
249   // [full time][google.cloud.talent.v4beta1.EmploymentType.FULL_TIME] or
250   // [part time][google.cloud.talent.v4beta1.EmploymentType.PART_TIME].
251   repeated EmploymentType employment_types = 13;
252
253   // Optional.
254   //
255   // A description of bonus, commission, and other compensation
256   // incentives associated with the job not including salary or pay.
257   //
258   // The maximum number of allowed characters is 10,000.
259   string incentives = 14;
260
261   // Optional.
262   //
263   // The language of the posting. This field is distinct from
264   // any requirements for fluency that are associated with the job.
265   //
266   // Language codes must be in BCP-47 format, such as "en-US" or "sr-Latn".
267   // For more information, see
268   // [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){:
269   // class="external" target="_blank" }.
270   //
271   // If this field is unspecified and
272   // [Job.description][google.cloud.talent.v4beta1.Job.description] is present,
273   // detected language code based on
274   // [Job.description][google.cloud.talent.v4beta1.Job.description] is assigned,
275   // otherwise defaults to 'en_US'.
276   string language_code = 15;
277
278   // Optional.
279   //
280   // The experience level associated with the job, such as "Entry Level".
281   JobLevel job_level = 16;
282
283   // Optional.
284   //
285   // A promotion value of the job, as determined by the client.
286   // The value determines the sort order of the jobs returned when searching for
287   // jobs using the featured jobs search call, with higher promotional values
288   // being returned first and ties being resolved by relevance sort. Only the
289   // jobs with a promotionValue >0 are returned in a FEATURED_JOB_SEARCH.
290   //
291   // Default value is 0, and negative values are treated as 0.
292   int32 promotion_value = 17;
293
294   // Optional.
295   //
296   // A description of the qualifications required to perform the
297   // job. The use of this field is recommended
298   // as an alternative to using the more general
299   // [description][google.cloud.talent.v4beta1.Job.description] field.
300   //
301   // This field accepts and sanitizes HTML input, and also accepts
302   // bold, italic, ordered list, and unordered list markup tags.
303   //
304   // The maximum number of allowed characters is 10,000.
305   string qualifications = 18;
306
307   // Optional.
308   //
309   // A description of job responsibilities. The use of this field is
310   // recommended as an alternative to using the more general
311   // [description][google.cloud.talent.v4beta1.Job.description] field.
312   //
313   // This field accepts and sanitizes HTML input, and also accepts
314   // bold, italic, ordered list, and unordered list markup tags.
315   //
316   // The maximum number of allowed characters is 10,000.
317   string responsibilities = 19;
318
319   // Optional.
320   //
321   // The job [PostingRegion][google.cloud.talent.v4beta1.PostingRegion] (for
322   // example, state, country) throughout which the job is available. If this
323   // field is set, a
324   // [LocationFilter][google.cloud.talent.v4beta1.LocationFilter] in a search
325   // query within the job region finds this job posting if an exact location
326   // match isn't specified. If this field is set to
327   // [PostingRegion.NATION][google.cloud.talent.v4beta1.PostingRegion.NATION] or
328   // [PostingRegion.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.PostingRegion.ADMINISTRATIVE_AREA],
329   // setting job [Job.addresses][google.cloud.talent.v4beta1.Job.addresses] to
330   // the same location level as this field is strongly recommended.
331   PostingRegion posting_region = 20;
332
333   // Optional.
334   //
335   // The visibility of the job.
336   //
337   // Defaults to
338   // [Visibility.ACCOUNT_ONLY][google.cloud.talent.v4beta1.Visibility.ACCOUNT_ONLY]
339   // if not specified.
340   Visibility visibility = 21;
341
342   // Optional.
343   //
344   // The start timestamp of the job in UTC time zone. Typically this field
345   // is used for contracting engagements. Invalid timestamps are ignored.
346   google.protobuf.Timestamp job_start_time = 22;
347
348   // Optional.
349   //
350   // The end timestamp of the job. Typically this field is used for contracting
351   // engagements. Invalid timestamps are ignored.
352   google.protobuf.Timestamp job_end_time = 23;
353
354   // Optional.
355   //
356   // The timestamp this job posting was most recently published. The default
357   // value is the time the request arrives at the server. Invalid timestamps are
358   // ignored.
359   google.protobuf.Timestamp posting_publish_time = 24;
360
361   // Optional but strongly recommended for the best service
362   // experience.
363   //
364   // The expiration timestamp of the job. After this timestamp, the
365   // job is marked as expired, and it no longer appears in search results. The
366   // expired job can't be deleted or listed by the [DeleteJob][] and
367   // [ListJobs][] APIs, but it can be retrieved with the [GetJob][] API or
368   // updated with the [UpdateJob][] API. An expired job can be updated and
369   // opened again by using a future expiration timestamp. Updating an expired
370   // job fails if there is another existing open job with same
371   // [company][google.cloud.talent.v4beta1.Job.name][],
372   // [language_code][google.cloud.talent.v4beta1.Job.language_code] and
373   // [requisition_id][google.cloud.talent.v4beta1.Job.requisition_id].
374   //
375   // The expired jobs are retained in our system for 90 days. However, the
376   // overall expired job count cannot exceed 3 times the maximum of open jobs
377   // count over the past week, otherwise jobs with earlier expire time are
378   // cleaned first. Expired jobs are no longer accessible after they are cleaned
379   // out.
380   //
381   // Invalid timestamps are ignored, and treated as expire time not provided.
382   //
383   // Timestamp before the instant request is made is considered valid, the job
384   // will be treated as expired immediately.
385   //
386   // If this value isn't provided at the time of job creation or is invalid,
387   // the job posting expires after 30 days from the job's creation time. For
388   // example, if the job was created on 2017/01/01 13:00AM UTC with an
389   // unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC.
390   //
391   // If this value isn't provided on job update, it depends on the field masks
392   // set by
393   // [UpdateJobRequest.update_mask][google.cloud.talent.v4beta1.UpdateJobRequest.update_mask].
394   // If the field masks include [expiry_time][], or the masks are empty meaning
395   // that every field is updated, the job posting expires after 30 days from the
396   // job's last update time. Otherwise the expiration date isn't updated.
397   google.protobuf.Timestamp posting_expire_time = 25;
398
399   // Output only. The timestamp when this job posting was created.
400   google.protobuf.Timestamp posting_create_time = 26;
401
402   // Output only. The timestamp when this job posting was last updated.
403   google.protobuf.Timestamp posting_update_time = 27;
404
405   // Output only. Display name of the company listing the job.
406   string company_display_name = 28;
407
408   // Output only. Derived details about the job posting.
409   DerivedInfo derived_info = 29;
410
411   // Optional.
412   //
413   // Options for job processing.
414   ProcessingOptions processing_options = 30;
415 }