O Coodesh Job Feed contém as informações necessárias para publicar vagas de um portal ou sistema de recrutamento (ATS) externo no quadro de vagas da Coodesh. O feed é um feed XML de vagas do LinkedIn válido acrescido de um elemento: category.
Requisitos para participar
Para publicar vagas pelo Coodesh Job Feed, a plataforma precisa:
Ter uma área de trabalho na Coodesh em nome da plataforma. A fonte é cadastrada nela. Não é preciso ter usuários na Coodesh: basta indicar um e-mail responsável por suporte, comunicados e denúncias
Aceitar o Termo de Adesão ao Coodesh Job Feed, que define as regras de conteúdo, o destino da candidatura, o tratamento de denúncias e as medidas aplicáveis
Publicar vagas de tecnologia. O quadro da Coodesh é voltado a profissionais de tecnologia. As categorias que a fonte pode publicar são combinadas no cadastro, e vaga fora delas é recusada
Enviar apenas vagas publicadas pelos próprios empregadores na sua plataforma, sem agregar vagas de outros sites
Ter autorização dos empregadores para divulgar na Coodesh as vagas, o nome, os dados e a logo de cada empresa. Ao enviar o feed, a plataforma declara que tem essa autorização
Servir o feed em uma URL
httpsestável e pública, sem autenticação, respondendo em até 60 segundosManter o arquivo como retrato completo das vagas abertas, conforme Considerações sobre o feed
Observação. A Coodesh pode suspender a fonte que descumprir estes requisitos. A suspensão não encerra vagas: elas apenas deixam de ser atualizadas.
Criando o feed XML
O feed é um documento XML servido em uma URL estável e pública, com um elemento <source> na raiz e um elemento <job> por vaga aberta.
O feed contém três tipos de elemento:
Obrigatórios — sem eles a vaga é recusada
Recomendados — elementos do padrão do LinkedIn que enriquecem a vaga
Campos adicionais — elementos da Coodesh no mesmo formato dos do LinkedIn, opcionais exceto
category
Os campos adicionais são elementos comuns, sem prefixo nem espaço de nomes, ao lado dos campos do LinkedIn.
Cabeçalho do feed
Elementos filhos de <source>, fora de cada <job>. Nenhum é obrigatório, mas expectedJobCount é fortemente recomendado.
Campo | Descrição | Tipo |
| Versão do padrão que o arquivo segue. Ausente significa | Texto |
publisher | Nome do seu sistema | Texto |
publisherUrl | Endereço público do seu sistema | URL |
lastBuildDate | Momento em que o arquivo foi gerado | Texto |
expectedJobCount | Quantidade de vagas que o arquivo deveria conter | Inteiro |
Versão mais nova. Arquivo que declare versão maior do que a suportada é lido assim mesmo, com aviso no relatório.
Por que expectedJobCount importa. A Coodesh compara esse número com a quantidade de <job> que conseguiu ler. Divergência indica download truncado e aborta a leitura sem gravar nada, em vez de encerrar as vagas que faltaram no arquivo.
Esquema de campos da vaga
A tabela lista os campos aceitos em cada <job>.
Campo | Descrição | Obrigatório | Tipo |
partnerJobId | Identificador da vaga no sistema do parceiro. Precisa ser estável durante toda a vida da vaga | Sim | Texto, máx. 40 caracteres |
company | Razão social ou nome comercial do empregador. Não use o nome do seu sistema | Sim | Texto |
companyId | Identificador da empresa no LinkedIn. Chave pela qual a Coodesh agrupa as vagas de um mesmo empregador | Sim | Numérico |
title | Título da vaga, sem códigos internos, endereços, datas ou salário | Sim | Texto |
description | Descrição das responsabilidades. Aceita um conjunto limitado de tags HTML | Sim | Texto, mín. 100 caracteres |
applyUrl | URL onde a candidatura é concluída. Use a URL final, sem encurtador nem redirecionamento | Sim | URL iniciada por https |
city | Cidade da vaga | Sim, se location ausente | Texto |
country | País da vaga | Sim, se location ausente | Código ISO de 2 letras |
location | Localização em texto único, no formato Cidade, UF | Sim, se city e country ausentes | Texto |
state | Unidade federativa ou região | Não | Texto |
postalCode | Código postal | Não | Texto |
workplaceTypes | Natureza do local de trabalho. Valores: On-site, Hybrid, Remote | Não | Texto |
jobtype | Jornada. Valores: FULL_TIME, PART_TIME, CONTRACT, INTERNSHIP. VOLUNTEER recusa a vaga | Não | Texto |
experienceLevel | Senioridade. Valores: ENTRY_LEVEL, ASSOCIATE, MID_SENIOR_LEVEL, DIRECTOR, EXECUTIVE, INTERNSHIP, NOT_APPLICABLE | Não | Texto |
salaries | Faixa salarial. Só é publicada quando period é MONTHLY | Não | Lista de elementos salary |
skills | Até dez competências relevantes | Não | Lista de elementos skill |
listDate | Data da publicação original | Não | MM/DD/AAAA |
expirationDate | Data prevista de encerramento | Não | MM/DD/AAAA |
posterEmail | E-mail da pessoa responsável pela vaga. Usado apenas para verificação da origem e nunca exibido | Não | Texto |
jobPostingAvailability | Visibilidade. Valores: PUBLIC, INTERNAL. O padrão é PUBLIC | Não | Texto |
Observação. Se partnerJobId mudar, a Coodesh interpreta que a vaga anterior foi encerrada e outra foi aberta. Gere o identificador uma vez e mantenha.
Observação. Faixa salarial com period diferente de MONTHLY é ignorada, e a vaga é publicada sem a faixa. O quadro de vagas exibe valor mensal e não armazena o período.
Observação. Vaga com jobPostingAvailability igual a INTERNAL não é publicada, e isso não gera erro no feed. Vagas internas podem permanecer no mesmo arquivo.
O que cada valor vira na vaga publicada
As três enumerações abaixo vêm do padrão do LinkedIn e são traduzidas para o que o candidato vê no quadro de vagas.
Modelo de trabalho, a partir de workplaceTypes:
Valor enviado | Exibido como |
On-site | Presencial, com a cidade |
Hybrid | Híbrida, com a cidade |
Remote | Remota |
Sem workplaceTypes, a vaga é tratada como presencial quando você envia cidade, e a localidade exibida passa a ser essa cidade. Se a vaga é remota, declare Remote explicitamente.
Jornada, a partir de jobtype:
Valor enviado | Efeito |
FULL_TIME | Jornada integral |
PART_TIME | Meio período |
CONTRACT | Jornada integral, e sugere contratação PJ |
INTERNSHIP | Jornada integral, e sugere estágio |
VOLUNTEER | Não tem equivalente no quadro da Coodesh e recusa a vaga |
Senioridade, a partir de experienceLevel:
Valor enviado | Exibido como |
EXECUTIVE | Sênior |
DIRECTOR | Sênior |
MID_SENIOR_LEVEL | Pleno / Sênior |
ASSOCIATE | Júnior / Pleno |
ENTRY_LEVEL | Júnior |
INTERNSHIP | Estágio |
NOT_APPLICABLE | A vaga entra sem nível |
Precisa de mais precisão? level tem seis faixas e prevalece sobre experienceLevel.
Como preencher a faixa salarial
O bloco salaries é aninhado. Envie os dois extremos, a moeda em cada um, o período e o tipo.
<salaries>
<salary>
<lowEnd>
<amount><![CDATA[12000]]></amount>
<currencyCode><![CDATA[BRL]]></currencyCode>
</lowEnd>
<highEnd>
<amount><![CDATA[16000]]></amount>
<currencyCode><![CDATA[BRL]]></currencyCode>
</highEnd>
<period><![CDATA[MONTHLY]]></period>
<type><![CDATA[BASE_SALARY]]></type>
</salary>
</salaries>
Elemento | Regra |
lowEnd/amount | Valor do piso, apenas dígitos |
highEnd/amount | Valor do teto, apenas dígitos |
currencyCode | Código da moeda, como BRL, EUR ou USD |
period | Só |
type |
|
Faixa incompleta é ignorada. Se faltar o piso, o teto ou a moeda, a vaga entra sem faixa salarial. Ela nunca é publicada pela metade.
Salário confidencial. Para usar a faixa no match sem exibi-la ao candidato, envie <salaryScope>private</salaryScope>.
Campos adicionais
Elementos para o que o padrão do LinkedIn não modela. Quando presentes, prevalecem sobre o equivalente do LinkedIn.
Campo | Descrição | Obrigatório | Tipo |
category | Categoria da vaga, pelo código do vocabulário publicado pela Coodesh | Sim | Texto |
contractType | Tipo de contratação. Valores: clt, pj, intern, freelance, flex, consulting, project, lecture, mvp, co_founder | Não | Texto |
lookingFor | Área de atuação. Valores: Vocabulário próprio, diferente do de categorias e com sublinhado: backend, frontend, fullstack, devops, datascience, qa, design_ui, design_ux, mobile_android, cyber_security e demais | Não | Texto |
level | Nível na escala da Coodesh. Valores, do mais sênior ao mais júnior: specialist, intermediary2, intermediary, beginner2, beginner, trainee | Não | Texto |
salaryScope | Exibição da faixa salarial. Valores: public, private | Não | Texto |
companyLogo | URL da logo do empregador, acessível por https e sem autenticação | Não | URL |
companyUrl | Site institucional do empregador | Não | URL |
languages | Idiomas exigidos | Não | Lista de language |
requirements | Requisitos obrigatórios | Não | Lista de requirement |
differentials | Diferenciais | Não | Lista de differential |
benefits | Benefícios | Não | Lista de benefit |
Observação. Um código de categoria fora do vocabulário publicado recusa a vaga. A Coodesh não aproxima para a categoria mais parecida.
Observação. companyLogo e companyUrl descrevem o empregador, não a vaga. Repita o mesmo valor em todas as vagas do mesmo companyId. A imagem é baixada uma vez e passa a ser hospedada pela Coodesh.
Formatação da descrição
Envie a descrição com a mesma formatação HTML usada no seu site, dentro de CDATA. Tags fora da lista abaixo são removidas, e o conteúdo delas é exibido como texto simples.
Tag | Uso |
<p> | Parágrafo |
<br> | Quebra de linha |
<ul>, <li> | Lista |
<b>, <strong> | Negrito |
<i>, <em> | Itálico |
<u> | Sublinhado |
Observação. Escreva CDATA de verdade. Enviar a marcação escapada faz o conteúdo chegar como texto literal dentro da descrição.
Por que uma vaga pode ser recusada
A recusa vale para a vaga, nunca para o arquivo: as demais continuam sendo publicadas. O relatório da leitura traz a contagem por motivo.
Motivo | O que corrigir |
Falta um campo obrigatório | Preencher o campo. O relatório nomeia qual |
| Encurtar o identificador |
Descrição com menos de 100 caracteres | Escrever uma descrição real |
| Enviar o endereço final em https |
Sem localização | Enviar |
Sem | Declarar a categoria |
Categoria fora do vocabulário | Usar um código da tabela de categorias |
Categoria fora do combinado para a sua fonte | Falar com a Coodesh sobre ampliar as categorias |
| Nada. Vaga interna não é publicada por definição |
| Nada. Esse tipo não existe no quadro da Coodesh |
| Remover a duplicata. A primeira ocorrência é mantida |
Empresa com nome já existente na Coodesh | Nada da sua parte. A vaga fica retida para revisão manual |
O que a leitura tolera e o que preenche sozinha
Situação | O que a Coodesh faz |
Nome de elemento em caixa diferente, como | Reconhece do mesmo jeito. A comparação ignora maiúsculas e minúsculas |
País por extenso, como | Converte para o código ISO e registra um aviso na leitura |
País que não reconhece | A vaga entra sem país |
| Usa a data da primeira leitura como data de publicação. Releituras não reescrevem essa data |
| Trata como presencial, para não afirmar trabalho remoto que você não declarou |
Competência que não existe na taxonomia da Coodesh | Descarta apenas aquela competência. A vaga entra normalmente |
Mais de dez competências | Considera as dez primeiras |
| Cria o perfil da empresa na Coodesh a partir do que o feed traz |
O nome da empresa é rótulo, não chave. A Coodesh agrupa as vagas de um empregador pelo companyId. Mudar a grafia do company não cria empresa nova; mudar o companyId cria.
Considerações sobre o feed
A Coodesh lê o arquivo em intervalo regular e o trata como retrato completo das vagas ativas da fonte. Vaga presente no arquivo e ausente na base é criada; presente nas duas é atualizada; ausente do arquivo é encerrada.
Liste todas as vagas abertas em toda leitura. Nunca envie uma lista parcial nem apenas o que mudou desde a última leitura
Inclua
expectedJobCount. A Coodesh o compara com o número de<job>lidos para detectar arquivo truncadoMantenha o feed livre de vagas encerradas e de vagas duplicadas
Não reaproveite
partnerJobIdde uma vaga encerrada em uma vaga novaNão abra e feche a mesma vaga repetidamente
Não use URL de redirecionamento em
applyUrlEnvie apenas vagas publicadas diretamente pelo empregador na sua plataforma. Não inclua vagas agregadas de outros sites
Observação. Como a ausência da vaga no arquivo é o que a encerra, um arquivo parcial encerraria vagas que continuam abertas. Se o feed responder erro, vier malformado ou sem vagas, a leitura é abortada sem escrever nada. Se encolher bruscamente, a fonte é suspensa.
O que acontece quando você altera uma vaga
A cada leitura, a vaga que continua no arquivo é atualizada a partir do que ele traz. Título, descrição, localização, salário, competências e todos os demais campos passam a refletir o arquivo.
Duas exceções, para não reescrever o histórico:
Campo | Comportamento na atualização |
Data de publicação | Mantém a data da primeira leitura, a menos que você envie |
Endereço da vaga na Coodesh | Não muda, mesmo que o título mude |
Para encerrar uma vaga, basta removê-la do arquivo. Enviar expirationDate no passado também a encerra, mesmo que ela continue listada.
Como solicitar o cadastro
Para cadastrar um feed, escreva para help@coodesh.com com o assunto Coodesh Job Feed e estas informações:
Nome da plataforma e, se já existir, a área de trabalho dela na Coodesh
URL do feed
Categorias que a fonte vai publicar, pelos códigos do Vocabulário de categorias
Nome e e-mail do contato técnico, que recebe o relatório da leitura de amostra
E-mail responsável por suporte, comunicados e denúncias
Confirmação de que a plataforma aceita o Termo de Adesão
Com essas informações, a Coodesh cadastra a fonte e executa a leitura de amostra descrita em Aprovação da fonte.
Aprovação da fonte
Toda fonte passa por aprovação única antes de publicar.
Cadastro. O parceiro envia a solicitação descrita em Como solicitar o cadastro. A Coodesh registra a fonte como pendente
Leitura de amostra. A primeira leitura não publica. Executa o processo completo e devolve um relatório com o que seria publicado, o que seria recusado e o motivo de cada recusa
Aprovação. A fonte é aprovada a partir do relatório. Havendo problema, o parceiro corrige o feed e uma nova amostra é gerada
Publicação automática. As leituras seguintes publicam sem intervenção
Após a aprovação, duas verificações permanecem ativas:
Filtro de categoria. Vaga cuja categoria está fora do que foi acordado é recusada, com o motivo registrado no relatório
Proteção contra leitura incompleta. Erro HTTP, XML malformado, divergência de
expectedJobCountou arquivo sem vagas abortam a leitura sem escrever nada e alertam a equipe da Coodesh. Uma queda brusca no número de vagas suspende a fonte e também alerta a equipe
Observação. Fonte suspensa não encerra vaga alguma. Ela apenas deixa de receber atualizações até que o problema seja resolvido.
Quando avisar a Coodesh
Escreva para help@coodesh.com, com o assunto Coodesh Job Feed, antes de:
Mudar a URL do feed. A fonte continua lendo a URL cadastrada até ser atualizada
Publicar categorias além das combinadas. Vagas de categoria nova são recusadas até a lista da fonte ser atualizada
Pausar ou encerrar a integração. Um arquivo sem vagas não encerra as vagas publicadas: a leitura é abortada por proteção. Para retirar as vagas da Coodesh, peça o encerramento da fonte
Se a fonte for suspensa, corrija o feed e peça a reativação pelo mesmo endereço. A fonte suspensa só volta a ser lida quando a Coodesh a reativa.
Como a vaga aparece na Coodesh
Uma vaga que envia apenas a camada obrigatória é publicada assim: categoria, localidade e o botão que leva o candidato ao seu endereço de candidatura.
Cada campo da camada recomendada acrescenta uma informação à mesma vaga. Aqui entraram jornada, senioridade, tipo de contratação, faixa salarial e modelo de trabalho.
Exemplo de feed
A primeira vaga traz apenas os campos obrigatórios. A segunda acrescenta os campos recomendados e alguns campos adicionais.
<?xml version="1.0" encoding="UTF-8"?>
<source>
<publisher><![CDATA[Nome do parceiro]]></publisher>
<publisherUrl><![CDATA[https://parceiro.com]]></publisherUrl>
<lastBuildDate><![CDATA[2026-09-22T15:10:36.186Z]]></lastBuildDate>
<expectedJobCount><![CDATA[2]]></expectedJobCount>
<job>
<partnerJobId><![CDATA[a7f3c2e1-9b44-4d10-8e55-1c0d7f2a9b31]]></partnerJobId>
<company><![CDATA[BLIV Gestão e Negócios]]></company>
<companyId><![CDATA[101543998]]></companyId>
<title><![CDATA[Pessoa Desenvolvedora Back-end Pleno]]></title>
<description><![CDATA[<p>Descrição da vaga com no mínimo 100 caracteres.</p>]]></description>
<applyUrl><![CDATA[https://bliv.parceiro.com/vagas/BLI000165]]></applyUrl>
<city><![CDATA[João Pessoa]]></city>
<state><![CDATA[PB]]></state>
<country><![CDATA[BR]]></country>
<category><![CDATA[backend]]></category>
</job>
<job>
<partnerJobId><![CDATA[b81d4f0e-2c37-4a59-9f61-3e7a8c5d0b44]]></partnerJobId>
<company><![CDATA[TSEA Energia]]></company>
<companyId><![CDATA[2535577]]></companyId>
<title><![CDATA[Pessoa Engenheira de Dados Sênior]]></title>
<description><![CDATA[<p>Descrição da vaga com no mínimo 100 caracteres.</p>]]></description>
<applyUrl><![CDATA[https://tsea.parceiro.com/vagas/TSE000431]]></applyUrl>
<city><![CDATA[São Paulo]]></city>
<state><![CDATA[SP]]></state>
<country><![CDATA[BR]]></country>
<postalCode><![CDATA[04538-133]]></postalCode>
<workplaceTypes><![CDATA[Hybrid]]></workplaceTypes>
<jobtype><![CDATA[FULL_TIME]]></jobtype>
<experienceLevel><![CDATA[MID_SENIOR_LEVEL]]></experienceLevel>
<salaries>
<salary>
<lowEnd><amount><![CDATA[12000]]></amount><currencyCode><![CDATA[BRL]]></currencyCode></lowEnd>
<highEnd><amount><![CDATA[16000]]></amount><currencyCode><![CDATA[BRL]]></currencyCode></highEnd>
<period><![CDATA[MONTHLY]]></period>
<type><![CDATA[BASE_SALARY]]></type>
</salary>
</salaries>
<expirationDate><![CDATA[11/15/2026]]></expirationDate>
<posterEmail><![CDATA[recrutamento@tsea.com.br]]></posterEmail>
<jobPostingAvailability><![CDATA[PUBLIC]]></jobPostingAvailability>
<category><![CDATA[datascience]]></category>
<contractType><![CDATA[clt]]></contractType>
<companyLogo><![CDATA[https://cdn.parceiro.com/tsea/logo.png]]></companyLogo>
</job>
</source>
Vocabulário de categorias
Valores aceitos em category. Envie o código, nunca o nome. Código fora desta lista recusa a vaga.
Código | Categoria |
| Back-End |
| Banco de Dados |
| Customer Success |
| Cyber Segurança |
| Data Science |
| Design/UI |
| Design/UX |
| DevOps |
| Financeiro |
| Front-End |
| Full-Stack |
| Gestão |
| Inteligência Artificial |
| Marketing |
| Mobile |
| Recursos Humanos |
| Suporte Técnico |
| Testes/Q.A |
| Vendas |
Referências
Cadastro de fonte, dúvidas e arquivo de exemplo comentado: help@coodesh.com


