AperçuStaffing Orders & Postes

Staffing Orders & Shifts

Transmettre les besoins en personnel et récupérer les statuts

Staffing Orders & Shifts

Un Staffing Order représente un besoin en personnel que votre système transmet à job.rocks. Via l'API, vous pouvez créer ce besoin, ajouter des shifts et récupérer le statut de traitement actuel.

Créer un Staffing Order

POST /staffing-orders

Requête:

{
  "external_order_id": "PARTNER-ORDER-12345",
  "customer": {
    "external_customer_id": "CUST-001",
    "name": "Exemple SA"
  },
  "site": {
    "external_site_id": "SITE-001",
    "name": "Hôtel Exemple Zurich",
    "address": "Rue Exemple 1, 8000 Zurich"
  },
  "title": "Personnel de service pour banquet",
  "description": "Notes optionnelles sur l'affectation",
  "cost_center": "BANQUET-2026",
  "language": "fr"
}

Réponse (201):

{
  "order_id": "jr_order_123",
  "external_order_id": "PARTNER-ORDER-12345",
  "status": "received"
}

Champs

ChampObligatoireDescription
external_order_idOuiVotre ID d'ordre interne (unique par partenaire)
customer.external_customer_idOuiVotre ID client (créé à la première utilisation, puis référencé)
customer.nameOuiNom du client
site.external_site_idOuiVotre ID de site (créé à la première utilisation, puis référencé)
site.nameOuiDésignation du site
site.addressOuiAdresse d'affectation
titleOuiTitre court de l'affectation
descriptionNonNotes en texte libre sur l'affectation
cost_centerNonCentre de coût pour la comptabilisation
languageNonLangue (de, fr, en, it), valeur par défaut par partenaire

Idempotence

external_order_id est unique par partenaire. Un POST répété avec le même ID et le même payload renvoie l'ordre existant. Un payload différent avec le même ID renvoie 409 CONFLICT.

Données de base

Lors du premier appel avec un nouveau external_customer_id ou external_site_id, les données de base sont créées dans job.rocks. Lors d'un appel ultérieur avec le même ID, les données de base sont référencées. Les modifications de nom ou d'adresse sont mises à jour, à condition que le système partenaire soit défini comme système référent pour les données de base.

Ajouter un Shift Demand

POST /staffing-orders/{order_id}/shifts

Requête:

{
  "external_shift_id": "PARTNER-SHIFT-987",
  "date": "2026-07-10",
  "start_time": "17:00",
  "end_time": "23:00",
  "role": "Service",
  "external_role_id": "PARTNER-ROLE-SERVICE",
  "required_headcount": 8,
  "break_minutes": 30,
  "notes": "Pantalon noir, chemise blanche"
}

Réponse (201):

{
  "shift_id": "jr_shift_456",
  "external_shift_id": "PARTNER-SHIFT-987",
  "status": "created"
}

Champs

ChampObligatoireDescription
external_shift_idOuiVotre ID de shift interne (unique par ordre)
dateOuiDate d'affectation (YYYY-MM-DD)
start_timeOuiHeure de début (HH:mm)
end_timeOuiHeure de fin (HH:mm)
roleOuiRôle/fonction (texte libre)
external_role_idNonVotre ID de rôle interne (recommandé pour le mapping)
required_headcountOuiNombre de personnes requises (min. 1)
break_minutesNonDurée de la pause en minutes
notesNonNotes (tenue vestimentaire, déroulement, etc.)

Modifier un Shift Demand

PATCH /staffing-orders/{order_id}/shifts/{shift_id}

Champs modifiables: date, start_time, end_time, role, external_role_id, required_headcount, break_minutes, notes.

Pour les shifts ayant déjà des affectations, les modifications peuvent être restreintes. Le statut actuel est renvoyé via l'API.

Lister les Staffing Orders

GET /staffing-orders?status=in_progress&limit=50&cursor=***
ParamètreTypeDescription
external_order_idstringFiltrer par ID externe
statusstringFiltrer par statut
limitintNombre maximum de résultats (par défaut: 50)
cursorstringCurseur de pagination
updated_sincedatetimeUniquement les ordres mis à jour depuis cette date

Réponse (200):

{
  "items": [
    {
      "order_id": "jr_order_123",
      "external_order_id": "PARTNER-ORDER-12345",
      "title": "Personnel de service pour banquet",
      "status": "in_progress",
      "created_at": "2026-06-24T16:00:00Z",
      "updated_at": "2026-06-24T16:30:00Z"
    }
  ],
  "next_cursor": "***=="
}

Détail d'un Staffing Order

GET /staffing-orders/{order_id}

Réponse (200):

{
  "order_id": "jr_order_123",
  "external_order_id": "PARTNER-ORDER-12345",
  "status": "partially_filled",
  "site": {
    "name": "Hôtel Exemple Zurich",
    "address": "Rue Exemple 1, 8000 Zurich"
  },
  "shifts": [
    {
      "shift_id": "jr_shift_456",
      "external_shift_id": "PARTNER-SHIFT-987",
      "date": "2026-07-10",
      "start_time": "17:00",
      "end_time": "23:00",
      "role": "Service",
      "required_headcount": 8,
      "confirmed_headcount": 5,
      "status": "partially_filled"
    }
  ]
}

Annuler un ordre ou un shift

POST /staffing-orders/{order_id}/cancel
POST /staffing-orders/{order_id}/shifts/{shift_id}/cancel

Requête:

{
  "reason": "Annulé dans le système partenaire",
  "external_cancelled_at": "2026-06-24T16:45:00Z"
}

Réponse (200):

{
  "status": "cancelled"
}

Selon l'état d'avancement du traitement, une annulation peut être immédiatement effective ou d'abord traitée comme une demande. Le statut définitif est renvoyé via le statut de l'ordre et optionnellement par webhook.

Système référent

Selon l'intégration, il est défini quel système est le système référent pour les ordres, les données de base et les shifts. L'accès en écriture n'est activé que pour les domaines pour lesquels le partenaire est défini comme système référent.