Verze: 1.0
Typ API: GraphQL
Směny.cz API umožňuje napojení externích systémů (HR, docházka, ERP, plánování výroby) na systém plánování směn Směny.cz.
API umožňuje:
Používejte pro vývoj a testování.
GraphQL endpoint:https://preprod.smeny.cz/graphql
GraphiQL Explorer:https://preprod.smeny.cz/graphiql?token=TOKEN
GraphiQL umožňuje:
https://smeny.cz/api/graphql/
⚠️ Produkční data nelze obnovit.
API používá JWT token.
Token lze vytvořit v administraci:
Nastavení → API přístupy
nebo: https://preprod.smeny.cz/company-access-token/list
Authorization: Bearer TOKENPOST /graphql HTTP/1.1
Host: preprod.smeny.cz
Authorization: Bearer TOKEN
Content-Type: application/json
{
"query": "{ workplaces { edges { node { id name } } } }"
}API používá GraphQL. Existují dva typy operací:
Slouží ke čtení dat. Například: users, workplaces, shifts
Slouží k zápisu dat. Například: shiftCreate, shiftDelete
Výpisy používají pager.
pager: { first: 50 }Doporučené maximum: first: 100
UUID formát: fb01013a-3f2f-46d4-9d06-726b38868632
ISO 8601 formát: 2026-07-01T08:00:00+02:00
{
workplaces(pager: { first: 50 }) {
edges {
node {
id
name
fullName
}
}
}
}{
"data": {
"workplaces": {
"edges": [
{
"node": {
"id": "fb01013a",
"name": "Recepce",
"fullName": "Firma > Recepce"
}
}
]
}
}
}{
users(pager: { first: 100 }) {
edges {
node {
id
fullName
email
externalId
}
}
}
}{
"data": {
"users": {
"edges": [
{
"node": {
"id": "15ae477a",
"fullName": "Jan Novák",
"email": "[email protected]",
"externalId": "122585"
}
}
]
}
}
}Externí ID je identifikátor zaměstnance z externího systému, například: 122585
Externí ID lze nastavit v detailu uživatele: Uživatel → Externí ID
Doporučujeme používat pro integraci. Výhody:
mutation {
shiftCreate(input: {
workplaceId: "fb01013a-3f2f-46d4-9d06-726b38868632"
userId: "15ae477a-1112-4d33-a451-fc719bf77aed"
since: "2026-07-01T08:00:00+02:00"
till: "2026-07-01T16:00:00+02:00"
}) {
shift {
id
since
till
}
}
}{
"data": {
"shiftCreate": {
"shift": {
"id": "b9123311",
"since": "2026-07-01T08:00:00+02:00",
"till": "2026-07-01T16:00:00+02:00"
}
}
}
}Pokud není zadán userId, vznikne otevřená směna bez zaměstnance:
mutation {
shiftCreate(input: {
workplaceId: "fb01013a"
since: "2026-07-01T08:00:00+02:00"
till: "2026-07-01T16:00:00+02:00"
}) {
shift {
id
}
}
}Úprava se provádí pomocí shiftCreate s parametrem id existující směny:
mutation {
shiftCreate(input: {
id: "SHIFT_ID"
workplaceId: "fb01013a"
since: "2026-07-01T09:00:00+02:00"
till: "2026-07-01T17:00:00+02:00"
}) {
shift {
id
}
}
}mutation {
shiftDelete(id: "SHIFT_ID") {
ok
}
}{
shifts(
filter: {
since: "2026-07-01"
till: "2026-07-31"
}
) {
edges {
node {
id
since
till
user {
fullName
}
workplace {
name
}
}
}
}
}| Pole | Typ | Povinné | Popis |
|---|---|---|---|
workplaceId | ID | Ano | Pracoviště |
since | Date | Ano | Začátek směny |
till | Date | Ano | Konec směny |
userId | ID | Ne | Uživatel (zaměstnanec) |
positionId | ID | Ne | Pozice |
note | String | Ne | Poznámka |
id | ID | Ne | ID existující směny (pro update) |
Více směn lze vytvořit v jednom GraphQL požadavku pomocí aliasů:
mutation {
a: shiftCreate(input: {
workplaceId: "fb01013a"
since: "2026-07-01T08:00:00+02:00"
till: "2026-07-01T16:00:00+02:00"
}) { shift { id } }
b: shiftCreate(input: {
workplaceId: "fb01013a"
since: "2026-07-02T08:00:00+02:00"
till: "2026-07-02T16:00:00+02:00"
}) { shift { id } }
}Pro napojení externích docházkových systémů existuje speciální GraphQL mutation dispatch.
Mutation přijímá JWT token podepsaný vaším privátním klíčem (RS256). Token obsahuje identifikaci uživatele a požadovanou akci. Server ověří token proti odpovídajícímu veřejnému klíči a provede operaci.
Header:
{
"alg": "RS256",
"typ": "JWT",
"cty": "JWT"
}Payload (claims):
{
"iss": "nazev-systemu",
"sub": "5b88d589-97ec-4aae-a203-5ba3dc6fa9ae",
"personalNumber": "30479",
"action": "presence-start",
"parameters": "{\"checked\":true,\"message\":\"Směna zahájena\"}",
"iat": 1695821566,
"nbf": 1695821566,
"exp": 1695821626
}| Pole | Typ | Popis |
|---|---|---|
iss | string | Vydavatel tokenu (název vašeho systému) |
sub | string (UUID) | Identifikátor volajícího systému |
personalNumber | string | Osobní číslo uživatele |
action | string | Požadovaná akce: presence-start nebo presence-end |
parameters | string (JSON) | Serializovaný JSON s parametry akce |
iat | number | Čas vytvoření tokenu (unix timestamp) |
nbf | number | Platnost od (unix timestamp) |
exp | number | Platnost do (unix timestamp) – doporučená TTL 60 s |
mutation {
dispatch(input: { token: "<JWT>" }) {
data {
key
value
}
}
}presence-start – začátek docházkyZaznamená začátek docházky pro uživatele identifikovaného pomocí personalNumber.
{
"checked": true,
"message": "Směna zahájena"
}presence-end – konec docházkyZaznamená konec docházky.
{
"checked": true,
"message": "Směna ukončena"
}Upozornění: Pole parameters v JWT payloadu je serializovaný JSON řetězec (ne objekt). Při sestavování tokenu je nutné objekt nejprve převést na string.
workplacesusersexternalIdshiftCreate| Chyba | Řešení |
|---|---|
Unauthorized | Zkontrolujte platnost tokenu |
Workplace not found | Načtěte seznam pracovišť a ověřte ID |
Invalid date | Použijte ISO 8601: 2026-07-01T08:00:00+02:00 |
Použijte GraphiQL Explorer pro testování dotazů:
https://preprod.smeny.cz/graphiql?token=TOKEN
Produkční endpoint:
https://smeny.cz/api/graphql/?token=TOKEN