# Lista as jornadas ativas da empresa

`GET /v1/catalogos/jornadas`

As jornadas são cadastradas pelo escritório no Motor. Use o `id` em
`vinculo.jornada_id`. Uma jornada com `pronta_para_esocial = false` é
aceita no catálogo mas recusaria a admissão (`422`, códigos
`JORNADA_SEM_*`) — quem a completa é o escritório.

## Cabeçalhos e parâmetros

- `Authorization` (`Bearer <chave>` · obrigatório) — `Authorization: Bearer <chave>`. A chave é gerada pelo escritório na ficha da empresa, com um nome, aparece uma vez (o Motor guarda só o resumo SHA-256 dela), e alcança uma empresa e só a admissão. Vale enquanto não for revogada e o escritório que a gerou atender a empresa. A empresa pode ter **até duas chaves ativas** ao mesmo tempo, para trocar sem parar; o endereço do webhook e o segredo dele são da integração da empresa, não de cada chave — o webhook é opcional, e trocar o endereço gera um segredo novo na hora. Sessão de usuário e token OAuth são recusados nestas rotas.

## Respostas

### 200

Jornadas ativas.

Corpo:

- `itens` (lista de objeto · obrigatório)
  - `itens.N.id` (uuid · obrigatório)
  - `itens.N.nome` (texto · obrigatório)
  - `itens.N.tp_jornada` (inteiro · obrigatório) — Tipo de jornada do eSocial.
    - `2` — Jornada 12 x 36 (12 horas de trabalho seguidas de 36 horas ininterruptas de descanso)
    - `3` — Jornada com horário diário fixo e folga variável
    - `4` — Jornada com horário diário fixo e folga fixa (no domingo)
    - `5` — Jornada com horário diário fixo e folga fixa (exceto no domingo)
    - `6` — Jornada com horário diário fixo e folga fixa (em outro dia da semana), com folga adicional periódica no domingo
    - `7` — Turno ininterrupto de revezamento
    - `9` — Demais tipos de jornada
  - `itens.N.qtd_hrs_sem` (número ou null · obrigatório)
  - `itens.N.dsc_jorn` (texto ou null · obrigatório)
  - `itens.N.tmp_parc` (inteiro · obrigatório) — 1 só vale para empregado doméstico, fora da v1 — jornada com 1 recusa (`JORNADA_PARCIAL_SO_DOMESTICO`).
    - `0` — Não é contrato em tempo parcial
    - `1` — Limitado a 25 horas semanais
    - `2` — Limitado a 30 horas semanais
    - `3` — Limitado a 26 horas semanais
  - `itens.N.hor_noturno` (true / false · obrigatório)
  - `itens.N.pronta_para_esocial` (true / false · obrigatório) — Tem horas semanais e descrição e não é parcial de doméstico — o que o S-2200 exige.

### 401

`CHAVE_INVALIDA` — ausente, malformada, desconhecida, credencial que não
é chave de integração, ou chave de uma empresa que deixou de ser
atendida pelo escritório que a gerou. `CHAVE_REVOGADA` — a chave foi revogada pelo
escritório; vale a partir da chamada seguinte à revogação. Admissão
enviada por ela e ainda não transmitida vai para a fila do escritório
(aviso `admissao.aguardando_escritorio`).

Corpo:

- `codigo` (texto · obrigatório) — Código estável. Conhecidos: IDEMPOTENCY_KEY_INVALIDA, CHAVE_INVALIDA, CHAVE_REVOGADA, CHAVE_SEM_ESCOPO, EMPRESA_NAO_HABILITADA, CERTIFICADO_INDISPONIVEL, NAO_ENCONTRADA, METODO_NAO_PERMITIDO, TRABALHADOR_JA_ADMITIDO, IDEMPOTENCIA_CONFLITO, IDEMPOTENCIA_EM_CURSO, CORPO_GRANDE_DEMAIS, CAMPO_DESCONHECIDO, DADOS_INVALIDOS, DADOS_FALTANDO, LIMITE_EXCEDIDO, INDISPONIVEL (a lista, com o que fazer em cada um, está em `x-motor-codigos.recusas`). Trate código desconhecido como erro que exige olhar humano.
- `mensagem` (texto · obrigatório) — Texto em português para pessoas. Não o use para decidir — use `codigo`.
- `campos` (lista de objeto · obrigatório) — Problemas campo a campo. Vazio quando o erro não é de um campo.
  - `campos.N.campo` (texto · obrigatório) — Caminho no corpo, com ponto e índice — `trabalhador.cpf`, `dependentes.0.cpf`. `(corpo)` quando o JSON não pôde ser lido.
  - `campos.N.codigo` (texto · obrigatório) — Código do campo; a lista completa, com quem corrige cada um, está em `x-motor-codigos.campos`. Quem corrige depende do código: os de jornada e sindicato são do cadastro do escritório, não do pedido.
  - `campos.N.mensagem` (texto · obrigatório)

### 429

`LIMITE_EXCEDIDO` — mais de 60 chamadas por minuto com esta chave. Só
isso: a admissão pela API não tem limite próprio no plano do escritório
(conta como colaborador ativo, como a da tela). Espere o `Retry-After`
(em segundos).

Cabeçalhos:

- `Retry-After` — Segundos a esperar antes de repetir.

Corpo:

- `codigo` (texto · obrigatório) — Código estável. Conhecidos: IDEMPOTENCY_KEY_INVALIDA, CHAVE_INVALIDA, CHAVE_REVOGADA, CHAVE_SEM_ESCOPO, EMPRESA_NAO_HABILITADA, CERTIFICADO_INDISPONIVEL, NAO_ENCONTRADA, METODO_NAO_PERMITIDO, TRABALHADOR_JA_ADMITIDO, IDEMPOTENCIA_CONFLITO, IDEMPOTENCIA_EM_CURSO, CORPO_GRANDE_DEMAIS, CAMPO_DESCONHECIDO, DADOS_INVALIDOS, DADOS_FALTANDO, LIMITE_EXCEDIDO, INDISPONIVEL (a lista, com o que fazer em cada um, está em `x-motor-codigos.recusas`). Trate código desconhecido como erro que exige olhar humano.
- `mensagem` (texto · obrigatório) — Texto em português para pessoas. Não o use para decidir — use `codigo`.
- `campos` (lista de objeto · obrigatório) — Problemas campo a campo. Vazio quando o erro não é de um campo.
  - `campos.N.campo` (texto · obrigatório) — Caminho no corpo, com ponto e índice — `trabalhador.cpf`, `dependentes.0.cpf`. `(corpo)` quando o JSON não pôde ser lido.
  - `campos.N.codigo` (texto · obrigatório) — Código do campo; a lista completa, com quem corrige cada um, está em `x-motor-codigos.campos`. Quem corrige depende do código: os de jornada e sindicato são do cadastro do escritório, não do pedido.
  - `campos.N.mensagem` (texto · obrigatório)

### 503

`INDISPONIVEL` — falha nossa, não do pedido nem da chave. No `POST`,
repita com a MESMA `Idempotency-Key`, respeitando `Retry-After` quando
vier: não haverá duplicata — se a admissão tiver sido criada, a
repetição devolve o `202` dela.

Cabeçalhos:

- `Retry-After` — Segundos a esperar antes de repetir, quando vier.

Corpo:

- `codigo` (texto · obrigatório) — Código estável. Conhecidos: IDEMPOTENCY_KEY_INVALIDA, CHAVE_INVALIDA, CHAVE_REVOGADA, CHAVE_SEM_ESCOPO, EMPRESA_NAO_HABILITADA, CERTIFICADO_INDISPONIVEL, NAO_ENCONTRADA, METODO_NAO_PERMITIDO, TRABALHADOR_JA_ADMITIDO, IDEMPOTENCIA_CONFLITO, IDEMPOTENCIA_EM_CURSO, CORPO_GRANDE_DEMAIS, CAMPO_DESCONHECIDO, DADOS_INVALIDOS, DADOS_FALTANDO, LIMITE_EXCEDIDO, INDISPONIVEL (a lista, com o que fazer em cada um, está em `x-motor-codigos.recusas`). Trate código desconhecido como erro que exige olhar humano.
- `mensagem` (texto · obrigatório) — Texto em português para pessoas. Não o use para decidir — use `codigo`.
- `campos` (lista de objeto · obrigatório) — Problemas campo a campo. Vazio quando o erro não é de um campo.
  - `campos.N.campo` (texto · obrigatório) — Caminho no corpo, com ponto e índice — `trabalhador.cpf`, `dependentes.0.cpf`. `(corpo)` quando o JSON não pôde ser lido.
  - `campos.N.codigo` (texto · obrigatório) — Código do campo; a lista completa, com quem corrige cada um, está em `x-motor-codigos.campos`. Quem corrige depende do código: os de jornada e sindicato são do cadastro do escritório, não do pedido.
  - `campos.N.mensagem` (texto · obrigatório)

## Exemplos

curl:

```bash
curl https://api.motorcontabil.com/v1/catalogos/jornadas \
  -H "Authorization: Bearer $CHAVE_MOTOR"
```

Node:

```js
// Node 18 ou mais novo (fetch nativo), em módulo ES.
const resposta = await fetch('https://api.motorcontabil.com/v1/catalogos/jornadas', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.CHAVE_MOTOR}`,
  },
});
const dados = await resposta.json();
```

C#:

```csharp
using System.Net.Http.Headers;
using System.Text;

using var http = new HttpClient { BaseAddress = new Uri("https://api.motorcontabil.com") };
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", chaveMotor);

var pedido = new HttpRequestMessage(HttpMethod.Get, "/v1/catalogos/jornadas");

var resposta = await http.SendAsync(pedido);
var corpo = await resposta.Content.ReadAsStringAsync();
```
