Passer au contenu principal

Documentation de l’API

David Andrade avatar
Écrit par David Andrade
Mis à jour il y a plus de 2 semaines

Point de terminaison d’URI de base de l’API

Le point de terminaison de tous nos appels d’API est le suivant : https://app.prodsmart.com/

Authentification

L’API Prodsmart utilise une autorisation de jeton simple. Commencez par créer un jeton (ou en acquérir un). Une fois que vous avez acquis votre jeton, vous pouvez l’utiliser pour accéder à d’autres ressources dans l’étendue du jeton.

Votre jeton d’authentification dure 2 heures, puis vous devez en demander un nouveau avec vos informations d’identification API.

Types de support

Les demandes avec un corps de message utilisent le format JSON standard pour définir ou mettre à jour les états des ressources.

États d’erreur

Les codes d’état de réponse HTTP communs sont utilisés.

Json non valide

Si vous recevez une réponse indiquant « JSON non valide », validez la charge utile JSON que vous utilisez sur JSONLint.

Limite de taux

Les demandes d’API sont limitées à 120 demandes par minute par société. Une fois la limite dépassée, les demandes suivantes recevront une réponse avec le code d’état HTTP 429 « Requêtes trop nombreuses ».

En outre, un en-tête indique le nombre de secondes d’attente avant de relancer la requête :

Retry-After: <delay-seconds>

Pratiques recommandées pour gérer la limite de taux :

  • Répartissez les demandes de manière uniforme dans le temps pour éviter les pics d’utilisation qui peuvent entraîner des réponses limitées.

  • Développez une logique qui utilise les informations de nouvelle tentative pour savoir quand la demande peut être renouvelée.

  • Vérifiez qu’aucune intégration inutile ne fonctionne en parallèle, car toutes les intégrations seront comptabilisées dans la limite.

Format de date

Le format des champs de date de l’API suit la représentation de la norme ISO 8601 :

  • YYYY-MM-DDThh:mm:ssZ

Dans ce format, la lettre T fonctionne comme un séparateur obligatoire, tandis que Z est un indicateur de fuseau horaire, si nécessaire. Si Z n’est pas utilisé, le fuseau horaire appliqué à la date est le même que celui défini dans votre société Prodsmart. Z correspond au fuseau horaire Zéro, car il est décalé de 0.

Exemple d’utilisation :

  • Si l’heure utilisée est 1 heure avant l’heure UTC, l’indicateur de zone doit être « +01:00 », « +0100 » ou simplement « +01 ».

  • Si le fuseau horaire d’une société est défini sur -05:00 et que la date d’envoi est au format 2020-07-20T09:15:15Z, la date s’affichera dans Prodsmart sous la forme 20/07/2020 - 04:15.

  • Si le format envoyé est 2020-07-20T09:15:15, la date s’affichera dans Prodsmart comme suit : 20/07/2020 - 09:15:15 (avec -05:00 fuseau horaire), ce qui signifie que si un utilisateur a défini le fuseau horaire sur -04:00, il verra la date au format suivant : 20/07/2020 - 10:15:15


Intégrations ERP courantes

Les scénarios habituels pour les intégrations ERP sont la synchronisation des ordres de production, des stocks et du catalogue de produits.

Ordres d’exécution

Lorsqu’un ordre d’exécution est créé côté ERP, ERP doit envoyer les données d’ordre d’exécution au format JSON à l’API de Prodsmart, à l’aide du service de création d’ordre d’exécution. S’il faut effectuer une mise à jour côté ERP quand un ordre d’exécution est créé ou mis à jour sur Prodsmart, il y a deux possibilités : soit le côté ERP peut être contacté de l’extérieur : dans ce cas, il est possible de configurer des webhooks sur Prodsmart et les webhooks seront appelés lors de la création, de la mise à jour et de la suppression des ordres d’exécution côté Prodsmart. Si le système ERP ne peut pas être contacté de l’extérieur, il doit interroger le service de liste des ordres d’exécution pour détecter les modifications.

Stocks

Généralement, le système ERP (ou WMS) est le gestionnaire des stocks. Nous fournissons donc un service (mise à jour du stock de produits) qui permet au système ERP/WMS de mettre à jour le stock actuel d’un produit sur une quantité spécifique. Parfois, le système ERP/WMS peut être averti des modifications du stock de production en observant les modifications sur les ordres d’exécution ou en utilisant des webhooks ou un service Web de stock actuel (sur demande).

Produits

Le catalogue de produits est également synchronisé, mais ce n’est pas si fréquent. Dans ce cas, le système ERP est toujours le gestionnaire et peut créer des produits et des opérations à l’aide du service de création de produits.


Webhooks

Les webhooks sont disponibles pour les événements d’ordre d’exécution à partir du menu Intégrations dans l’application. Pour utiliser cette fonction, ajoutez le rappel d’URL du point de terminaison avec les événements de notification que vous souhaitez écouter. Nous nous efforçons d’envoyer des notifications webhook aussi rapidement que les événements se produisent dans notre système. Si vous avez modifié un grand nombre d’ordres d’exécution simultanément, vous risquez d’obtenir un flot de notifications dans un court laps de temps. Actuellement, nous ne prenons pas en charge les nouvelles tentatives.

En-têtes

En-têtes Webhook

x-prodsmart-topic: "productionOrder/create"x-prodsmart-hmac-sha256: "c938fe31379c0d89b37468e1cae9e3aab2d56834"x-prodsmart-api-version: "1"x-prodsmart-webhook-uuid: "91cb972d-b476-4936-947c-4be471b9da5b"x-prodsmart-triggered-at: "2023-08-29T20:39:46.142Z"

Remarque :

  • x-prodsmart-topic : permet d’identifier la rubrique du webhook.

  • x-prodsmart-hmac-sha256 : permet de vérifier l’origine du webhook.

  • x-prodsmart-api-version : version de l’API utilisée pour envoyer le webhook.

  • x-prodsmart-webhook-uuid : permet d’identifier un webhook unique.

  • x-prodsmart-trigger-at : heure à laquelle le webhook a été déclenché.

Vérification du webhook

  • Avant de répondre avec un code d’état 200, il est essentiel de confirmer que le webhook provient de Prodsmart. Cette vérification est effectuée en calculant une signature.

  • Chaque requête webhook est fournie avec un en-tête spécifique appelé x-prodsmart-hmac-sha1, qui est codé en base64. Cet en-tête est généré à l’aide du secret d’API et des données incluses dans la requête webhook.

  • Pour vérifier l’authenticité du webhook, vous devez calculer vous-même une signature à l’aide du même secret d’API et des données fournies.

  • Une fois que vous avez calculé la signature, comparez-la à la valeur trouvée dans l’en-tête x-prodsmart-hmac-sha1 de la requête webhook entrante.

  • Si la signature calculée correspond à la valeur de l’en-tête x-prodsmart-hmac-sha1, vous pouvez être sûr que le webhook a bien été envoyé depuis Prodsmart et que vous pouvez continuer à y répondre avec un code d’état 200.

Ordres d’exécution

  • Demande (application/json)

    • Méthode : POST

    • Corps

{    "products": [        {            "product": "V23076",            "quantity-ordered": 3500,            "observations": "",            "quantity-produced": 700        }    ],    "code": "Test Production Order",    "shipping": {        "code": "shipping 45"    },    "serial-number": "",    "description": "",    "start-date": "2023-04-20T09:15:15Z",    "due-date": "2023-05-16T17:15:15Z",    "workers-assigned": [        {            "number": 120        },        {            "number": 11        },        {            "number": 10        },        {            "number": 1        }    ],    "ended": false,    "machines": [        {            "code": "A32"        },        {            "code": "F1"        }    ],    "pieces-by-box": 20,    "status": "onschedule",    "running-status": "started",    "notes": "",    "id": 1}

Remarque : l’état d’exécution sera supprimé lors de la suppression de l’ordre d’exécution.

Horloge de pointage

  • Demande (application/json)

    • Méthode : POST

    • Corps

{    "id": 932015,    "date": "2022-05-19T14:35:30.000+01:00",    "notification": "punchClock_created",    "worker": {        "number": 0    },    "entry": 1}

  • valeurs d’entrée possibles :

    • 1 - Entrée

    • 0 - Sortie

  • valeurs possibles de notification :

    • punchClock_created

    • punchClock_updated

    • punchClock_deleted

Mouvement de stock d’expédition

Mouvement de stock d’expédition créé/mis à jour

  • Demande (application/json)

    • Méthode : POST

    • Corps

[{    "product": {        "id": 222,        "code": "product-code",        "uom": "uom"    },    "lot": {        "code": "lot-code",        "expiration-date": "lot-expiration-date",        "supplier-lot": "supplier-lot-name"    },    "date": "2022-02-21T00:00:00Z",    "quantity": 10.0,    "stock-type": "out",    "comment": "comment",    "warehouse-location": {        "id": 333,        "code": "warehouse-location-code",        "warehouse": {            "id": 444,            "code": "warehouse-code"        }    },    "sales-order": {        "id": 555,        "code": "sales-order-code",        "client": {            "id": 777,            "code": "client-code"        },        "parameters": [{            "name": "parameterX",            "value": "valueX"        }]    },    "shipping": {        "id": 666,        "code": "shipping-code"    },    "worker": {        "id": 333,        "number": 0,        "name": "worker-name"    }}]

  • valeurs possibles de notification :

    • shipping_inventory_movement_created

    • shipping_inventory_movement_updated

Mouvement de stock d’expédition supprimé

  • Demande (application/json)

    • Méthode : POST

    • Corps

{  "id": 111}

  • valeurs possibles de notification :

    • shipping_inventory_movement_deleted

Mouvement de stock de réception

Mouvement de stock de réception créés/mis à jour

  • Demande (application/json)

    • Méthode : POST

    • Corps

[{    "product": {        "id": 222,        "code": "product-code",        "uom": "uom"    },    "lot": {        "code": "lot-code",        "expiration-date": "lot-expiration-date",        "supplier-lot": "supplier-lot-name"    },    "date": "2022-02-21T00:00:00Z",    "quantity": 10.0,    "stock-type": "in",    "comment": "comment",    "warehouse-location": {        "id": 333,        "code": "warehouse-location-code",        "warehouse": {            "id": 444,            "code": "warehouse-code"        }    },    "purchase-order": {        "id": 555,        "code": "purchase-order-code",        "supplier": "supplier-code",        "parameters": [{            "name": "parameterX",            "value": "valueX"        }]    },    "receiving": {        "id": 666,        "code": "receiving-code"    },    "worker": {        "id": 333,        "number": 0,        "name": "worker-name"    }}]

  • valeurs possibles de notification :

    • receiving_inventory_movement_created

    • receiving_inventory_movement_updated

Mouvement de stock de réception supprimé

  • Demande (application/json)

    • Méthode : POST

    • Corps

{  "id": 111}

  • valeurs possibles de notification :

    • receiving_inventory_movement_deleted

Mouvement de stock interne

Mouvement de stock interne créé/mis à jour

  • Demande (application/json)

    • Méthode : POST

    • Corps

[{    "product": {        "id": 222,        "code": "product-code",        "uom": "uom"    },    "lot": {        "code": "lot-code",        "expiration-date": "lot-expiration-date",        "supplier-lot": "supplier-lot-name"    },    "date": "2022-02-21T00:00:00Z",    "quantity": 10.0,    "stock-type": "in",    "comment": "comment",    "warehouse-location": {        "id": 333,        "code": "warehouse-location-code",        "warehouse": {            "id": 444,            "code": "warehouse-code"        }    },    "worker": {        "id": 333,        "number": 0,        "name": "worker-name"    }}]

  • valeurs possibles de notification :

    • internal_inventory_movement_created

    • internal_inventory_movement_updated

Mouvement de stock interne supprimé

  • Demande (application/json)

    • Méthode : POST

    • Corps

{  "id": 111}

  • valeurs possibles de notification :

    • internal_inventory_movement_deleted

Mouvement de mise à disposition de matériaux

Mise à disposition de matériaux créée/mise à jour

  • Demande (application/json)

    • Méthode : POST

    • Corps

[{    "product": {        "id": 222,        "code": "product-code",        "uom": "uom"    },    "production-order": {        "id": 333,        "code": "production-order-code"    },    "lot": {        "code": "lot-code",        "expiration-date": "lot-expiration-date",        "supplier-lot": "supplier-lot-name"    },    "date": "2022-02-21T00:00:00Z",    "quantity": 10.0,    "warehouse-location": {        "id": 333,        "code": "warehouse-location-code",        "warehouse": {            "id": 444,            "code": "warehouse-code"        }    },    "worker": {        "id": 333,        "number": 0,        "name": "worker-name"    }}]

  • valeurs possibles de notification :

    • material_staging_created

    • material_staging_updated

Mise à disposition de matériau supprimée

  • Demande (application/json)

    • Méthode : POST

    • Corps

{  "id": 111}

  • valeurs possibles de notification :

    • material_staging_deleted

Lot

Lot créé/mis à jour

  • Demande (application/json)

    • Méthode : POST

    • Corps

[{    "code": "lot-code",    "creation-date": "2022-02-21T00:00:00Z",    "expiration-date": "2022-02-21T00:00:00Z",    "supplier-lot": "supplier-lot-name",    "product": {        "id": 222,        "code": "product-code",        "uom": "uom"    }}]

  • valeurs possibles de notification :

    • lot_created

    • lot_updated

Lot supprimé

  • Demande (application/json)

    • Méthode : POST

    • Corps

{  "id": 111}

  • valeurs possibles de notification :

    • lot_deleted

Temps d’arrêt

Temps d’arrêt créé/mis à jour/supprimé

  • Demande (application/json)

    • Méthode : POST

    • Corps

{  "id": 1,  "start-time": "2000-01-01T00:00:00.000+01:00",  "end-time": "2099-12-31T23:59:59.999+01:00",  "started-by": {},  "closed-by": {    "number": 0  },  "workers": [    {      "number": 0    }  ],  "machines": [],  "product": "",  "production-order": "",  "checked-out": true,  "downtime-type": "downtime1 type",  "time-spent": "08:00:00",  "event-type": "downTime_created"}

  • valeurs possibles de notification :

    • downTime_created

    • downTime_updated

    • downTime_deleted

Canaux de flux de changements

Si, pour quelque raison que ce soit, vous ne pouvez pas utiliser les webhooks, nous proposons actuellement une alternative sous la forme d’une pile de changements qui stockera les changements survenus dans les dernières 24 heures, ou depuis que vous avez demandé les changements via le service Web que nous fournissons. Pour utiliser cette fonction, vous devez créer un canal dans le menu Intégrations (https://app.prodsmart.com/admin/integrations). Vous pouvez créer jusqu’à 3 canaux par organisation.

Il existe six types de canaux de changements :

  • DOWN_TIME

  • PRODUCT

  • PRODUCTION

  • PRODUCTION_ORDER

  • PUNCH_CLOCK

  • STOCK

Obtenir les modifications

GET /api/changes/{channel}{?access_token}

Quand vous appelez ce service, vous obtenez une liste des entités qui ont changé soit parce qu’elles ont été créées/mises à jour/supprimées, soit parce que leur état a changé. Vous recevez un tableau avec l’état actuel des entités (organisées des changements les plus anciens aux plus récents), avec un maximum de 25 par appel de service. Les entités que vous obtenez du service sont supprimées de la pile (jusqu’à ce qu’elles soient mises à jour). Le service renvoie un tableau vide (« [] ») s’il n’y a pas de changements.

Exemples d’URI

GET /api/changes/channel?access_token=

Paramètres d’URI

canal

chaîne (obligatoire)

le canal auquel accéder

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

opérateurs

booléen (facultatif)

afficher la liste des opérateurs sur la réponse du canal des ordres d’exécution

Request

Content-Type: application/json

TEMPS D’ARRÊT

[    {        "id": 1435048,        "start-time": "2022-04-22T14:47:00.000+01:00",        "end-time": "2022-04-23T00:00:00.000+01:00",        "started-by": {},        "closed-by": {            "number": 1        },        "workers": [            {                "number": 1            }        ],        "machines": [],        "product": "",        "production-order": "",        "checked-out": true,        "downtime-type": "Maintenance",        "time-spent": "09:13:00",        "event-type": "downTime_deleted",    }]

Remarque : le champ de type événement n’apparaît que si vous supprimez un temps d’arrêt.

ORDRES D’EXÉCUTION

[    {        "products": [            {                "product": "RN2",                "quantity-ordered": 30.0,                "observations": "",                "quantity-produced": 0.0            }        ],        "code": "Production Order 123",        "description": "",        "shipping": {},        "start-date": "2022-04-21T00:00:00.000+01:00",        "due-date": "2022-04-28T00:00:00.000+01:00",        "ended": false,        "machines": [],        "notes": "",        "is-active": true,        "running-status": "notstarted",        "status": "onschedule",        "material-staging-complete": false,        "id": 1379919    }]

Remarque : la valeur du champ d’état d’exécution est supprimée lorsqu’un ordre d’exécution est supprimé.

PRODUITS

[    {        "code": "V23076",        "name": "V23076",        "observations": "",        "section": null,        "unit-cost": null,        "unit-price": null,        "families": [],        "operations": [],        "components": [],        "custom-fields": [],        "notification": null,        "serializable": null,        "shipping-package-types": [],        "external-stock": null,        "stock-max": null,        "min-quantity-reorder": null,        "quantity-multiple": null,        "scrap-allowance": null,        "shelf-life": null,        "parameters": []    }]

Remarque : la valeur product_deleted du champ de notification est supprimée lorsque le produit est supprimé.

ENREGISTREMENTS DE PRODUCTION ¶

[    {        "production-order": {            "code": "P1 - Week 14",            "id": 3641        },        "operation": {            "code": "CUT3",            "product": "P1"        },        "worker": {            "number": 6        },        "machine": {            "code": "WJC"        },        "quantity": 0.0,        "checked-out": false,        "produced-waste": [],        "consumptions": [],        "total-time-factor": 1.0,        "rework": false,        "work-time": "00H00m00s",        "start-time": "2022-04-22T14:43:00.000+01:00",        "end-time": "2022-04-22T14:43:00.000+01:00",        "status": "deleted",        "show-check-in-checklist-and-c-f": false,        "id": 12952533    }]

Remarque : le champ d’état ne s’affiche que si un enregistrement de production est supprimé.

HORLOGES DE POINTAGE

[  {      "id": 932015,      "date": "2022-05-19T14:35:30.000+01:00",      "notification": "punchClock_deleted",      "worker": {          "number": 0      },      "entry": 1  }]

Remarque : le champ de notification n’apparaît que si une entrée d’horloge de pointage est supprimée.

STOCK

[    {        "product-code": "P1",        "stock": 2395.0,        "lot": [            {                "code": "Lot 0086",                "stock": 500.0            }        ]    }]

Fournisseur

Ressources de fournisseur de l’API Prodsmart.

FOURNISSEUR

Un seul objet Fournisseur.

La ressource fournisseur possède les attributs suivants :

  • id (fourni)

  • code (chaîne, obligatoire, unique) - code fournisseur

  • name (chaîne, obligatoire) - nom du fournisseur

  • number (chaîne, facultatif) - numéro de TVA fournisseur

  • expiration-date (date, facultatif, format AAAA-MM-JJJJ:MM:SSZ) - date d’expiration du fournisseur

  • addresses (tableau, facultatif)

  • code (chaîne, obligatoire, unique) - code d’adresse

  • name (chaîne, facultatif) - nom d’adresse

  • address (chaîne, obligatoire) - ligne d’adresse

  • city (chaîne, facultatif) - ville d’adresse

  • post-code (chaîne, facultatif) - code postal de l’adresse

  • state (chaîne, facultatif) - état/région de l’adresse

  • country (chaîne, obligatoire) - code pays de l’adresse

  • default (booléen, facultatif - valeur par défaut : false) : si la valeur est true, il s’agit de l’adresse par défaut du fournisseur

  • contacts (tableau, facultatif)

  • numéro de téléphone (chaîne, obligatoire en l’absence d’e-mail) - numéro de téléphone du contact

  • email (chaîne, obligatoire s’il n’y a pas de numéro de téléphone) - adresse e-mail de contact

  • name (chaîne, facultatif) - nom du contact

  • default (booléen, facultatif - valeur par défaut : false) : si la valeur est true, il s’agit du contact par défaut du fournisseur

Règles d’adresse/de contact par défaut :

  • Les contacts et les adresses ne peuvent avoir qu’un seul contact ou une seule adresse par défaut, respectivement.

  • Si un fournisseur possède des adresses, l’une d’entre elles doit être la valeur par défaut.

  • Si un fournisseur possède des contacts, l’un d’entre eux doit être celui par défaut.

  • Lors de la création/mise à jour d’un fournisseur, si aucune adresse/contact par défaut n’est indiqué, le premier contact/la première adresse est le contact par défaut.

Créer un fournisseur

POST /api/suppliers{?access_token}

Statut : disponible

Pour créer un fournisseur, fournissez un hachage JSON des attributs du nouveau fournisseur. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

POST /api/suppliers?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{ "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "2020-01-01T00:00:00Z", "contacts": [ { "email": "supplier@supplier.com", "phone-number": "12345678", "name": "Contact1", "default": true }, { "email": "supplier2@supplier2.com", "phone-number": "123456789", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "city": "Lisbon", "address": "Address 1 Street", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "city": "San Francisco", "address": "Address 1 Street", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Réponse 201

Corps

{ "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Liste des fournisseurs

GET /api/suppliers{?access_token}

Pour afficher la liste des fournisseurs. Cette action nécessite un access_token avec une étendue productions_write. Ce service est paginé et renvoie 25 fournisseurs par page.

Exemples d’URI

GET /api/suppliers?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

ID

numéro (facultatif)

répertorier les fournisseurs filtrés par id

code

chaîne (facultatif)

répertorier les fournisseurs filtrés par code

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

[ { "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }, { "id": 987356124, "code": "Supplier2", "name": "Supplier2", "number": "213457", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier3@supplier3.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier4@supplier4.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address3", "name": "Address3", "address": "Address 3 Street", "city": "Paris", "post-code": "111-111", "state": "Paris", "country": "FR", "default": true }, { "code": "Address4", "name": "Address4", "address": "Address 4 Street", "city": "Madrid", "post-code": "111-111", "state": "Madrid", "country": "ES", "default": false } ] } ]

Réponse 400Afficher

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Récupérer un fournisseur

GET /api/suppliers/{id}{?access_token}

Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/suppliers/id?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

ID

numérique (obligatoire)

ID du fournisseur

Demande

En-têtes

Content-Type: application/json

Réponse 201

Corps

{ "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Mettre à jour un fournisseur

PUT /api/suppliers/{id}{?access_token}

Pour mettre à jour un fournisseur, fournissez un hachage JSON des attributs du nouveau fournisseur.

Contacts

  • Les contacts de fournisseur indiqués remplaceront les contacts actuels.

  • Si un contact portant le même nom qu’un contact existant est indiqué, les valeurs du contact portant ce nom seront remplacées par celles indiquées.

  • Si aucun contact n’est indiqué, les contacts existants sont supprimés.

Adresses

  • Les adresses indiquées remplaceront les adresses actuelles.

  • Si une adresse avec le même code qu’une adresse existante est indiquée, les valeurs de l’adresse avec ce code seront remplacées par celles indiquées.

  • Si aucune adresse n’est indiquée, les adresses existantes sont supprimées.

  • Si une adresse est associée à des entités, la demande échouera, car l’adresse ne peut pas être supprimée.

Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

PUT /api/suppliers/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID client

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{ "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "2020-01-01T00:00:00Z", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Réponse 201

Corps

{ "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Supprimer un fournisseur

DELETE /api/suppliers/{id}{?access_token}

Exemples d’URI

DELETE /api/suppliers/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID du fournisseur

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Réponse 204

Corps

Supplier was deleted

Réponse 412

Corps

It's not possible to delete this supplier. It has dependent entities.

Client

Ressources client de l’API Prodsmart.

CLIENT

Un seul objet Client.

La ressource Client possède les attributs suivants :

  • id (fourni)

  • code (chaîne, obligatoire, unique) - code client

  • name (chaîne, obligatoire) - nom du client

  • number (chaîne, facultatif) - numéro client

  • phone-number (chaîne, facultatif) - numéro de téléphone du client

  • email (chaîne, facultatif) - email du client

  • addresses (tableau, facultatif)

  • code (chaîne, obligatoire, unique) - code d’adresse

  • name (chaîne, facultatif) - nom d’adresse

  • address (chaîne, obligatoire) - ligne d’adresse

  • city (chaîne, facultatif) - ville d’adresse

  • post-code (chaîne, facultatif) - code postal de l’adresse

  • state (chaîne, facultatif) - état/région de l’adresse

  • country (chaîne, obligatoire) - code pays de l’adresse

  • default (booléen, facultatif - valeur par défaut : false) : si la valeur est true, il s’agit de l’adresse par défaut du client.

  • contacts (tableau, facultatif)

  • numéro de téléphone (chaîne, obligatoire en l’absence d’e-mail) - numéro de téléphone du contact

  • email (chaîne, obligatoire s’il n’y a pas de numéro de téléphone) - adresse e-mail de contact

  • name (chaîne, facultatif) - nom du contact

  • default (booléen, facultatif - valeur par défaut : false) : si la valeur est true, il s’agit du contact par défaut du client.

Règles d’adresse/de contact par défaut :

  • Les contacts et les adresses ne peuvent avoir qu’un seul contact ou une seule adresse par défaut, respectivement.

  • Si un client possède des adresses, l’une d’entre elles doit être la valeur par défaut.

  • Si un client possède des contacts, l’un d’entre eux doit être celui par défaut.

  • Lors de la création/mise à jour d’un client, si aucune adresse/aucun contact par défaut n’est indiqué, le premier contact/la première adresse est le contact/l’adresse par défaut.

Créer un client

POST /api/clients{?access_token}

Pour créer un client, fournissez un hachage JSON des attributs du nouveau client. Cette action nécessite un access_token avec une étendue productions_write. Pour l’instant, il n’est possible d’enregistrer qu’un seul client. Si la demande est un tableau au lieu d’une seule ressource, tous les éléments du tableau seront enregistrés.

Exemples d’URI

POST /api/clients?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{ "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "2020-01-01T00:00:00Z", "contacts": [ { "email": "supplier@supplier.com", "phone-number": "12345678", "name": "Contact1", "default": true }, { "email": "supplier2@supplier2.com", "phone-number": "123456789", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "city": "Lisbon", "address": "Address 1 Street", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "city": "San Francisco", "address": "Address 1 Street", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Réponse 201

Corps

{ "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Répertorier les clients

GET /api/clients{?access_token}

Pour répertorier les clients. Cette action nécessite un access_token avec une étendue productions_write. Ce service est paginé et renvoie 25 clients par page.

Exemples d’URI

GET /api/clients?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

ID

numéro (facultatif)

répertorier les clients filtrés par id

code

chaîne (facultatif)

répertorier les clients filtrés par code

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

[ { "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }, { "id": 987356124, "code": "Supplier2", "name": "Supplier2", "number": "213457", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier3@supplier3.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier4@supplier4.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address3", "name": "Address3", "address": "Address 3 Street", "city": "Paris", "post-code": "111-111", "state": "Paris", "country": "FR", "default": true }, { "code": "Address4", "name": "Address4", "address": "Address 4 Street", "city": "Madrid", "post-code": "111-111", "state": "Madrid", "country": "ES", "default": false } ] } ]

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Récupérer un client

GET /api/clients/{id}{?access_token}

Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/clients/id?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

ID

numérique (obligatoire)

ID client

Demande

En-têtes

Content-Type: application/json

Réponse 201

Corps

{ "id": 987356123, "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Mettre à jour un client

PUT /api/clients/{id}{?access_token}

Pour mettre à jour un client, fournissez un hachage JSON des attributs du nouveau client.

Contacts

  • Les contacts de fournisseur indiqués remplaceront les contacts actuels.

  • Si un contact portant le même nom qu’un contact existant est indiqué, les valeurs du contact portant ce nom seront remplacées par celles indiquées.

  • Si aucun contact n’est indiqué, les contacts existants sont supprimés.

Adresses

  • Les adresses indiquées remplaceront les adresses actuelles.

  • Si une adresse avec le même code qu’une adresse existante est indiquée, les valeurs de l’adresse avec ce code seront remplacées par celles indiquées.

  • Si aucune adresse n’est indiquée, les adresses existantes sont supprimées.

  • Si une adresse est associée à des entités, la demande échouera, car l’adresse ne peut pas être supprimée.

Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

PUT /api/clients/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID client

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "code": "Supplier",  "name": "Supplier",  "number": "213456",  "expiration-date": "2020-01-01T00:00:00Z",   "contacts": [    {      "phone-number": "12345678",      "email": "supplier@supplier.com",      "name": "Contact1",      "default": true    },    {      "phone-number": "123456789",      "email": "supplier2@supplier2.com",      "name": "Contact2",      "default": false    }  ],  "addresses":[    {      "code": "Address1",      "name": "Address1",      "address": "Address 1 Street",      "city": "Lisbon",      "post-code": "111-111",      "state": "Lisbon",      "country": "PT",      "default": true    },    {      "code": "Address2",      "name": "Address2",       "address": "Address 1 Street",      "city": "San Francisco",      "post-code": "111-111",      "state": "California",      "country": "US",      "default": false    }  ]}

Réponse 201

Corps

{ "code": "Supplier", "name": "Supplier", "number": "213456", "expiration-date": "01/01/2020", "contacts": [ { "phone-number": "12345678", "email": "supplier@supplier.com", "name": "Contact1", "default": true }, { "phone-number": "123456789", "email": "supplier2@supplier2.com", "name": "Contact2", "default": false } ], "addresses": [ { "code": "Address1", "name": "Address1", "address": "Address 1 Street", "city": "Lisbon", "post-code": "111-111", "state": "Lisbon", "country": "PT", "default": true }, { "code": "Address2", "name": "Address2", "address": "Address 1 Street", "city": "San Francisco", "post-code": "111-111", "state": "California", "country": "US", "default": false } ] }

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Supprimer un client

DELETE /api/clients/{id}{?access_token}

Exemples d’URI

DELETE /api/clients/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID client

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Réponse 204

Corps

Client was deleted

Réponse 412

Corps

It's not possible to delete this client. It has dependent entities.

Commande client

Ressources ClientOrder de l’API Prodsmart.

COMMANDE CLIENT

Un seul objet de commande client. La ressource Commande client est l’une des ressources les plus importantes de l’API Prodsmart.

La ressource Commande client possède les attributs suivants :

  • id (fourni)

  • code (chaîne, obligatoire) - code commande client

  • client (chaîne, facultatif) - code client

  • observations (chaîne, facultatif) - observations de commande client

  • produits (tableau, obligatoire, non vide)

    • code (chaîne, obligatoire, unique) - code produit

    • quantity (double, obligatoire, >0) - quantité commandée

    • due-date (date, facultatif, format AAAA-MM-JJJJ:MM:SSZ) - date à laquelle l’expédition est due

    • request-date (date, facultatif, format AAAA-MM-DDTHH:MM:SSZ) - date à laquelle l’expédition est demandée

    • emplacement (chaîne, facultatif) - emplacement, si multisite

    • price (double, facultatif) - prix du produit

  • paramètres (chaîne, facultatif) - contient un attribut spécifique à la commande client

Créer une commande client

POST /api/client-order/{?access_token}

Pour créer une commande client, fournissez un hachage JSON des attributs de la nouvelle commande client. Cette action nécessite un access_token avec une étendue productions_write. Pour l’instant, il n’est possible d’enregistrer qu’une seule commande client. Si la demande est un tableau au lieu d’une seule ressource, tous les éléments du tableau seront enregistrés.

Exemples d’URI

POST /api/client-order/?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "observations": "Ready next week",  "billing-address": "San Francisco",  "delivery-address": "Delivery address code",  "location": "location code",  "products": [    {      "code": "V23076",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3,      "delivery-address":"San Francisco"    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price":502,      "delivery-address":"Los Angeles"    }  ],  "parameters": [    {      "name": "Sales Order Type",      "value": "Regular"    }  ]}

Réponse 201

Corps

{  "id": 987356123,  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "billing-address":"San Francisco",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3,      "delivery-address":"San Francisco"    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price":502,      "delivery-address":"Los Angeles"    }  ],  "parameters": [    {      "name": "Sales Order Type",      "value": "Regular"    }  ]}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Répertorier les commandes client

GET /api/client-order/{?access_token}

Pour répertorier les commandes client. Plusieurs paramètres seront traités comme une condition AND. Cette action nécessite un access_token avec une étendue productions_write. Ce service est paginé et renvoie 25 commandes client par page.

Exemples d’URI

GET /api/client-order/?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

due-date-before

date (facultatif)

répertorier les commandes client dont la date d’échéance est antérieure à

due-date-after

date (facultatif)

répertorier les commandes client dont la date d’échéance est postérieure à

client

chaîne (facultatif)

code machine

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

[  {    "id": 987356123,    "code": "CO123 - Week 47",    "creation-date": "2022-04-19T08:30:01Z",    "client": "Client X",    "observations": "Ready next week",    "products": [      {        "code": "V23076",        "name": "Vessel",        "quantity": 100,        "due-date": "2019-08-16T17:15:15Z",        "requested-date": "2019-01-16T15:19:54Z",        "price": 200.3      },      {        "code": "V23077",        "quantity": 99,        "due-date": "2016-08-16T17:15:15Z",        "requested-date": "2019-01-16T15:19:54Z"      }    ],    "parameters": [      {        "name": "Sales Order Type",        "value": "Regular"      }    ]  },  {    "id": 987356124,    "code": "CO123 - Week 48",    "client": "Client X",    "observations": "",    "products": [      {        "code": "V23076",        "name": "Vessel",        "quantity": 70,        "due-date": "2019-08-23T18:00:00Z",        "requested-date": "2019-01-16T15:19:54Z",        "price": 140      },      {        "code": "V23077",        "quantity": 69,        "due-date": "2016-08-23T18:00:00Z",        "requested-date": "2019-01-16T15:19:54Z"      }    ],    "parameters": [      {        "name": "Sales Order Type",        "value": "Priority"      }    ]  }]

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Récupérer une commande client

GET /api/client-order/{id}{?access_token}

Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/client-order/id?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

ID

numérique (obligatoire)

ID de commande client

Demande

En-têtes

Content-Type: application/json

Réponse 201

Corps

{  "id": 987356123,  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "name": "Vessel",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ],  "parameters": [    {      "name": "Sales Order Type",      "value": "Priority"    }  ]}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Mettre à jour une commande client

PUT /api/client-order/{?access_token}

Pour mettre à jour une commande client, fournissez un hachage JSON des attributs de la nouvelle commande client. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

PUT /api/client-order/?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "observations": "Ready next week",  "billing-address": "San Francisco",  "location": "location code",  "products": [    {      "code": "V23076",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3,      "billing-address": "San Francisco"    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "billing-address": "Los Angeles"    }  ]}

Réponse 201

Corps

{  "id": 987356123,  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "billing-address": "San Francisco",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "name": "Vessel",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3,      "billing-address": "San Francisco"    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "billing-address": "Los Angeles"    }  ]}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Supprimer une commande client

DELETE /api/client-order/{id}{?access_token}

Exemples d’URI

DELETE /api/client-order/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID de commande client

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Réponse 204

Corps

Client order was deleted

Réponse 409

Corps

Client order already has production orders created or other entities associated, cannot be removed.

Bon de commande

Ressources Bon de commande de l’API Prodsmart.

BON DE COMMANDE

Un seul objet bon de commande. La ressource Bon de commande est l’une des ressources les plus importantes de l’API Prodsmart.

La ressource Commande comporte les attributs suivants :

  • id (fourni)

  • code (chaîne, obligatoire) - code de commande fournisseur

  • supplier (chaîne, facultatif) - code de fournisseur

  • billing-address (chaîne, facultatif) - adresse de facturation

  • observations (chaîne, facultatif) - observations de commande fournisseur

  • products (tableau, obligatoire, non vide)

    • code (chaîne, obligatoire, unique) - code produit

    • quantity (double, obligatoire, >0) - demande de quantité

    • due-date (date, facultatif, format AAAA-MM-JJJJ:MM:SSZ) - date à laquelle la réception est due

    • request-date (date, facultatif, format AAAA-MM-DDTHH:MM:SSZ) - date à laquelle la réception est demandée

    • cost (double, facultatif) - coût du produit

    • uom (chaîne, facultatif) - unité de mesure du produit

  • delivery-address (chaîne, facultatif) - adresse de livraison de réception

  • parameters (chaîne, facultatif) - paramètres de commande fournisseur

  • approval-status (chaîne, facultatif) - projet, en cours de validation, approuvé, confirmé, rejeté

Créer un bon de commande

POST /api/purchase-orders/{?access_token}

Pour créer un bon de commande, fournissez un hachage JSON des attributs du nouveau bon de commande. Cette action nécessite un access_token avec une étendue productions_write. Pour l’instant, il n’est possible d’enregistrer qu’un seul bon de commande. Si la demande est un tableau au lieu d’une seule ressource, tous les éléments du tableau seront enregistrés.

Exemples d’URI

POST /api/purchase-orders/?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "code": "PO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "supplier": "Supplier X",  "billing-address": "Lisbon",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "uom": "Box",      "cost": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2023-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ],  "approval-status": "draft",  "active": true}

Réponse 201

En-têtes

Content-Type: application/json

Corps

{  "code": "PO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "supplier": "Supplier X",  "billing-address": "Lisbon",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "uom": "Box",      "cost": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2023-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ],  "approval-status": "draft",  "active": true}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Récupérer un bon de commande

GET /api/purchase-orders/{id}{?access_token}

Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/purchase-orders/id?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

ID

numérique (obligatoire)

ID de bon de commande

Demande

En-têtes

Content-Type: application/json

Réponse 201

Corps

{  "id": 987356123,  "code": "PO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "supplier": "Supplier X",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "name": "Vessel",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "cost": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2023-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ]}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Mettre à jour un bon de commande

PUT/api/purchase-orders/{id}{?access_token}

Pour mettre à jour un bon de commande, fournissez un hachage JSON des attributs du nouveau bon de commande. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

PUT /api/purchase-orders/id?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

ID

numérique (obligatoire)

ID de bon de commande

Demande

En-têtes

Content-Type: application/json

Corps

{  "id": 987356123,  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "name": "Vessel",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ]}

Réponse 201

Corps

{  "id": 987356123,  "code": "CO123 - Week 47",  "creation-date": "2022-04-19T08:30:01Z",  "client": "Client X",  "observations": "Ready next week",  "products": [    {      "code": "V23076",      "name": "Vessel",      "quantity": 100,      "due-date": "2019-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z",      "price": 200.3    },    {      "code": "V23077",      "quantity": 99,      "due-date": "2016-08-16T17:15:15Z",      "requested-date": "2019-01-16T15:19:54Z"    }  ]}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Supprimer un bon de commande

DELETE /api/purchase-orders/{id}{?access_token}

Exemples d’URI

DELETE /api/purchase-orders/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID de bon de commande

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Réponse 204

Corps

Purchase order was deleted

Réponse 409

Corps

Purchase order already has production orders created or other entities associated, cannot be removed.

Répertorier les bons de commande

GET /api/purchase-orders{?access_token}

Pour répertorier les bons de commande. Plusieurs paramètres seront traités comme une condition AND. Cette action nécessite un access_token avec une étendue productions_write. Ce service est paginé et renvoie 25 commandes client par page.

Exemples d’URI

GET /api/purchase-orders?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

ID

numéro (facultatif)

répertorier les bons de commande filtrés par id de bon de commande

code

chaîne (facultatif)

répertorier les bons de commande filtrés par code de bon de commande

due-date-before

date (facultatif)

répertorier les bons de commande dont la date d’échéance est antérieure à

due-date-after

date (facultatif)

répertorier les bons de commande dont la date d’échéance est postérieure à

fournisseur

chaîne (facultatif)

répertorier les bons de commande filtrés par code fournisseur

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

[  {    "id": 987356123,    "code": "PO123 - Week 47",    "creation-date": "2023-04-19T08:30:01Z",    "supplier": "Supplier X",    "observations": "Ready next week",    "products": [      {        "code": "V23076",        "name": "Vessel",        "quantity": 100,        "due-date": "2023-08-16T17:15:15Z",        "requested-date": "2023-01-16T15:19:54Z",        "cost": 200.3      },      {        "code": "V23077",        "quantity": 99,        "due-date": "2023-08-16T17:15:15Z",        "requested-date": "2023-01-16T15:19:54Z"      }    ]  },  {    "id": 987356124,    "code": "PO123 - Week 48",    "supplier": "Supplier X",    "observations": "",    "products": [      {        "code": "V23076",        "name": "Vessel",        "quantity": 70,        "due-date": "2023-08-23T18:00:00Z",        "requested-date": "2023-01-16T15:19:54Z",        "cost": 140      },      {        "code": "V23077",        "quantity": 69,        "due-date": "2023-08-23T18:00:00Z",        "requested-date": "2023-01-16T15:19:54Z"      }    ]  }]

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Ordre d’exécution

Ressources Ordre d’exécution de l’API Prodsmart.

ORDRE D’EXÉCUTION

Un seul objet ordre d’exécution. La ressource Ordre d’exécution est l’une des ressources les plus importantes de l’API Prodsmart. Elle représente l’ordre de gestion de produire une quantité prédéfinie de produits au cours d’une période définie par des opérateurs définis.

La ressource Ordre d’exécution possède les attributs suivants :

  • id (fourni)

  • code (chaîne, obligatoire) - code de l’ordre d’exécution

  • start-date (date, obligatoire, format AAAA-MM-JJJ:MM:SSZ) - date à laquelle le démarrage de cet ordre d’exécution est planifié

  • due-date (date, obligatoire, format AAAA-MM-JJJ:MM:SSZ) - date d’échéance de cet ordre d’exécution

  • products (tableau, obligatoire, non vide) - produits et quantités commandés

  • product (chaîne, obligatoire, unique) - code produit

  • quantity-ordered (entier, obligatoire, >0) - quantité commandée

  • observations (facultatif) - remarque concernant ce produit

  • quantity-produced (entier, fourni, >0) - quantité produite

  • description (facultatif) - description de cet ordre d’exécution

  • shipping (facultatif) - code expédition de cet ordre

  • workers-assigned (tableau, facultatif) -

  • number - numéro d’opérateur

  • machines (tableau, facultatif)

  • code - code de machine

  • serial-number (facultatif)

  • description (facultatif)

  • notes (facultatif)

  • status (fourni) : planifié (avant start_date et complétude = 0), non planifié (avant end_date et complétude < 100 %), différé (après end_date et complétude < 100 %), terminé (complétude >= 100 %)

  • running-status (fourni) - non démarré (aucune production), démarré (avec des productions), fermé (manuellement fermé ou fermé après complétude), archivé (manuellement archivé)

L’ID d’état est attribué par l’API Prodsmart au moment de la création.

Récupérer un ordre d’exécution

GET /api/production-orders/{id}{?access_token}

Pour récupérer un ordre d’exécution, il vous suffit d’effectuer une demande GET avec l’ID de l’ordre d’exécution. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/production-orders/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID de l’ordre d’exécution

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

opérateurs

booléen (facultatif)

afficher la liste des opérateurs lors de la réponse

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

{  "products": [    {      "product": "V23076",      "quantity-ordered": 3500,      "observations": "",      "quantity-produced": 700    }  ],  "code": "V23076 - Week 33/34",  "shipping": {    "code": "shipping 45"  },  "start-date": "2023-04-20T09:15:15Z",  "due-date": "2023-05-16T17:15:15Z",  "description": "Woodworks Ltd.",  "ended": false,  "custom-fields": [    {      "Order Type": "No changeover"    }  ],  "machines": [    {      "code": "A32"    }  ],  "pieces-by-box": 20,  "is-active": true,  "status": "onschedule",  "running-status": "started",  "notes": "",  "location":    {      "id": "location id",      "code": "location code",      "name": "location name"    },  "material-staging-complete": true,  "id": 3990}

Mettre à jour/remplacer un ordre d’exécution

PUT /api/production-orders/{id}{?access_token}

Pour mettre à jour un ordre d’exécution, il suffit d’effectuer une demande PUT avec l’ID de l’ordre d’exécution. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

PUT /api/production-orders/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID de l’ordre d’exécution

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

opérateurs

booléen (facultatif)

afficher la liste des opérateurs lors de la réponse

Demande

En-têtes

Content-Type: application/json

Corps

{  "products": [    {      "product": "V23076",      "quantity-ordered": 4000,      "observations": "",      "quantity-produced": 700    }  ],  "code": "V23076 - Week 33/34",  "shipping": {    "code": "shipping 45"  },  "start-date": "2023-04-20T09:15:15Z",  "due-date": "2023-05-16T17:15:15Z",  "description": "Woodworks Ltd.",  "ended": false,  "custom-fields": [    {      "Order Type": "No changeover"    }  ],  "machines": [    {      "code": "A32"    }  ],  "pieces-by-box": 20,  "is-active": true,  "status": "onschedule",  "running-status": "started",  "notes": "",  "location": "location code",  "material-staging-complete": true,  "id": 3990}

Réponse 200

Corps

{  "products": [    {      "product": "V23076",      "quantity-ordered": 4000,      "observations": "",      "quantity-produced": 700    }  ],  "code": "V23076 - Week 33/34",  "shipping": {    "code": "shipping 45"  },  "start-date": "2023-04-20T09:15:15Z",  "due-date": "2023-05-16T17:15:15Z",  "description": "Woodworks Ltd.",  "ended": false,  "custom-fields": [    {      "Order Type": "No changeover"    }  ],  "machines": [    {      "code": "A32"    }  ],  "pieces-by-box": 20,  "is-active": true,  "status": "onschedule",  "running-status": "started",  "notes": "",  "location":    {      "id": "location id",      "code": "location code",      "name": "location name"    },  "material-staging-complete": true,  "id": 3990}

Supprimer un ordre d’exécution

DELETE /api/production-orders/{id}{?access_token}

Exemples d’URI

DELETE /api/production-orders/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID de l’ordre d’exécution

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Réponse 204

Corps

Production order was deleted

Créer un ordre d’exécution

POST /api/production-orders/{?access_token}

Pour créer un ordre d’exécution, fournissez un hachage JSON des attributs du nouvel ordre d’exécution. Cette action nécessite un access_token avec une étendue productions_write. Pour l’instant, un seul ordre d’exécution peut être enregistré. Si la demande est un tableau au lieu d’une seule ressource, tous les éléments du tableau seront enregistrés.

Exemples d’URI

POST /api/production-orders/?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

opérateurs

booléen (facultatif)

afficher la liste des opérateurs lors de la réponse

Demande

En-têtes

Content-Type: application/json

Corps

{  "products": [    {      "product": "productExample",      "quantity-ordered": 4500,      "observations": ""    }  ],  "code": "exampleCode",  "shipping": "shippingExample",  "serial-number": "",  "description": "",  "start-date": "2023-07-20T09:15:15Z",  "due-date": "2023-08-16T17:15:15Z",  "parameters": [    {      "name": "Custom Field Name",      "value": "123"    },    {      "name": "Custom Field Name 2",      "value": "456"    }  ],  "workers-assigned": [    {      "number": 1    },    {      "number": 3    }  ],  "worker-groups": [    {      "name": "All"    }  ],  "ended": false,  "machines": [    {      "code": "exampleMachine"    },    {      "code": "F1"    }  ],  "pieces-by-box": 20,  "notes": "",  "location": "location code",  "active": true}

Réponse 201

Corps

{    "products": [      {        "product": "productExample",        "quantity-ordered": 4500,        "observations": "",        "quantity-produced": 0      }    ],    "code": "exampleCode",    "shipping": "shippingExample",    "serial-number": "",    "description": "",    "start-date": "2023-07-20T09:15:15Z",    "due-date": "2023-08-16T17:15:15Z",    "workers-assigned": [      { "number": 1 },      { "number": 2 }      { "number": 3 }      { "number": 4 }    ],    "ended": false,    "machines": [      {"code": "exampleMachine"},      {"code": "F1"}    ],    "pieces-by-box": 20,    "status": "scheduled",    "running-status": "notstarted",    "notes": "",    "location":      {        "id": "location id",        "code": "location code",        "name": "location name"      },    "active": true,    "id": 11110}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Répertorier les ordres d’exécution

GET /api/production-orders/{?access_token}

Pour répertorier les ordres d’exécution. Plusieurs paramètres seront traités comme une condition AND. Cette action nécessite un access_token avec une étendue productions_write. Ce service est paginé et renvoie 25 ordres d’exécution par page.

Exemples d’URI

GET /api/production-orders/?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

start-date-before

date (facultatif)

répertorier les ordres d’exécution dont la date de début est antérieure à

start-date-after

date (facultatif)

répertorier les ordres d’exécution dont la date de début est postérieure à

due-date-before

date (facultatif)

répertorier les ordres d’exécution dont la date d’échéance est antérieure à

due-date-after

date (facultatif)

répertorier les ordres d’exécution dont la date d’échéance est postérieure à

running-status

chaîne (facultatif)

non commencé, commencé, fermé, archivé

actif

booléen (facultatif)

répertorier uniquement les ordres d’exécution actifs (vrai) ou non actifs (faux)

product

chaîne (facultatif)

code produit

machine

chaîne (facultatif)

code machine

opérateurs

booléen (facultatif)

afficher la liste des opérateurs lors de la réponse

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

[  {    "products": [      {        "product": "exampleProduct",        "quantity-ordered": 4500,        "observations": "",        "quantity-produced": 0      }    ],    "code": "exampleCode",    "shipping": "Shipping 45",    "serial-number": "",    "description": "",    "start-date": "2023-07-20T09:15:15Z",    "due-date": "2023-08-16T17:15:15Z",    "workers-assigned": [      {        "number": 10      },      {        "number": 1      }    ],    "ended": false,    "machines": [      {        "code": "exampleMachine"      },      {        "code": "F1"      }    ],    "pieces-by-box": 20,    "status": "scheduled",    "running-status": "notstarted",    "notes": "",    "location":      {        "id": "location id",        "code": "location code",        "name": "location name"      },    "active": true,    "id": 8763990  }]

Signaler un problème avec un ordre d’exécution

POST /api/production-orders/{id}/notify{?access_token}

Service qui publie un message court sur le flux et ajoute un message sur l’ordre d’exécution.

  • short-message (chaîne, obligatoire) - message publié dans le flux, longueur maximale 140 caractères

  • message (chaîne, facultatif) - message ajouté à la section Notes de l’ordre d’exécution

Exemples d’URI

POST /api/production-orders/id/notify?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID de l’ordre d’exécution

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "short-message": "example",  "message": "complete message "}

Réponse 200

Activer un ordre d’exécution

POST /api/production-orders/{id}/activate{?access_token}

Service qui active l’ordre d’exécution.

Exemples d’URI

POST /api/production-orders/id/activate?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID de l’ordre d’exécution

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{}

Réponse 200

Réponse 204

Corps

Production Order was already active

Réponse 405

Corps

Production Order was closed or archived and cannot be activated

Produits

Ressources produit de l’API Prodsmart.

PRODUCT

Un seul objet Produit. La ressource Produit est l’une des ressources les plus importantes de l’API Prodsmart. Elle représente les produits d’une usine et contient les opérations nécessaires à leur production. Cette méthode crée de nouveaux produits et les opérations associées. Peut également être utilisé

La ressource Produit possède les attributs suivants :

  • code (chaîne, obligatoire) - code produit

  • name (chaîne, obligatoire) - nom du produit

  • section (chaîne, facultatif)

  • families (tableau, facultatif)

  • operations (tableau, facultatif) - opérations de production du produit

    • code (chaîne, obligatoire) - code d’opération

    • name (chaîne, obligatoire) - nom de l’opération

    • waste (tableau, facultatif)

    • task-durations (tableau, facultatif, max:1)

      • duration (durée, facultatif, par exemple format « 10H59m59s ») : durée moyenne nécessaire à l’exécution de cette opération, en théorie

      • duration-customer (durée, facultatif, par exemple format « 10H59m59s ») : durée définie dans le budget

      • ratio-quantity (double, facultatif, valeur par défaut 1,0) - volume produit dans chaque instance de cette opération

    • times-per-product (entier, facultatif, valeur par défaut 1) - nombre de fois où cette opération doit être effectuée pour terminer une unité de produit

    • custom-fields (tableau, facultatif, doit exister sur le système) - champs personnalisés à ajouter à l’opération

      • name (chaîne, obligatoire) - nom de champ personnalisé, déjà créé dans le système

    • machines (tableau, facultatif, doit exister sur le système) - machines pouvant être utilisées pour effectuer l’opération

      • code (chaîne, obligatoire) - code machine, déjà créé dans le système

    • disabled (booléen, facultatif) - désactiver l’opération

    • optional (booléen, facultatif) - définir l’opération comme facultative

    • recovery (booléen, facultatif) - définir l’opération comme récupération

    • no-time (booléen, facultatif) - ne pas enregistrer les temps de production

    • no-quantity (booléen, facultatif) - ne pas enregistrer la quantité de production

    • as-team (booléen, facultatif) - opération à effectuer en tant qu’équipe

    • max-waste-threshold (double, facultatif) - ratio de non-conformités maximal autorisé

Les champs non présents dans la demande sont définis avec les valeurs par défaut. Si vous utilisez cette méthode pour des produits/opérations existants, les champs non présents sont considérés comme des suppressions.

Récupérer un produit

GET /api/products/{code}{?access_token}

Pour récupérer un produit, il vous suffit d’effectuer une demande GET avec le code du produit. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/products/code?access_token=

Paramètres d’URI

code

Chaîne (obligatoire)

Code produit.

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

{  "code": "P11",  "name": "Product 11",  "section": null,  "families": null,  "color": "#8b0000",  "observations": "observations",  "operations": [    {      "code": "op1",      "name": "op1",      "waste": null,      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "custom-fields": null,      "machines": null,      "disabled": false,      "optional": false,      "recovery": null,      "no-time": false,      "no-quantity": false,      "as-team": false,      "max-waste-threshold": null,      "section": {        "name": "specialsection"      },      "id": 100    }  ],  "custom-fields": null,  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    },    {      "name": "parameter3",      "value": 1    }  ],  "label": {    "code": "labelCode"  },  "serializable": true,  "id": 24}

Réponse 404

Corps

If product with the provided code doesn't exist.

Créer un produit

POST /api/products{?access_token}

Pour créer un produit, fournissez un hachage JSON des attributs du nouveau produit et de ses opérations. Cette action nécessite un access_token avec une étendue productions_write. Plusieurs opérations peuvent être créées simultanément.

Exemples d’URI

POST /api/products?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "code": "P11",  "name": "Product 11",  "families": [    {      "code": "FG"    }  ],  "color": "#8b0000",  "observations": "observations",  "operations": [    {      "code": "op1",      "name": "op1",      "waste": [        {          "code": "BROKEN"        }      ],      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "times-per-product": 2.0,      "checklists": [        {          "code": "CheckIn"        }      ],      "machines":  [        {          "code": "OVEN02"        }      ],      "disabled": false,      "optional": false,      "recovery": false,      "no-time": false,      "no-quantity": false,      "as-team": false,      "multi-po": false,      "print-production-barcode": false,      "prepare-batch-order": false,      "section": {        "name": "CUT"      }    }  ],  "custom-fields": null,  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    }  ],  "serializable": true}

Réponse 201

Corps

{  "code": "P11",  "name": "Product 11",  "families": [    {      "code": "FG"    }  ],  "color": "#8b0000",  "observations": "observations",  "operations": [    {      "code": "op1",      "name": "op1",      "waste": [        {          "code": "BROKEN"        }      ],      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "times-per-product": 2.0,      "checklists": [        {          "code": "CheckIn"        }      ],      "custom-fields": null,      "machines":  [        {          "code": "OVEN02"        }      ],      "disabled": false,      "optional": false,      "recovery": null,      "no-time": false,      "no-quantity": false,      "as-team": false,      "section": {        "name": "CUT"      }      "id":560    }  ],  "custom-fields": null,  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    }  ],  "serializable": true  "id":120}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Mettre à jour un produit

PUT /api/products/{code}{?access_token}

Pour mettre à jour un produit, fournissez un code et un hachage JSON des attributs pour le produit existant et ses opérations. Cette action nécessite un access_token avec une étendue productions_write. Pour l’instant, il n’est possible d’enregistrer qu’un seul produit, mais plusieurs opérations peuvent être créées en même temps.

Exemples d’URI

PUT /api/products/code?access_token=

Paramètres d’URI

code

chaîne (obligatoire)

Code produit.

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "code": "P11",  "name": "Product 11",  "families": [    {      "code": "FG"    }  ],  "color": "#8b0000",  "observations": "observations",  "operations": [    {      "code": "op1",      "name": "op1",      "waste": [        {          "code": "BROKEN"        }      ],      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "times-per-product": 2.0,      "checklists": [        {          "code": "CheckIn"        }      ],      "custom-fields": null,      "machines":  [        {          "code": "OVEN02"        }      ],      "disabled": false,      "optional": false,      "recovery": null,      "no-time": false,      "no-quantity": false,      "as-team": false,      "section": {        "name": "CUT"      }    }  ],  "custom-fields": null,  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    }  ],  "serializable": true}

Réponse 201

Corps

{  "code": "P11",  "name": "Product 11",  "families": [    {      "code": "FG"    }  ],  "color": "#8b0000",  "observations": "observations",  "operations": [    {      "code": "op1",      "name": "op1",      "waste": [        {          "code": "BROKEN"        }      ],      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "times-per-product": 2.0,      "checklists": [        {          "code": "CheckIn"        }      ],      "custom-fields": null,      "machines":  [        {          "code": "OVEN02"        }      ],      "disabled": false,      "optional": false,      "recovery": null,      "no-time": false,      "no-quantity": false,      "as-team": false,      "section": {        "name": "CUT"      }      "id":560    }  ],  "custom-fields": null,  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    }  ],  "serializable": true  "id":120}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Supprimer un produit

DELETE /api/products/{code}{?access_token}

Pour supprimer un produit, indiquez le code produit.

Exemples d’URI

DELETE /api/products/code?access_token=

Paramètres d’URI

code

chaîne (obligatoire)

Code produit.

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

Content-Type: application/json

Réponse 204

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Répertorier les produits

GET /api/products{?access_token}

Pour répertorier la liste des produits et de leurs opérations. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/products?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

product-family-code

chaîne (facultatif)

répertorier les produits appartenant à la famille de produits fournie

modification-date

date (facultatif)

répertorier les produits modifiés dans le back-office après la date indiquée

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

{  "code": "P11",  "name": "Product 11",  "observations": "",  "section": null,  "unit-cost": null,  "unit-price": 4.32000,  "families": [    {      "code": "FG",      "name": "Finished Goods"    }  ],  "operations": [    {      "code": "op1",      "name": "op1",      "waste": null,      "task-durations": [        {          "validSince": "01/01/2022 - 13:00",          "validUntil": "01/01/2100 - 13:00",          "duration": "00H01m00s",          "duration-customer": "00H01m00s",          "ratio-quantity": 1        }      ],      "custom-fields": null,      "parameters": [        {          "name": "parameter1",          "value": "value1"        }      ],      "machines": null,      "disabled": false,      "optional": false,      "recovery": null,      "no-time": false,      "no-quantity": false,      "as-team": false,      "max-waste-threshold": null,      "section": {        "name": "specialsection"      },      "id": 123    }  ],  "components": [    {      "code": "SUGAR",      "name": "Sugar",      "quantity": 0.0015,      "operation": "MIXING"    },    {      "code": "VANILLA",      "name": "Vanilla",      "quantity": 0.0008,      "operation": "MIXING"    }  ],  "serializable": false,  "custom-fields": null}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

NOMENCLATURE DE PRODUIT

La ressource Nomenclature (BoM) du produit indique les matières utilisées pour fabriquer un produit spécifique. La nomenclature présente les attributs suivants :

  • product-code - produit principal

  • bom (tableau, obligatoire)

    • product-code (chaîne, obligatoire) - code produit composant/consommation

    • quantity (double, obligatoire) - quantité

    • operation-code (chaîne, facultatif) - code d’opération dans lequel la matière définie dans le code-produit est utilisée. Si ce paramètre est vide, la consommation se produit lors de la première opération du processus de fabrication de ce produit.

Mettre à jour la nomenclature du produit

POST /api/bom{?access_token}

Pour mettre à jour la nomenclature d’un produit, fournissez un hachage JSON des attributs du nouveau produit et de ses opérations. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

POST /api/bom?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "product-code": "bicycle",  "bom": [    {      "product-code": "wheel",      "quantity": 2,      "operation-code": "assemble"    },    {      "product-code": "seat",      "quantity": 1,      "operation-code": "assemble"    }  ]}

Réponse 201

{  "product-code": "bicycle",  "bom": [    {      "product-code": "wheel",      "quantity": 2,      "operation-code": "assemble"    },    {      "product-code": "seat",      "quantity": 1,      "operation-code": "assemble"    }  ]}

Réponse 404

Corps

Main product not found

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

STOCK DE PRODUIT

La ressource Stock indique le stock disponible pour un produit spécifique.

  • product-code (chaîne, obligatoire)

  • stock (double, obligatoire)

  • date (date, facultatif) - date du comptage de stock

Mettre à jour le stock du produit

POST /api/stock{?access_token}

Pour mettre à jour le stock d’un produit, fournissez un hachage JSON des attributs pour le stock actuel. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

POST /api/stock?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "product-code": "bicycle",  "stock": 200.5,  "date": "2023-08-16T17:15:15Z"}

Réponse 201

Corps

Request successful

Réponse 404

Corps

Product not found

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Familles de produits

Ressources produit de l’API Prodsmart.

FAMILLE DE PRODUIT

L’objet Famille de produits représente la ou les familles auxquelles un produit appartient.

La ressource Famille de produits possède les attributs suivants :

  • code (chaîne, obligatoire) - code famille de produits

  • name (chaîne, obligatoire) - nom de la famille de produits

Créer une famille de produits

POST /api/product-families{?access_token}

Pour créer une ou plusieurs familles de produits ・ Cette action nécessite un jeton d’accès avec une étendue productions_write.

Exemples d’URI

POST /api/product-families?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "product-families": [    {      "code": "FAM 1",      "name": "Family 1"    },    {      "code": "FAM 2",      "name": "Family 2"    }  ]}

Réponse 201

Corps

[  {    "code": "FAM 1",    "name": "Family 1"  },  {    "code": "FAM 2",    "name": "Family 2"  }]

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Supprimer la famille de produits

DELETE /api/product-family/{code}{?access_token}

Pour supprimer une famille de produits, indiquez le code ProductFamily

Exemples d’URI

DELETE /api/product-family/code?access_token=

Paramètres d’URI

code

chaîne (obligatoire)

Code produit.

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

Content-Type: application/json

Réponse 204

Corps

Product Family was deleted

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Répertorier les familles de produits

GET /api/product-families{?access_token}

Pour répertorier les familles de produits. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/product-families?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

Demande

En-têtes

Content-Type: application/json

Réponse 201

Corps

[  {    "code": "FAM 1",    "name": "Family 1"  },  {    "code": "FAM 2",    "name": "Family 2"  }]

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Machines

Ressources de production de l’API Prodsmart.

COMPTEUR

Mettre à jour le compteur

POST /api/machines/{machine_code}/counter{?access_token}

Pour mettre à jour le compteur actuel dans la machine, envoyez simplement la demande suivante. Pour simplifier la connexion de la machine, vous pouvez utiliser access_token ou envoyer les informations d’identification de l’API dans l’en-tête d’authentification avec l’authentification de base. Prodsmart met automatiquement à jour la production démarrée par l’opérateur sur cette machine. Le décompte des quantités et les quantités de non-conformités doivent être incrémentiels (c’est-à-dire toujours supérieurs aux quantités précédemment envoyées).

Exemples d’URI

POST /api/machines/machine_code/counter?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

machine_code

chaîne (obligatoire)

Code machine défini sur la plateforme Prodsmart

Demande

En-têtes

Content-Type: application/json

Corps

{  "count": 500,  "waste": [    {      "code": "Waste1",      "quantity": 20    }  ],  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    },    {      "name": "parameter3",      "value": 1    }  ]}

Réponse 200

Corps

Returns the new value for the machine's counter.

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

PARAMETRES

Mettre à jour les paramètres

POST /api/machines/{machine_code}/parameters{?access_token}

Pour mettre à jour un paramètre de machine, il suffit d’envoyer la demande suivante. Pour simplifier la connexion de la machine, vous pouvez utiliser access_token ou envoyer les informations d’identification de l’API dans l’en-tête d’authentification avec l’authentification de base. Lorsque ces paramètres sont transmis, si un enregistrement de production est

Exemples d’URI

POST /api/machines/machine_code/parameters?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

machine_code

chaîne (obligatoire)

Code machine défini sur la plateforme Prodsmart

Demande

En-têtes

Content-Type: application/json

Corps

{  "parameters": [    {      "code": "temperature",      "value": 25    },    {      "code": "valid",      "value": "yes"    }  ]}

Réponse 200

TEMPS D’ARRÊT

Mettre à jour les temps d’arrêt

POST /api/machines/{machine_code}/startstop{?access_token}

Pour mettre à jour le statut actuel de la machine, envoyez simplement la demande suivante. Pour simplifier la connexion de la machine, vous pouvez utiliser access_token ou envoyer les informations d’identification de l’api dans l’en-tête d’authentification avec l’authentification de base. Prodsmart enregistre automatiquement un temps d’arrêt ou y met fin, selon les informations reçues. Envoyez 0 pour une machine arrêtée, 1 pour une machine activée et spécifiez le type de temps d’arrêt.

Pour mettre à jour le statut d’une machine, spécifiez les attributs suivants :

  • type (chaîne, obligatoire, doit être un type de temps d’arrêt déjà affecté à la machine) - type de temps d’arrêt

  • running (nombre, obligatoire, 0 ou 1) - la machine est-elle arrêtée (0) ou en cours d’exécution (1)

Exemples d’URI

POST /api/machines/machine_code/startstop?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

machine_code

chaîne (obligatoire)

Code machine défini sur la plateforme Prodsmart

Demande

En-têtes

Content-Type: application/json

Corps

{  "type": "Maintenance",  "running": 0}

Réponse 200

Production

Ressources de production de l’API Prodsmart.

PRODUCTION

Un seul objet de production. La ressource Production est la ressource centrale de l’API Prodsmart. Elle représente le travail d’un opérateur occupant un poste pendant une période donnée.

La ressource Production possède les attributs suivants :

  • ID

  • start-time (date, obligatoire, format AAAA-MM-JJJ:MM:SSZ) - heure de début de la production

  • end-time (date, obligatoire, format AAAA-MM-JJJ:MM:SSZ) - heure de fin de la production

  • work-time (durée, donnée, format 00H00m00s) - temps de travail de production (inclut le temps de planification/les horloges de pointage et exclut les temps d’arrêt)

  • production-order (facultatif) - ordre d’exécution pour lequel cette production a été effectuée

    • code (chaîne, obligatoire) - code de l’ordre d’exécution

    • id (chaîne, obligatoire)

  • operation (obligatoire) - tâche exécutée dans cette production

    • code (chaîne, obligatoire, unique) - code de tâche

    • product (obligatoire) - bien matériel utilisé par l’opérateur à ce poste

  • quantity (entier, obligatoire, >0) - quantité produite dans cette production

  • worker (obligatoire) - personne qui effectue des tâches

    • number (long, obligatoire, unique) - numéro d’opérateur

  • produced-waste (tableau, facultatif) - sortie de matériau défectueuse dans une opération

    • quantity (numérique, obligatoire) - code de non-conformités

      • waste - type de matériau défectueux

      • code (chaîne, obligatoire, unique) - code de non-conformités

      • description (chaîne, obligatoire) - description des non-conformités

      • flaw (chaîne, obligatoire) - type de non-conformités

      • quantity (entier, obligatoire) - quantité de non-conformités produites

L’ID d’état est attribué par l’API Prodsmart au moment de la création.

Mettre à jour une production

PUT /api/productions/{id}{?access_token}

Pour mettre à jour une production, fournissez un code et un hachage JSON des attributs pour la production existante. Cette action nécessite un access_token avec une étendue productions_write. Pour l’instant, il n’est possible d’enregistrer qu’un seul produit, mais plusieurs opérations peuvent être créées en même temps.

Exemples d’URI

PUT /api/productions/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID de production

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "shipping": {    "code": "shippingexamplecode00"  },  "production-order": {    "code": "productionorderexample00"  },  "operation": {    "product-code": "otherProductCode",    "code": "OtherOperationCode"  },  "worker": {    "number": "1000"  },  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    },    {      "name": "parameter3",      "value": 1    }  ],  "quantity": 100,  "start-time": "2023-07-20T09:15:15Z",  "end-time": "2023-07-20T09:15:16Z",  "lot-number": "other lot",  "finished": false}

Réponse 200

Corps

{  "id": 4629374,  "production-order": {    "code": "productionorderexample00",    "id": 365315  },  "shipping": {    "code": "shippingexamplecode00",    "id": 41741  },  "operation": {    "code": "OtherOperationCode",    "product-code": "otherProductCode",    "id": 790486  },  "worker": {    "number": 1000,    "name": "Worker Name",    "id": 15890  },  "parameters": [    {      "name": "parameter1",      "value": "value1"    },    {      "name": "parameter2",      "value": "2022-12-19T00:00:00Z"    },    {      "name": "parameter3",      "value": 1    }  ],  "quantity": 100,  "lot-number": "other lot",  "start-time": "2023-07-20T09:15:15.000Z",  "end-time": "2023-07-20T09:15:16.000Z",  "finished": false}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Supprimer la production

SUPPRIMER /api/productions/{id}{?access_token}

Pour supprimer une production, fournissez un ID de production.

Exemples d’URI

DELETE /api/productions/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID de production

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

Content-Type: application/json

Réponse 201

Corps

{  "id": 4629376,  "production-order": {    "code": "productionorderexample00",    "id": 365315  },  "shipping": {    "code": "shippingexamplecode00",    "id": 41741  },  "operation": {    "code": "operationexample0001",    "product-code": "productcodeexample001",    "id": 790486  },  "worker": {    "number": 1000,    "name": "worker example",    "id": 15890  },  "parameters": [{    "name": "parameter1",    "value": "value1"  }, {    "name": "parameter2",    "value": "2022-12-19T00:00:00Z"  }, {    "name": "parameter3",    "value": 1.0  }],  "quantity": 100.0,  "lot-number": "lotX",  "start-time": "2023-07-20T09:15:15.000Z",  "end-time": "2023-07-20T09:15:16.000Z",  "finished": false}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body

Répertorier les productions

GET /api/productions{?access_token}

Pour répertorier les productions. Plusieurs paramètres seront traités comme une condition AND. Cette action nécessite un access_token avec une étendue productions_write. Ce service est paginé et renvoie 25 productions par page.

Exemples d’URI

GET /api/productions?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

production-order-id

numérique (facultatif)

répertorier les productions avec cet ordre d’exécution

production-order-code

chaîne (facultatif)

répertorier les productions avec ce ou ces ordres d’exécution

opérateur

numérique (facultatif)

répertorier les productions avec cet opérateur (numéro d’opérateur)

start-time-before

date (facultatif)

répertorier les productions dont l’heure de début est antérieure à

start-time-after

date (facultatif)

répertorier les productions dont l’heure de début est ultérieure à

end-time-before

date (facultatif)

répertorier les productions avec une heure de fin antérieure à

end-time-after

date (facultatif)

répertorier les productions avec une heure de fin ultérieure à

start-time

date (facultatif)

répertorier les productions qui fonctionnaient après cette heure de début (ne pas utiliser combiné avec -before -after)

checked-out

booléen (facultatif)

répertorier les productions qui sont sorties.

worker-name

booléen (facultatif)

extrait le nom et le numéro de l’opérateur au lieu du seul numéro d’opérateur.

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

[  {    "production-order": {      "code": "PO1",      "id": 36530    },    "operation": {      "code": "2",      "product": "Product 1"    },    "worker": {      "number": 2    },    "machine": {      "code": "Machine Code"    },    "produced-waste": [      {        "quantity": 21,        "waste": {          "code": "Waste code",          "description": "Description of this type of waste",          "flaw": "Flaw",          "recoverable": true,          "billable": false,          "id": 333        }      }    ],    "parameters": [      {        "parameter1": "value1"      },      {        "parameter2": 2      }    ],    "quantity": 0,    "checked-out": false,    "work-time": "00H00m00s",    "start-time": "2023-09-20T17:55:32.000+01:00",    "end-time": "2023-09-20T18:45:00.000+01:00",    "id": 575354  }]

Temps d’arrêt

Ressources de temps d’arrêt de l’API Prodsmart.

TEMPS D’ARRÊT

Répertorier les temps d’arrêt

GET /api/downtimes{?access_token}

Pour répertorier les temps d’arrêt. Plusieurs paramètres seront traités comme une condition AND. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/downtimes?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

start-time-before

date (facultatif)

répertorier les heures d’arrêt dont l’heure de début est antérieure à

start-time-after

date (facultatif)

répertorier les temps d’arrêt dont l’heure de début est ultérieure à

end-time-before

date (facultatif)

répertorier les temps d’arrêt dont l’heure de fin est antérieure à

end-time-after

date (facultatif)

répertorier les temps d’arrêt dont l’heure de fin est ultérieure à

machine

numérique (facultatif)

répertorier les temps d’arrêt sur cette machine

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

[  {    "id": 20146,    "start-time": "2017-12-21T10:30:21.000Z",    "end-time": "2017-12-21T10:32:21.000Z",    "started-by": {      "number": 2    },    "closed-by": {      "number": 2    },    "workers": [],    "machines": [      {        "code": "M2",        "name": "Machine 2"      }    ],    "product": "ProdX",    "production-order": "OP XPTO",    "checked-out": true,    "downtime-type": "Malfunction",    "time-spent": "00H02m00s"  }]

PunchClock

Ressources Horloge de pointage de l’API Prodsmart.

HORLOGE DE POINTAGE

Les webhooks sont disponibles pour les événements d’horloge de pointage dans le menu des intégrations de l’application. Pour utiliser cette fonction, ajoutez le rappel d’URL du point de terminaison avec les événements de notification que vous souhaitez écouter. Nous nous efforçons d’envoyer des notifications webhook aussi rapidement que les événements se produisent dans notre système. Actuellement, nous ne prenons pas en charge les nouvelles tentatives.

Répertorier les horloges de pointage

GET /api/punchclocks{?access_token}

Pour répertorier les horloges de pointage. Plusieurs paramètres seront traités comme une condition AND. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/punchclocks?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

date-before

date (facultatif)

répertorier les entrées d’horloge de pointage dont la date est antérieure à

date-after

date (facultatif)

répertorier les entrées d’horloge dont la date est postérieure à

opérateur

numérique (facultatif)

répertorier les entrées d’horloge de pointage pour cet opérateur

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

[{    "id": 372179,    "date": "2018-09-21T09:24:06.000+01:00",    "worker": {        "number": 2    },    "type": 1},{    "id": 372180,    "date": "2018-09-21T16:34:12.000+01:00",    "worker": {        "number": 2    },    "type": 0}]"type": 0 ('out') or 1 ('in')

Mouvement de stock

Ressources Mouvement de stock de l’API Prodsmart.

MOUVEMENT DE STOCK

Un seul objet Mouvement de stock. La ressource Mouvement de stock est l’une des ressources les plus importantes de l’API Prodsmart.

La ressource Mouvement de stock possède les attributs suivants :

  • id (fourni)

  • product (chaîne, obligatoire) - code produit

  • date-time (date, facultatif, format AAAA-MM-JJJJ:MM:SSZ) - date de création du mouvement de stock

  • quantity (double, obligatoire) - quantité de mouvement de stock

  • type (chaîne, obligatoire) - type de mouvement de stock : entrée, sortie, consommation, production

  • lot (chaîne, facultatif) - lot de mouvements de stock à utiliser

  • total-cost (BigDecimal, facultatif) - coût total du mouvement de stock pour la quantité

  • warehouse-location (chaîne, facultatif) - code d’emplacement de l’entrepôt

  • warehouse (chaîne, facultatif) - code d’entrepôt

  • location (chaîne, facultatif) - emplacement, si multisite

  • comment (chaîne, facultatif) - commentaire sur le mouvement de stock

Récupérer un mouvement de stock

GET /api/inventory-movements/{id}{?access_token}

Pour récupérer un mouvement de stock, il vous suffit d’effectuer une demande GET avec l’ID du mouvement de stock. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/inventory-movements/id?access_token=

Paramètres d’URI

ID

numérique (obligatoire)

ID de mouvement de stock

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

{  "product-code": "ProductCode",  "date-time": "2018-07-20T09:15:15Z",  "quantity": "10",  "type": "in",  "lot": "A",  "total-cost": "1000",  "comment": "OK",  "warehouse-location": "Zone2",  "shipping": {    "code": "shippingCode",    "clientOrder": {      "code": "clientOrderCode",      "client": "clientCode"    },    "location": {      "id": "location id",      "code": "location code",      "name": "location name"    }  },  "receiving": {    "code": "receivingCode",    "purchaseOrder": {      "code": "purchaseOrderCode",      "supplier": "supplierCode"    },    "location": {      "id": "location id",      "code": "location code",      "name": "location name"    }  }}

Créer un mouvement de stock

POST /api/inventory-movements/{?access_token}

Pour créer un mouvement de stock, fournissez un hachage JSON des attributs du nouveau mouvement de stock. Cette action nécessite un access_token avec une étendue productions_write. Pour l’instant, il n’est possible d’enregistrer qu’un seul mouvement de stock. Si la demande est un tableau au lieu d’une seule ressource, tous les éléments du tableau seront enregistrés.

Exemples d’URI

POST /api/inventory-movements/?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{  "product-code": "ProductCode",  "date-time": "2018-07-20T09:15:15Z",  "quantity": "10",  "type": "in",  "lot": "A",  "total-cost": "1000",  "comment": "OK",  "warehouse": "A",  "warehouse-location": "Zone2",  "location": "location code",  "shipping": "shippingCode",  "client-order": "clientOrderCode",  "receiving": "receivingCode",  "purchase-order": "purchaseOrderCode"}

Réponse 200

Corps

{  "product-code": "ProductCode",  "date-time": "2018-07-20T09:15:15Z",  "quantity": "10",  "type": "in",  "lot": "A",  "total-cost": "1000",  "comment": "OK",  "warehouse-location": "Zone2",  "id": 12345,  "shipping": {    "code": "shippingCode",    "clientOrder": {      "code": "clientOrderCode",      "client": "clientCode"    },    "location": {      "id": "location id",      "code": "location code",      "name": "location name"    }  },  "receiving": {    "code": "receivingCode",    "purchaseOrder": {      "code": "purchaseOrderCode",      "supplier": "supplierCode"    },    "location": {      "id": "location id",      "code": "location code",      "name": "location name"    }  }}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body.

Mettre à jour un mouvement de stock

PUT /api/inventory-movements/{id}{?access_token}

Pour mettre à jour un mouvement de stock, fournissez un fichier JSON avec les attributs que vous souhaitez mettre à jour dans le mouvement de stock (tous les attributs sont facultatifs). Cette action requiert un access_token avec productions_write scope.

Exemples d’URI

PUT /api/inventory-movements/id?access_token=

Paramètres d’URI

ID

numeric (obligatoire)

ID de mouvement de stock

access_token

string (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Corps

{ "product-code": "ProductCode", "date-time": "2018-07-20T09:15:15Z", "quantity": "10", "type": "in", "lot": "A", "total-cost": "1000", "comment": "OK", "warehouse": "A", "warehouse-location": "Zone2", "receiving": "receivingCode" }

Supprimer un mouvement de stock

DELETE /api/inventory-movement/{id}{?access_token}

Pour supprimer un mouvement de stock, fournissez un ID de mouvement de stock.

Exemples d’URI

DELETE /api/inventory-movement/id?access_token=

Paramètres d’URI

ID

numeric (obligatoire)

ID de mouvement de stock

access_token

string (obligatoire)

Jeton d’accès à l’API Prodsmart.

Demande

En-têtes

Content-Type: application/json

Réponse 204

Réponse 400

It's not possible to delete this inventory-movement.

Répertorier les mouvements de stock

GET /api/inventory-movements/{?access_token}

Pour répertorier les mouvements de stock. Plusieurs paramètres seront traités comme une condition AND. Cette action nécessite un access_token avec une étendue productions_write. Ce service est paginé et renvoie 25 mouvements de stock par page.

Exemples d’URI

GET /api/inventory-movements/?access_token=

Paramètres d’URI

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

product-code

chaîne (facultatif)

code produit

type

chaîne (facultatif)

type de mouvement de stock : entrée, sortie, consommation, production

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

[  {    "product-code": "ProductCode",    "date-time": "2018-07-20T09:15:15Z",    "quantity": "10",    "type": "in",    "lot": "A",    "total-cost": "1000",    "comment": "OK",    "warehouse-location": "Zone2",    "id": 12345,    "shipping": {      "code": "shippingCode",      "clientOrder": {        "code": "clientOrderCode",        "client": "clientCode"      },      "location": {        "id": "location id",        "code": "location code",        "name": "location name"      }    },    "receiving": {      "code": "receivingCode",      "purchaseOrder": {        "code": "purchaseOrderCode",        "supplier": "supplierCode"      },      "location": {        "id": "location id",        "code": "location code",        "name": "location name"      }    }  }]

Stock

Ressources de stock de l’API Prodsmart.

Récupérer un stock de produit

GET /api/stock/{code}{?access_token}

Pour récupérer un stock de produit, il vous suffit d’effectuer une demande GET avec le code du produit. Plusieurs paramètres seront traités comme une condition AND. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/stock/code?access_token=

Paramètres d’URI

code

chaîne (obligatoire)

Code produit.

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart.

lot

chaîne (facultatif)

Récupérer le code de lot et la quantité de stock pour le ou les lots de produits

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

{"product-code": "Example","stock": 35,"lot": [     {      "code": "A",      "stock": 10    },    {      "code": "B",      "stock": 5    }}

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body.

Rapports

Ressources de génération de rapports de l’API Prodsmart.

Temps de travail de l’opérateur

Temps de travail de l’opérateur GET/api/reports/worker-labor-time{?access_token}

Pour récupérer un rapport, il vous suffit d’effectuer une demande GET avec un intervalle de temps pour extraire le rapport. Vous pouvez ajouter un opérateur et un paramètre de section pour filtrer le rapport. En outre, vous pouvez spécifier des indicateurs pour personnaliser le contenu du rapport. La valeur par défaut de tous les indicateurs est false. Cette action nécessite un access_token avec une étendue productions_write.

Exemples d’URI

GET /api/reports/worker-labor-time?access_token=

Paramètres d’URI

start-time

chaîne (obligatoire)

Générer un rapport aux dates ultérieures (incluses)

end-time

chaîne (obligatoire)

Générer un rapport aux dates antérieures (incluses)

access_token

chaîne (obligatoire)

Jeton d’accès à l’API Prodsmart

worker-number

chaîne (facultatif)

Spécifier un numéro d’opérateur pour filtrer le rapport

Section

chaîne (facultatif)

Spécifiez un nom de section. Tous les opérateurs de cette section seront inclus dans le rapport

show-rework

booléen (facultatif)

Inclure un nouveau champ avec les opérations de réusinage dans le rapport

show-weekend

booléen (facultatif)

Inclure les jours de week-end dans les données

only-punch-clock

booléen (facultatif)

Prendre en compte uniquement le temps de présence avec les entrées d’horloge de pointage

Divers

numérique (facultatif)

index de la page de résultats, à partir de 1

Demande

En-têtes

Content-Type: application/json

Réponse 200

Corps

[  {    "worker": {      "number": "0",      "name": "John"    },    "presence-time": "08H00",    "work-time": "04H00m00s",    "percentage": "50%",    "calendar-downtimes": "00H00m00s"  },  {    "worker": {      "number": "1",      "name": "Mary"    },    "presence-time": "08H00",    "work-time": "08H00m00s",    "percentage": "100%",    "calendar-downtimes": "00H00m00s"  }]

Réponse 400

Corps

If there's a problem with the request, the problem found will be reported on the Response Body.

Réponse 429

Corps

Another request is ongoing for this endpoint. Please wait until the current request finishes before doing another.

Autorisation et contrôle d’accès

Accès et contrôle du jeton d’authentification Prodsmart.

AUTORISATION

La ressource Autorisation représente une autorisation accordée à la société. Vous pouvez uniquement accéder à votre propre autorisation. L’authentification utilisée est l’authentification de base, où l’en-tête Authentification se présente sous la forme <valeur codée en base64 de API_KEY : API_SECRET>. Pour obtenir la clé et le secret de l’API, connectez-vous à Prodsmart et modifiez votre utilisateur. (Remarque : vous devez disposer d’un rôle d’administrateur pour l’obtenir.) La ressource Autorisation possède l’attribut suivant :

  • token

  • scopes

Où token représente un jeton et scopes est un tableau d’étendues accordées pour l’autorisation donnée. À ce stade, la seule étendue disponible est productions_write.

Récupérer l’autorisation

GET /api/authorization

Utilisez GET pour récupérer un jeton d’accès existant. Si aucun jeton n’existe, il est possible d’en générer un à l’aide de la méthode POST.

Exemples d’URI

GET /api/authorization

Demande

En-têtes

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Réponse 200

En-têtes

Content-Type: application/jsonLink: <http:/api.prodsmart.com/api/authorizations>;rel="self"

Corps

{    "_links": {        "self": { "href": "/api/authorizations" },    },    "scopes": [        "productions_write"    ],    "token": "abc123"}

Créer une autorisation

POST /api/authorization

Utilisez une demande POST pour générer un nouveau jeton d’accès.

Exemples d’URI

POST /api/authorization

Demande

En-têtes

Content-Type: application/jsonAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Corps

{ "scopes": [ "productions_write" ] }

Réponse 201

En-têtes

Content-Type: application/jsonLink: <http:/api.prodsmart.com/api/authorizations>;rel="self"

Corps

{    "_links": {        "self": { "href": "/api/authorizations" },    },    "scopes": [        "productions_write"    ],    "token": "abc123"}

Supprimer une autorisation

DELETE /api/authorization

Exemples d’URI

DELETE /api/authorization

Demande

En-têtes

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Réponse 204

Avez-vous trouvé la réponse à votre question ?