Criar e atualizar empresas

Um recurso de empresa na API Cloud Talent Solution representa uma única empresa. Qualquer trabalho pertencente a essa empresa se refere a uma postagem de vaga criada para uma vaga aberta nessa empresa. Ele contém informações, como nome e endereço da empresa, além de campos internos que vinculam o recurso no serviço da Cloud Talent Solution aos bancos de dados internos.

Criar uma empresa

Para criar uma empresa, envie uma solicitação POST para o ponto de extremidade companies, especificando pelo menos os dois campos obrigatórios. Consulte a página QuickStart: criar empresas e vagas para detalhes sobre como criar uma empresa.

Java

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

/**
 * Create a company.
 */
public static Company createCompany(Company companyToBeCreated) throws IOException {
  try {
    CreateCompanyRequest createCompanyRequest =
        new CreateCompanyRequest().setCompany(companyToBeCreated);
    Company companyCreated =
        talentSolutionClient.projects()
            .companies()
            .create(DEFAULT_PROJECT_ID, createCompanyRequest)
            .execute();
    System.out.println("Company created: " + companyCreated);
    return companyCreated;
  } catch (IOException e) {
    System.out.println("Got exception while creating company");
    throw e;
  }
}

Python

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

def create_company(client_service, company_to_be_created):
    try:
        request = {'company': company_to_be_created}
        company_created = client_service.projects().companies().create(
            parent=parent, body=request).execute()
        print('Company created: %s' % company_created)
        return company_created
    except Error as e:
        print('Got exception while creating company')
        raise e

C#

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

public static Company CreateCompany(Company companyToBeCreated)
{
    try
    {
        CreateCompanyRequest createCompanyRequest = new CreateCompanyRequest();
        createCompanyRequest.Company = companyToBeCreated;
        Company companyCreated = jobServiceClient.Projects.Companies.Create(createCompanyRequest, parent).Execute();
        Console.WriteLine("Created company: " + ToJsonString(companyCreated));
        return companyCreated;
    }
    catch (Exception e)
    {
        Console.WriteLine("Got exception while creating company");
        throw e;
    }
}

Go

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

// createCompany creates a company as given.
func createCompany(w io.Writer, projectID string, companyToCreate *talent.Company) (*talent.Company, error) {
	ctx := context.Background()

	client, err := google.DefaultClient(ctx, talent.CloudPlatformScope)
	if err != nil {
		return nil, fmt.Errorf("google.DefaultClient: %v", err)
	}
	// Create the jobs service client.
	service, err := talent.New(client)
	if err != nil {
		return nil, fmt.Errorf("talent.New: %v", err)
	}

	parent := "projects/" + projectID
	req := &talent.CreateCompanyRequest{
		Company: companyToCreate,
	}
	company, err := service.Projects.Companies.Create(parent, req).Do()
	if err != nil {
		return nil, fmt.Errorf("failed to create company %q: %v", companyToCreate.DisplayName, err)
	}

	return company, nil
}

Node.js

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

/**
 * Create a company.
 */
const createCompany = async (jobServiceClient, companyToBeCreated) => {
  try {
    const request = {
      parent: `projects/${PROJECT_ID}`,
      resource: {
        company: companyToBeCreated,
      },
    };

    const companyCreated = await jobServiceClient.projects.companies.create(
      request
    );

    console.log(`Company created: ${JSON.stringify(companyCreated.data)}`);
    return companyCreated.data;
  } catch (e) {
    console.error(`Failed to create company! ${e}`);
    throw e;
  }
};

Ruby

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de clientes da Cloud Talent Solution.

# project_id              = "Id of the project"
# company_to_be_created   = "Company to be created"

require "google/apis/jobs_v3"

jobs = Google::Apis::JobsV3
talent_solution_client = jobs::CloudTalentSolutionService.new
# @see
# https://developers.google.com/identity/protocols/application-default-credentials#callingruby
talent_solution_client.authorization = Google::Auth.get_application_default(
  "https://www.googleapis.com/auth/jobs"
)

begin
  create_company_request = jobs::CreateCompanyRequest.new company: company_to_be_created
  company_created = talent_solution_client.create_company project_id, create_company_request
  puts "Company created: #{company_created.to_json}"
  return company_created
rescue StandardError => e
  puts "Exception occurred while creating company: #{e}"
end

Campos obrigatórios

Os seguintes campos são obrigatórios em solicitações de criação/atualização:

  • displayName: o nome do empregador exibido na vaga, por exemplo, "Google, Inc.".

  • externalId: o código interno desta empresa. Esse campo permite mapear os identificadores internos para a empresa no sistema do Google. Caso a empresa não tenha um identificador interno separado, defina esse campo com o mesmo valor de displayName.

Campos mais usados

  • headquartersAddress: o endereço da sede da empresa, que pode ser diferente do local de trabalho. A Cloud Talent Solution aceita apenas um único local de sede por empresa. O serviço tenta localizar geograficamente o endereço e preenche um local mais específico quando possível em derivedInfo.headquartersLocation (que é somente saída).

  • size: um valor de intervalo que representa o tamanho da empresa em termos de número de funcionários, de MINI a GIANT. Consulte a referência de size para enumerações e as definições deles.

  • eeoText: uma string que contém o texto de aviso de isenção de responsabilidade legal da Comissão de Oportunidades Iguais de Emprego (dos EUA) a ser associado a todas as vagas da empresa.

  • keywordSearchableJobCustomAttributes: especifica quais customAttributes nas vagas desta empresa precisam ser indexados e passíveis de pesquisa geral por palavra-chave.

Atualizar uma empresa

Para atualizar uma empresa, envie uma solicitação PATCH ao seguinte ponto de extremidade:

 PATCH https://jobs.googleapis.com/v3/COMPANY_NAME 

Em que COMPANY_NAME é o valor do campo name da empresa. name é o identificador exclusivo da empresa retornado no momento da criação e também por solicitações company.get e list.

O corpo da solicitação precisa conter todo o recurso, inclusive os campos que não estão sendo atualizados. Esses campos podem ser definidos em updateMask. Se os campos estiverem definidos em updateMask, somente eles serão atualizados, e as atualizações nos outros campos serão ignoradas. Se updateMask não estiver definido, todos os campos serão atualizados.

Por exemplo, para adicionar um campo websiteUri:

Java

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

/**
 * Updates a company.
 */
public static Company updateCompany(String companyName, Company companyToBeUpdated)
    throws IOException {
  try {
    UpdateCompanyRequest updateCompanyRequest =
        new UpdateCompanyRequest().setCompany(companyToBeUpdated);

    Company companyUpdated =
        talentSolutionClient
            .projects()
            .companies()
            .patch(companyName, updateCompanyRequest)
            .execute();

    System.out.println("Company updated: " + companyUpdated);
    return companyUpdated;
  } catch (IOException e) {
    System.out.println("Got exception while updating company");
    throw e;
  }
}

Python

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

def update_company(client_service, company_name, company_to_be_updated):
    try:
        request = {'company': company_to_be_updated}
        company_updated = client_service.projects().companies().patch(
            name=company_name, body=request).execute()
        print('Company updated: %s' % company_updated)
        return company_updated
    except Error as e:
        print('Got exception while updating company')
        raise e

C#

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

public static Company UpdateCompany(String companyName, Company companyToBeUpdated)
{
    try
    {
        UpdateCompanyRequest updateCompanyRequest = new UpdateCompanyRequest()
        {
            Company = companyToBeUpdated
        };
        Company companyUpdated = jobServiceClient.Projects.Companies.Patch(updateCompanyRequest, companyName).Execute();
        Console.WriteLine("Company updated: " + ToJsonString(companyUpdated));
        return companyUpdated;
    }
    catch (Exception e)
    {
        Console.WriteLine("Got exception while updating company");
        throw e;
    }
}

Go

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

// updateCompany update a company with all fields.
func updateCompany(w io.Writer, name string, companyToUpdate *talent.Company) (*talent.Company, error) {
	ctx := context.Background()

	client, err := google.DefaultClient(ctx, talent.CloudPlatformScope)
	if err != nil {
		return nil, fmt.Errorf("google.DefaultClient: %v", err)
	}
	// Create the jobs service client.
	service, err := talent.New(client)
	if err != nil {
		return nil, fmt.Errorf("talent.New: %v", err)
	}

	updateCompanyRequest := &talent.UpdateCompanyRequest{
		Company: companyToUpdate,
	}
	company, err := service.Projects.Companies.Patch(name, updateCompanyRequest).Do()
	if err != nil {
		return nil, fmt.Errorf("failed to update company %q: %v", name, err)
	}

	return company, nil
}

Node.js

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

/**
 * Updates a company.
 */
const updateCompany = async (
  jobServiceClient,
  companyName,
  companyToBeUpdated
) => {
  try {
    const request = {
      name: companyName,
      resource: {
        company: companyToBeUpdated,
      },
    };

    const companyUpdated = await jobServiceClient.projects.companies.patch(
      request
    );

    console.log(`Company updated: ${JSON.stringify(companyUpdated.data)}`);
    return companyUpdated.data;
  } catch (e) {
    console.error(`Got exception while updating company! ${e}`);
    throw e;
  }
};

Ruby

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de clientes da Cloud Talent Solution.

# company_name     = "The name of the company you want to update. The format is "projects/{project_id}/companies/{company_id}""
# company_updated  = "The new company object to be updated"

require "google/apis/jobs_v3"

jobs = Google::Apis::JobsV3
talent_solution_client = jobs::CloudTalentSolutionService.new
# @see
# https://developers.google.com/identity/protocols/application-default-credentials#callingruby
talent_solution_client.authorization = Google::Auth.get_application_default(
  "https://www.googleapis.com/auth/jobs"
)

begin
  update_company_request = jobs::UpdateCompanyRequest.new company: company_updated
  company_updated = talent_solution_client
                    .patch_project_company(company_name, update_company_request)
  puts "Company updated: #{company_updated.to_json}"
  return company_updated
rescue StandardError => e
  puts "Exception occurred while updating company: #{e}"
end

Atualize a empresa com updateMask.

Java

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

/**
 * Updates a company.
 */
public static Company updateCompanyWithFieldMask(String companyName, String fieldMask,
    Company companyToBeUpdated)
    throws IOException {
  try {
    // String foo = String.format("?updateCompanyFields=%s",fieldMask);
    UpdateCompanyRequest updateCompanyRequest =
        new UpdateCompanyRequest().setUpdateMask(fieldMask).setCompany(companyToBeUpdated);

    Company companyUpdated =
        talentSolutionClient
            .projects()
            .companies()
            .patch(companyName, updateCompanyRequest)
            .execute();

    System.out.println("Company updated: " + companyUpdated);
    return companyUpdated;
  } catch (IOException e) {
    System.out.println("Got exception while updating company");
    throw e;
  }
}

Python

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

def update_company_with_field_mask(client_service, company_name,
                                   company_to_be_updated, field_mask):
    try:
        request = {
            'company': company_to_be_updated,
            'update_mask': field_mask
        }
        company_updated = client_service.projects().companies().patch(
            name=company_name,
            body=request).execute()
        print('Company updated: %s' % company_updated)
        return company_updated
    except Error as e:
        print('Got exception while updating company with field mask')
        raise e

C#

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

public static Company UpdateCompanyWithFieldMask(string companyName, string fieldMask, Company companyToBeUpdated)
{
    try
    {
        UpdateCompanyRequest updateCompanyRequest = new UpdateCompanyRequest()
        {
            UpdateMask = fieldMask,
            Company = companyToBeUpdated
        };
        Company companyUpdated = jobServiceClient.Projects.Companies.Patch(updateCompanyRequest, companyName).Execute();
        Console.WriteLine("Company updated with updateMask: " + ToJsonString(companyUpdated));
        return companyUpdated;
    }
    catch (Exception e)
    {
        Console.WriteLine("Got exception while updating company with update mask");
        throw e;
    }
}

Go

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

// updateCompanyWithMask updates a company with specific fields.
// mask is a comma separated list of top-level fields of talent.Company.
func updateCompanyWithMask(w io.Writer, name string, mask string, companyToUpdate *talent.Company) (*talent.Company, error) {
	ctx := context.Background()

	client, err := google.DefaultClient(ctx, talent.CloudPlatformScope)
	if err != nil {
		return nil, fmt.Errorf("google.DefaultClient: %v", err)
	}
	// Create the jobs service client.
	service, err := talent.New(client)
	if err != nil {
		return nil, fmt.Errorf("talent.New: %v", err)
	}

	req := &talent.UpdateCompanyRequest{
		Company:    companyToUpdate,
		UpdateMask: mask,
	}
	company, err := service.Projects.Companies.Patch(name, req).Do()
	if err != nil {
		return nil, fmt.Errorf("failed to update company %q with mask %q: %v", name, mask, err)
	}

	return company, nil
}

Node.js

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de cliente da Cloud Talent Solution.

/**
 * Updates a company with field mask.
 */
const updateCompanyWithFieldMask = async (
  jobServiceClient,
  companyName,
  companyToBeUpdated,
  fieldMask
) => {
  try {
    const request = {
      name: companyName,
      resource: {
        company: companyToBeUpdated,
        updateMask: fieldMask,
      },
    };

    const companyUpdated = await jobServiceClient.projects.companies.patch(
      request
    );

    console.log(`Company updated: ${JSON.stringify(companyUpdated.data)}`);
    return companyUpdated.data;
  } catch (e) {
    console.error(`Got exception while updating company with field mask! ${e}`);
    throw e;
  }
};

Ruby

Para mais informações sobre a instalação e criação de um cliente da Cloud Talent Solution, consulte Bibliotecas de clientes da Cloud Talent Solution.

# company_name     = "The name of the company you want to update. The format is "projects/{project_id}/companies/{company_id}""
# field_mask       = "The field mask you want to update"
# company_updated  = "The new company object to be updated"

require "google/apis/jobs_v3"

jobs = Google::Apis::JobsV3
talent_solution_client = jobs::CloudTalentSolutionService.new
# @see
# https://developers.google.com/identity/protocols/application-default-credentials#callingruby
talent_solution_client.authorization = Google::Auth.get_application_default(
  "https://www.googleapis.com/auth/jobs"
)

begin
  update_company_request = jobs::UpdateCompanyRequest.new company:     company_updated,
                                                          update_mask: field_mask
  company_updated = talent_solution_client
                    .patch_project_company(company_name, update_company_request)
  puts "Company updated with filedMask #{update_company_request.update_mask}. "
  puts "Updated company: #{company_updated.to_json}"
  return company_updated
rescue StandardError => e
  puts "Exception occurred while updating company with fieldMask: #{e}"
end

Práticas recomendadas

Empresas confidenciais

Nos casos em que você quer postar uma vaga confidencial, recomendamos criar uma empresa separada que imite os campos da empresa, mas ocultar os campos displayName, externalId e quaisquer outros campos de identificação.

Nos casos em que o empregador final precisa ser anônimo (por exemplo, o caso de uso de agências de recrutamento), recomendamos definir externalId e displayName com valores aleatórios, mas exclusivos.