Ir para conteúdo principal

Documentação de API

David Andrade avatar
Escrito por David Andrade
Atualizado há mais de 2 semanas

Ponto final URI Base da API

O ponto final de todas as nossas chamadas API é: https://app.prodsmart.com/

Autenticação

A API do Prodsmart utiliza uma autorização de token simples. Primeiro, cria um novo token (ou adquire um existente). Após adquirir o seu token, poderá utilizá-lo para aceder a outros recursos dentro do âmbito do token.

O seu token de autenticação dura 2 horas e, em seguida, tem de solicitar um novo com as suas credenciais de API.

Tipo de suporte de dados

Os pedidos com um corpo de mensagem utilizam JSON simples para definir ou atualizar os estados do recurso.

Estados de erro

São utilizados os Códigos de Estado de Resposta HTTP comuns.

Json inválido

Se receber a resposta "Invalid JSON", valide a carga útil json que está a utilizar no JSONLint.

Limite de taxa

Os pedidos de API estão limitados a 120 pedidos por minuto por empresa. Após o limite ser excedido, os pedidos subsequentes obterão uma resposta com o Código de Status HTTP 429 Demasiados pedidos.

Adicionalmente, um cabeçalho indicará quantos segundos tem de aguardar antes de tentar novamente o pedido:

Retry-After: <delay-seconds>

Boas práticas para gerir com o limite de taxa:

  • Distribua os pedidos de forma uniforme ao longo do tempo para evitar picos de utilizam que possam resultar em respostas limitadas

  • Desenvolver lógica que utiliza informações Tentar novamente após para saber quando o pedido pode ser repetido

  • Certifique-se de que não tem integrações desnecessárias em execução em paralelo, pois todas as integrações contarão para o limite

Formato de data

O formato dos campos de data da API segue a representação de ISO 8601:

  • YYYY-MM-DDThh:mm:ssZ

Neste formato, a letra T funciona como um delimitador necessário, enquanto Z é um designador de fuso horário, se necessário. Quando Z não é utilizado, o fuso horário aplicado à data é igual ao definido na sua empresa do Prodsmart. Z significa o fuso horário Zero, pois tem um desvio de 0.

Exemplo de utilização:

  • Se o tempo utilizado estiver uma hora adiantada em relação ao UTC, o designador de zona deve ser "+01:00", "+0100" ou simplesmente "+01".

  • Se o fuso horário de uma empresa for definido como -05:00 e a data de envio tiver o seguinte formato: 2020-07-20T09:15:15Z, a data será apresentada no Prodsmart como: 07/20/2020 - 04:15:15

  • Se o formato enviado for: 2020-07-20T09:15:15, a data será apresentado no Prodsmart como: 07/20/2020 - 09:15:15 (com fuso horário -05:00), o que significa que, se um utilizador tiver um fuso horário definido como -0 04:00, vê-lo-á como: 07/20/2020 - 10:15:15


Integrações de ERP comuns

Os cenários comuns para integrações de ERP são a sincronização principalmente de Ordens de produção, Stocks e Catálogo de produtos.

Ordens de produção

Quando uma ordem de produção é criada do lado do ERP, o ERP deve enviar os dados da ordem de produção no formato JSON para a API do Prodsmart, utilizando o Serviço de criação de ordem de produção. Se for necessário atualizar o lado do ERP quando uma ordem de produção for criada ou atualizada no Prodsmart, existem duas possibilidades: o ERP pode ser contactado de fora, e neste caso, é possível configurar webhooks no Prodsmart. Os webhooks serão chamados na criação, atualização e eliminação de ordens de produção do lado do Prodsmart. Se o ERP não puder ser contactado de fora, o ERP deverá consultar o Serviço de lista de ordens de produção para detetar alterações.

Stocks

Normalmente, o ERP (ou WMS) é o master em stocks, por isso, fornecemos um serviço (Atualizar stock de produto) que permite que o ERP/WMS atualize o stock atual de um produto para uma quantidade específica. Por vezes, o ERP/WMS pode ser notificado sobre alterações do stock de produção verificando alterações em ordens de produção ou utilizando webhooks ou um serviço da Web de stock atual (mediante pedido).

Produtos

Não com tanta frequência, o catálogo de produtos também é sincronizado. Neste caso, o ERP é sempre o master e pode criar produtos e operações utilizando o serviço de criação de produtos.


Webhooks

Os webhooks estão disponíveis para eventos de ordem de produção no menu Integrações na aplicação. Para utilizar esta funcionalidade, adicione a chamada de URL de ponto final com os eventos de notificação que pretende escutar. Esforçamo-nos para enviar notificações de webhook tão rapidamente quanto os eventos ocorrem no nosso sistema. Se tiver um grande número de ordens de produção alteradas simultaneamente, poderá receber uma inundação de notificações entregues dentro de um curto período. Atualmente, não oferecemos suporte para novas tentativas.

Cabeçalhos

Cabeçalhos do 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"

Nota:

  • x-prodsmart-topic - Identificar tópico do webhook

  • x-prodsmart-hmac-sha256 - Utilizado para verificar a origem do webhook

  • x-prodsmart-api-version - Versão da API utilizada para enviar o webhook

  • x-prodsmart-webhook-uuid - Identificar webhook único

  • x-prodsmart-trigger-at - Hora a que o webhook foi acionado

Como verificar o webhook?

  • Antes de responder com um código de estado 200, é crucial confirmar que o webhook foi originado no Prodsmart. Esta verificação é obtida calculando uma assinatura.

  • Cada pedido de webhook vem com um cabeçalho específico chamado x-prodsmart-hmac-sha1, que é codificado no formato base64. Este cabeçalho é gerado utilizando o segredo da API e os dados incluídos no pedido de webhook.

  • Para verificar a autenticidade do webhook, tem de calcular uma assinatura utilizando o mesmo segredo da API e os dados fornecidos.

  • Após ter a assinatura calculada, compare-a com o valor encontrado no cabeçalho x-prodsmart-hmac-sha1 do pedido de webhook recebido.

  • Se a assinatura calculada corresponder ao valor no cabeçalho x-prodsmart-hmac-sha1, pode ter a certeza de que o webhook foi realmente enviado do Prodsmart e pode continuar a responder com um código de estado 200.

Ordens de produção

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

{    "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}

Nota: o estado de execução será eliminado quando a ordem de produção for eliminada.

Relógio de ponto

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

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

  • valores de entrada possíveis:

    • 1 - Entrada

    • 0 - Saída

  • valores de notificação possíveis:

    • punchClock_created

    • punchClock_updated

    • punchClock_deleted

Movimento de inventário de expedição

Movimento de inventário de expedição criado/atualizado

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

[{    "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"    }}]

  • valores de notificação possíveis:

    • shipping_inventory_movement_created

    • shipping_inventory_movement_updated

Movimento de inventário de expedição eliminado

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

{  "id": 111}

  • valores de notificação possíveis:

    • shipping_inventory_movement_deleted

Movimento de inventário de receção

Movimento de inventário de receção criado/atualizado

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

[{    "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"    }}]

  • valores de notificação possíveis:

    • receiving_inventory_movement_created

    • receiving_inventory_movement_updated

Movimento de stock de receção eliminado

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

{  "id": 111}

  • valores de notificação possíveis:

    • receiving_inventory_movement_deleted

Movimento de inventário interno

Movimento de inventário interno criado/atualizado

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

[{    "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"    }}]

  • valores de notificação possíveis:

    • internal_inventory_movement_created

    • internal_inventory_movement_updated

Movimento de inventário interno eliminado

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

{  "id": 111}

  • valores de notificação possíveis:

    • internal_inventory_movement_deleted

Movimento de lançamento de material

Lançamento de material criado/atualizado

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

[{    "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"    }}]

  • valores de notificação possíveis:

    • material_staging_created

    • material_staging_updated

Lançamento de material eliminado

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

{  "id": 111}

  • valores de notificação possíveis:

    • material_staging_deleted

Lote

Lote criado/atualizado

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

[{    "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"    }}]

  • valores de notificação possíveis:

    • lot_created

    • lot_updated

Lote eliminado

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

{  "id": 111}

  • valores de notificação possíveis:

    • lot_deleted

Paragem

Paragem criada/atualizada/eliminada

  • Pedido (aplicação/json)

    • Método: POST

    • Corpo

{  "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"}

  • valores de notificação possíveis:

    • downTime_created

    • downTime_updated

    • downTime_deleted

Alterações em canais de feed

Se, por qualquer motivo, não puder utilizar webhooks, oferecemos a alternativa de pilha de alterações, que armazenará as alterações ocorridas nas últimas 24 horas ou desde a última vez que solicitou as alterações através do serviço da Web que fornecemos. Para utilizar esta funcionalidade, tem de criar um canal no menu Integrações (https://app.prodsmart.com/admin/integrations). É possível criar até 3 canais por organização.

Existem 6 tipos de canais de alterações:

  • DOWN_TIME

  • PRODUCT

  • PRODUCTION

  • PRODUCTION_ORDER

  • PUNCH_CLOCK

  • STOCK

Obter alterações

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

Ao chamar este serviço, obterá uma lista de entidades que foram alteradas porque foram criadas/atualizadas/eliminadas ou porque o seu estado foi alterado. Receberá uma matriz com o estado atual das entidades (ordenado das alterações mais antigas para as mais recentes), com um máximo de 25 por chamada de serviço. As entidades que obtém do serviço são removidas da pilha (até que tenham novas atualizações). O serviço devolverá uma matriz vazia ("[]") se não houver alterações.

Exemplo de URI

GET /api/changes/channel?access_token=

Parâmetros de URI

canal

string (obrigatório)

o canal a aceder

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

trabalhadores

boolean (opcional)

mostrar lista de trabalhadores na resposta do canal de Ordens de produção

Pedido

Content-Type: application/json

PARAGENS

[    {        "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",    }]

Nota: o campo de tipo de evento só estará presente quando um Tempo de Inatividade for eliminado.

ORDENS DE PRODUÇÃO

[    {        "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    }]

Nota: O campo de estado de execução terá o valor eliminado quando uma Ordem de produção for eliminada.

PRODUTOS

[    {        "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": []    }]

Nota: o campo de notificação terá o valor product_deleted quando um produto for eliminado.

REGISTOS DE PRODUÇÃO

[    {        "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    }]

Nota: o campo de estado só estará presente quando um Registo de produção for eliminado.

RELÓGIOS DE PONTO

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

Nota: o campo de notificação só estará presente quando uma entrada do Relógio de ponto for eliminada.

STOCK

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

Fornecedor

Recursos do fornecedor da API do Prodsmart.

FORNECEDOR

Um único objeto de fornecedor.

O recurso Fornecedor tem os seguintes atributos:

  • id (fornecido)

  • code (cadeia, obrigatório, único) - código do fornecedor

  • name (cadeia, obrigatório) - nome do fornecedor

  • number (cadeia, opcional) - NIF do fornecedor

  • expiration-date (data, opcional, formato AAAA-MM-DDTHH:MM:SSZ) - data em que o fornecedor expira

  • addresses (matriz, opcional)

  • code (cadeia, obrigatório, único) - código de endereço

  • name (cadeia, opcional) - nome do endereço

  • address (cadeia, obrigatório) - linha de endereço

  • city (cadeia, opcional) - cidade do endereço

  • post-code (cadeia, opcional) - código postal do endereço

  • state (cadeia, opcional) - estado/região do endereço

  • country (cadeia, obrigatório) - código do país do endereço

  • default (booleano, opcional - reposto em falso) - se verdadeiro, é o endereço predefinido do fornecedor

  • contacts (matriz, opcional)

  • phone-number (cadeia, obrigatório se não houver e-mail) - número de telefone de contacto

  • email (cadeia, obrigatório se não houver número de telefone) - e-mail de contacto

  • name (cadeia, opcional) - nome do contacto

  • default (booleano, opcional - reposto em falso) - se verdadeiro, é o contacto predefinido do fornecedor

Regras de endereço/contacto predefinido:

  • Os contactos e endereços só podem ter um endereço ou contacto predefinido, respetivamente

  • Se um fornecedor tiver endereços, um dos endereços deverá ser o predefinido

  • Se um fornecedor tiver contactos, um dos contactos deverá ser o predefinido

  • Na criação/atualização de um fornecedor, se nenhum contacto/endereço predefinido for fornecido, o primeiro contacto/endereço será a predefinição

Criar um fornecedor

POST /api/suppliers{?access_token}

Estado: disponível

Para criar um Fornecedor, forneça um hash JSON dos atributos para o novo Fornecedor. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

POST /api/suppliers?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{ "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 } ] }

Resposta 201

Corpo

{ "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 } ] }

Resposta 400

Corpo

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

Listar Fornecedores

GET /api/suppliers{?access_token}

Para listar Fornecedores. Esta ação requer um access_token com âmbito de productions_write. Este serviço é paginado, apresentando 25 fornecedores por página.

Exemplo de URI

GET /api/suppliers?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

id

number (opcional)

listar fornecedores filtrados por id

código

string (opcional)

listar fornecedores filtrados por código

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

[ { "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 } ] } ]

Resposta 400Show

Corpo

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

Obter um fornecedor

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

Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

GET /api/suppliers/id?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

id

numeric (obrigatório)

ID de fornecedor

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 201

Corpo

{ "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 } ] }

Resposta 400

Corpo

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

Atualizar um fornecedor

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

Para atualizar um Fornecedor, forneça um hash JSON dos atributos para o novo Fornecedor.

Contactos

  • Os contactos do fornecedor fornecidos substituirão os contactos atuais.

  • Se um contacto com o mesmo nome de um contacto existente for fornecido, os valores do contacto com esse nome serão substituídos pelos valores fornecidos.

  • Se não forem fornecidos contactos, os contactos existentes serão removidos.

Endereços

  • Os endereços fornecidos substituirão os endereços atuais.

  • Se um endereço com o mesmo código que um endereço existente for fornecido, os valores do endereço com esse código serão substituídos pelos valores fornecidos.

  • Se nenhum endereço for fornecido, os endereços existentes serão removidos.

  • Se um endereço tiver entidades associadas, o pedido falhará, pois o endereço não pode ser removido.

Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

PUT /api/suppliers/id?access_token=

Parâmetros de URI

id

numeric (obrigatório)

Id de cliente

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{ "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 } ] }

Resposta 201

Corpo

{ "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 } ] }

Resposta 400

Corpo

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

Remover um fornecedor

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

Exemplo de URI

DELETE /api/suppliers/id?access_token=

Parâmetros de URI

id

numeric (obrigatório)

Id de fornecedor

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 204

Corpo

Supplier was deleted

Resposta 412

Corpo

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

Cliente

Recursos do cliente da API do Prodsmart.

CLIENTE

Um único objeto de cliente.

O recurso Cliente tem os seguintes atributos:

  • id (fornecido)

  • code (cadeia, obrigatório, único) - código do cliente

  • name (cadeia, obrigatório) - nome do cliente

  • number (cadeia, opcional) - número do cliente

  • phone-number (cadeia, opcional) - número de telefone do cliente

  • email (cadeia, opcional) - e-mail do cliente

  • addresses (matriz, opcional)

  • code (cadeia, obrigatório, único) - código de endereço

  • name (cadeia, opcional) - nome do endereço

  • address (cadeia, obrigatório) - linha de endereço

  • city (cadeia, opcional) - cidade do endereço

  • post-code (cadeia, opcional) - código postal do endereço

  • state (cadeia, opcional) - estado/região do endereço

  • country (cadeia, obrigatório) - código do país do endereço

  • default (booleano, opcional - reposto em falso) - se verdadeiro, é o endereço predefinido do cliente

  • contacts (matriz, opcional)

  • phone-number (cadeia, obrigatório se não houver e-mail) - número de telefone de contacto

  • email (cadeia, obrigatório se não houver número de telefone) - e-mail de contacto

  • name (cadeia, opcional) - nome do contacto

  • default (booleano, opcional - reposto em falso) - se verdadeiro, é o contacto predefinido do cliente

Regras de endereço/contacto predefinido:

  • Os contactos e endereços só podem ter um endereço ou contacto predefinido, respetivamente

  • Se um cliente tiver endereços, um dos endereços terá de ser o predefinido

  • Se um cliente tiver contactos, um dos contactos terá de ser o predefinido

  • Na criação/atualização de um cliente, se nenhum contacto/endereço predefinido for fornecido, o primeiro contacto/endereço será a predefinição

Criar um cliente

POST /api/clients{?access_token}

Para criar um Cliente, forneça um hash JSON dos atributos para o novo Cliente. Esta ação requer um access_token com âmbito de productions_write. Por enquanto, só é possível guardar um cliente. No futuro, se o pedido for uma matriz em vez de um recurso, todos os itens na matriz serão guardados.

Exemplo de URI

POST /api/clients?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{ "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 } ] }

Resposta 201

Corpo

{ "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 } ] }

Resposta 400

Corpo

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

Listar clientes

GET /api/clients{?access_token}

Para listar Clientes. Esta ação requer um access_token com âmbito de productions_write. Este serviço é paginado, apresentando 25 clientes por página.

Exemplo de URI

GET /api/clients?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

id

number (opcional)

listar clientes filtrados por id

código

string (opcional)

listar clientes filtrados por código

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

[ { "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 } ] } ]

Resposta 400

Corpo

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

Obter um Cliente

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

Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

GET /api/clients/id?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

id

numeric (obrigatório)

Id de cliente

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 201

Corpo

{ "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 } ] }

Resposta 400

Corpo

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

Atualizar um Cliente

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

Para atualizar um Cliente, forneça um hash JSON dos atributos para o novo Cliente.

Contactos

  • Os contactos do fornecedor fornecidos substituirão os contactos atuais.

  • Se um contacto com o mesmo nome de um contacto existente for fornecido, os valores do contacto com esse nome serão substituídos pelos valores fornecidos.

  • Se não forem fornecidos contactos, os contactos existentes serão removidos.

Endereços

  • Os endereços fornecidos substituirão os endereços atuais.

  • Se um endereço com o mesmo código que um endereço existente for fornecido, os valores do endereço com esse código serão substituídos pelos valores fornecidos.

  • Se nenhum endereço for fornecido, os endereços existentes serão removidos.

  • Se um endereço tiver entidades associadas, o pedido falhará, pois o endereço não pode ser removido.

Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

PUT /api/clients/id?access_token=

Parâmetros de URI

id

numeric (obrigatório)

Id de cliente

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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    }  ]}

Resposta 201

Corpo

{ "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 } ] }

Resposta 400

Corpo

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

Remover um cliente

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

Exemplo de URI

DELETE /api/clients/id?access_token=

Parâmetros de URI

id

numeric (obrigatório)

ID de cliente

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 204

Corpo

Client was deleted

Resposta 412

Corpo

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

Ordem de venda

Recursos ClientOrder da API do Prodsmart.

ORDEM DE VENDA

Um único objeto de Ordem de venda. O recurso Ordem de venda é um dos recursos mais importantes da API do Prodsmart.

O recurso Ordem de venda tem os seguintes atributos:

  • id (fornecido)

  • code (cadeia, obrigatório) - código de ordem de venda

  • client (cadeia, opcional) - código do cliente

  • observations (cadeia, opcional) - observações de ordem de venda

  • products (matriz, obrigatório, não vazio)

    • code (cadeia, obrigatório, único) - código do produto

    • quantity (duplo, obrigatório, > 0) - quantidade pedida

    • due-date (data, opcional, formato AAAA-MM-DDTHH:MM:SSZ) - data final da expedição

    • requested-date (data, opcional, formato AAAA-MM-DDTHH:MM:SSZ) - data em que a expedição é solicitada

    • location (cadeia, opcional) - localização, se multilocal

    • price (duplo, opcional) - preço do produto

  • parameters (cadeia, opcional) - contém um atributo específico de ordem de venda

Criar uma Ordem de venda

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

Para criar uma Ordem de venda, indique um hash JSON dos atributos para a nova Ordem de venda. Esta ação requer um access_token com âmbito de productions_write. Por enquanto, só é possível guardar uma Ordem de venda. No futuro, se o pedido for uma matriz em vez de um recurso, todos os itens na matriz serão guardados.

Exemplo de URI

POST /api/client-order/?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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"    }  ]}

Resposta 201

Corpo

{  "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"    }  ]}

Resposta 400

Corpo

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

Listar Ordens de venda

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

Para listar Ordens de venda. Múltiplos parâmetros serão tratados como uma condição E. Esta ação requer um access_token com âmbito de productions_write. Este serviço é paginado, apresentando 25 ordens de venda por página.

Exemplo de URI

GET /api/client-order/?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

due-date-before

date (opcional)

listar ordens de venda com data final anterior a esta

due-date-after

date (opcional)

listar ordens de venda com data final posterior a esta

cliente

string (opcional)

custo de máquina

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

[  {    "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"      }    ]  }]

Resposta 400

Corpo

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

Obter uma Ordem de venda

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

Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

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

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

id

numeric (obrigatório)

ID da Ordem de venda

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 201

Corpo

{  "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"    }  ]}

Resposta 400

Corpo

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

Atualizar uma Ordem de venda

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

Para atualizar uma Ordem de venda, indique um hash JSON dos atributos para a nova Ordem de venda. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

PUT /api/client-order/?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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"    }  ]}

Resposta 201

Corpo

{  "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"    }  ]}

Resposta 400

Corpo

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

Remover uma Ordem de venda

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

Exemplo de URI

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

Parâmetros de URI

id

numeric (obrigatório)

ID da Ordem de venda

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 204

Corpo

Client order was deleted

Resposta 409

Corpo

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

Ordem de compra

Recursos de Ordem de compra da API do Prodsmart.

ORDEM DE COMPRA

Um único objeto de Ordem de compra. O recurso Ordem de compra é um dos recursos mais importantes da API do Prodsmart.

O recurso Ordem de compra tem os seguintes atributos:

  • id (fornecido)

  • code (cadeia, obrigatório) - código de ordem de compra

  • supplier (cadeia, opcional) - código do fornecedor

  • billing-address (cadeia, opcional) - endereço de faturação

  • observations (cadeia, opcional) - observações de ordem de compra

  • products (matriz, obrigatório, não vazio)

    • code (cadeia, obrigatório, único) - código do produto

    • quantity (duplo, obrigatório, > 0) - pedido de quantidade

    • due-date (data, opcional, formato AAAA-MM-DDTHH:MM:SSZ) - data final da receção

    • requested-date (data, opcional, formato AAAA-MM-DDTHH:MM:SSZ) - data em que a receção é solicitada

    • cost (duplo, opcional) - custo do produto

    • uom (cadeia, opcional) - unidade de medida do produto

  • delivery-address (cadeia, opcional) - endereço de entrega de receção

  • parameters (cadeia, opcional) - parâmetros de ordem de compra

  • approval-status (cadeia, opcional) - rascunho, em revisão, aprovado, confirmado, rejeitado

Criar uma ordem de compra

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

Para criar uma Ordem de compra, forneça um hash JSON dos atributos da nova Ordem de compra. Esta ação requer um access_token com âmbito de productions_write. Por enquanto, só é possível guardar uma Ordem de compra. No futuro, se o pedido for uma matriz em vez de um recurso, todos os itens na matriz serão guardados.

Exemplo de URI

POST /api/purchase-orders/?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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}

Resposta 201

Cabeçalhos

Content-Type: application/json

Corpo

{  "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}

Resposta 400

Corpo

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

Obter uma Ordem de compra

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

Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

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

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

id

numeric (obrigatório)

Id de Ordem de compra

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 201

Corpo

{  "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"    }  ]}

Resposta 400

Corpo

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

Atualizar uma Ordem de compra

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

Para atualizar uma Ordem de compra, forneça um hash JSON dos atributos da nova Ordem de compra. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

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

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

id

numeric (obrigatório)

Id de Ordem de compra

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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"    }  ]}

Resposta 201

Corpo

{  "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"    }  ]}

Resposta 400

Corpo

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

Remover uma ordem de compra

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

Exemplo de URI

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

Parâmetros de URI

id

numeric (obrigatório)

Id de Ordem de compra

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 204

Corpo

Purchase order was deleted

Resposta 409

Corpo

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

Listar Ordens de compra

GET /api/purchase-orders{?access_token}

Para listar Ordens de compra. Vários parâmetros serão tratados como uma condição E. Esta ação requer um access_token com âmbito de productions_write. Este serviço é paginado, apresentando 25 ordens de venda por página.

Exemplo de URI

GET /api/purchase-orders?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

id

number (opcional)

listar ordens de compra filtradas por id de ordem de compra

código

string (opcional)

listar ordens de compra filtradas por código de ordem de compra

due-date-before

date (opcional)

listar ordens de compra com data final anterior a esta

due-date-after

date (opcional)

listar ordens de compra com data final posterior a esta

fornecedor

string (opcional)

listar ordens de compra filtradas por código do fornecedor

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

[  {    "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"      }    ]  }]

Resposta 400

Corpo

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

Ordem de produção

Recursos de Ordem de Produção da API do Prodsmart.

ORDEM DE PRODUÇÃO

Um único objeto de Ordem de produção. O recurso Ordem de produção é um dos recursos mais importantes da API do Prodsmart. Representa a ordem de gestão para produzir uma quantidade predeterminada de produtos durante um período definido por trabalhadores definidos.

O recurso Ordem de produção tem os seguintes atributos:

  • id (fornecido)

  • code (cadeia, obrigatório) - código de ordem de produção

  • start-date (data, obrigatório, formato AAAA-MM-DDTHH:MM:SSZ) - data em que esta ordem de produção está programada para iniciar

  • due-date (data, obrigatório, formato AAAA-MM-DDTHH:MM:SSZ) - data final desta ordem de produção

  • products (matriz, obrigatório, não vazio) - produtos e quantidades solicitados

  • product (cadeia, obrigatório, único) - código do produto

  • quantity-ordered (número inteiro, obrigatório, >0) - quantidade pedida

  • observations (opcional) - nota sobre este produto

  • quantity-produced (número inteiro, fornecido, >0) - quantidade produzida

  • description (opcional) - descrição para esta ordem de produção

  • shipping (opcional) - código de expedição para esta ordem

  • workers-assigned (matriz, opcional) -

  • number - número do trabalhador

  • machines (matriz, opcional)

  • code - código de máquina

  • serial-number (opcional)

  • description (opcional)

  • notes (opcional)

  • status (fornecido) - programado (antes de start_date e completo = 0), no prazo (antes de end_date e integridade < 100%), atrasado (após end_date completo < 100%), concluído (completo > = 100%)

  • running-status (fornecido) - não iniciado (sem produções), iniciado (com produções), fechado (fechado manualmente ou fechado por conclusão), arquivado (arquivado manualmente)

O id de estado é atribuído pela API do Prodsmart no momento da criação.

Obter uma Ordem de produção

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

Para obter uma Ordem de produção, basta realizar um pedido GET com o ID da Ordem de produção. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

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

Parâmetros de URI

id

numeric (obrigatório)

ID da Ordem de produção

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

trabalhadores

boolean (opcional)

mostrar lista de trabalhadores na resposta

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

{  "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}

Atualizar/substituir uma Ordem de produção

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

Para atualizar uma Ordem de produção, basta realizar um pedido PUT com o ID da Ordem de produção. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

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

Parâmetros de URI

id

numeric (obrigatório)

ID da Ordem de produção

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

trabalhadores

boolean (opcional)

mostrar lista de trabalhadores na resposta

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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}

Resposta 200

Corpo

{  "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}

Remover uma Ordem de produção

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

Exemplo de URI

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

Parâmetros de URI

id

numeric (obrigatório)

ID da Ordem de produção

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 204

Corpo

Production order was deleted

Criar uma Ordem de produção

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

Para criar uma Ordem de produção, forneça um hash JSON dos atributos para a nova Ordem de produção. Esta ação requer um access_token com âmbito de productions_write. Por enquanto, só é possível guardar uma Ordem de produção. No futuro, se o pedido for uma matriz em vez de um recurso, todos os itens na matriz serão guardados.

Exemplo de URI

POST /api/production-orders/?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

trabalhadores

boolean (opcional)

mostrar lista de trabalhadores na resposta

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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}

Resposta 201

Corpo

{    "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}

Resposta 400

Corpo

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

Listar Ordens de produção

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

Para listar Ordens de produção. Vários parâmetros serão tratados como uma condição E. Esta ação requer um access_token com âmbito de productions_write. Este serviço é paginado, apresentando 25 OPs por página.

Exemplo de URI

GET /api/production-orders/?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

start-date-before

date (opcional)

listar ordens de produção com data de início anterior a esta

start-date-after

date (opcional)

listar ordens de produção com data de início posterior a esta

due-date-before

date (opcional)

listar ordens de produção com data final anterior a esta

due-date-after

date (opcional)

listar ordens de produção com data final posterior a esta

running-status

string (opcional)

não iniciado, iniciado, fechado, arquivado

ativo

boolean (opcional)

listar somente ordens de produção ativas (verdadeiro) ou não ativas (falso)

produto

string (opcional)

código de produto

máquina

string (opcional)

custo de máquina

trabalhadores

boolean (opcional)

mostrar lista de trabalhadores na resposta

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

[  {    "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  }]

Notificar um problema de ordem de produção

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

Serviço que publica uma mensagem curta no feed e adiciona uma mensagem na Ordem de produção.

  • mensagem curta (cadeia, obrigatório) - mensagem publicada no feed, comprimento máximo de 140 caracteres

  • mensagem (cadeia, opcional) - mensagem adicionada à secção de notas na OC

Exemplo de URI

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

Parâmetros de URI

id

numeric (obrigatório)

ID da Ordem de produção

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

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

Resposta 200

Ativar uma Ordem de produção

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

Serviço que ativa a Ordem de produção.

Exemplo de URI

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

Parâmetros de URI

id

numeric (obrigatório)

ID da Ordem de produção

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{}

Resposta 200

Resposta 204

Corpo

Production Order was already active

Resposta 405

Corpo

Production Order was closed or archived and cannot be activated

Produtos

Recursos de produto da API do Prodsmart.

PRODUCT

Um único objeto de produto. O recurso Produto é um dos recursos mais importantes da API do Prodsmart. Representa os produtos de uma fábrica e contém as operações necessárias para a sua produção. Este método cria novos produtos e as suas operações. Também pode ser utilizado

O recurso Produto tem os seguintes atributos:

  • code (cadeia, obrigatório) - código de produto

  • name (cadeia, obrigatório) - nome do produto

  • section (cadeia, opcional)

  • families (matriz, opcional)

  • operations (matriz, opcional) - operações para produzir o produto

    • code (cadeia, obrigatório) - código de operação

    • name (cadeia, obrigatório) - nome da operação

    • waste (matriz, opcional)

    • task-durations (matriz, opcional, máx:1)

      • duration (tempo, opcional, por exemplo, formato "10H59m59s") - o tempo médio que esta operação demora a ser executada, em teoria

      • duration-customer (hora, opcional, por exemplo, formato "10H59m59s") - o tempo definido no orçamento

      • ratio-quantity (duplo, opcional, predefinição: 1.0) - o volume produzido em cada instância desta operação

    • times-per-product (número inteiro, opcional, predefinição: 1) - o número de vezes que esta operação deve ser executada para completar uma unidade do produto

    • custom-fields (matriz, opcional, tem de existir no sistema) - campos personalizados a serem adicionados à operação

      • name (cadeia, obrigatório) - o nome do campo personalizado, já criado no sistema

    • machines (matriz, opcional, tem de existir no sistema) - máquinas que podem ser utilizadas para realizar a operação

      • code (cadeia, obrigatório) - o código de máquina, já criado no sistema

    • disabled (booleano, opcional) - desativa a operação

    • optional (booleano, opcional) - definir a operação como opcional

    • recovery (booleano, opcional) - definir a operação como recuperação

    • no-time (booleano, opcional) - não registar tempos de produção

    • no-quantity (booleano, opcional) - não registar quantidade de produção

    • as-team (booleano, opcional) - operação a ser executada como equipa

    • max-waste-threshold (duplo, opcional) - coeficiente máximo de desperdício a permitir

Os campos não presentes no pedido serão definidos com os valores predefinidos. Ao utilizar este método para produtos/operações existentes, os campos não presentes serão considerados eliminações.

Obter um produto

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

Para obter um produto, basta executar um pedido GET com o código do produto. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

GET /api/products/code?access_token=

Parâmetros de URI

código

string (obrigatório)

Código do produto.

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

{  "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}

Resposta 404

Corpo

If product with the provided code doesn't exist.

Criar um produto

POST /api/products{?access_token}

Para criar um produto, forneça um hash JSON dos atributos para o novo produto e as suas operações. Esta ação requer um access_token com âmbito de productions_write. Operações múltiplas podem ser criadas de uma só vez.

Exemplo de URI

POST /api/products?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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}

Resposta 201

Corpo

{  "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}

Resposta 400

Corpo

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

Atualizar produto

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

Para atualizar um produto, forneça um código e um hash JSON de atributos para o produto existente e as suas operações. Esta ação requer um access_token com âmbito de productions_write. Por enquanto, só é possível guardar um produto, mas várias operações podem ser criadas de uma só vez.

Exemplo de URI

PUT /api/products/code?access_token=

Parâmetros de URI

código

string (obrigatório)

Código do produto.

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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}

Resposta 201

Corpo

{  "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}

Resposta 400

Corpo

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

Eliminar produto

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

Para eliminar um produto, forneça o código de produto.

Exemplo de URI

DELETE /api/products/code?access_token=

Parâmetros de URI

código

string (obrigatório)

Código do produto.

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

Content-Type: application/json

Resposta 204

Resposta 400

Corpo

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

Listar produtos

GET /api/products{?access_token}

Para listar os produtos e as suas operações. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

GET /api/products?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

product-family-code

string (opcional)

listar produtos que pertencem à família de produtos fornecida

modification-date

date (opcional)

listar os produtos que foram modificados através do backoffice após a data indicada

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

{  "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}

Resposta 400

Corpo

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

BoM DO PRODUTO

O recurso da lista de materiais do produto (BoM) estipula os materiais utilizados para fabricar um produto específico. A lista de materiais tem os seguintes atributos:

  • product-code - produto principal

  • bom (matriz, obrigatório)

    • product-code (cadeia, obrigatório) - código do produto de componente/consumo

    • quantity (duplo, obrigatório) - quantidade

    • operation-code (string, opcional) - código de operação em que o material definido no código de produto é consumido. Se vazio, o consumo ocorrerá na primeira operação do processo de fabrico para este produto.

Atualizar a BoM do produto

POST /api/bom{?access_token}

Para atualizar a Lista de materiais de um produto, forneça um hash JSON dos atributos para o novo produto e as suas operações. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

POST /api/bom?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

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

Resposta 201

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

Resposta 404

Corpo

Main product not found

Resposta 400

Corpo

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

STOCK DE PRODUTO

O recurso Stock estipula as ações disponíveis para um produto específico.

  • product-code (cadeia, obrigatório)

  • stock (duplo, obrigatório)

  • date (data, opcional) - data da contagem de stock

Atualizar o Stock de Produto

POST /api/stock{?access_token}

Para atualizar o stock de um Produto, forneça uma hash JSON dos atributos para o seu stock atual. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

POST /api/stock?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

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

Resposta 201

Corpo

Request successful

Resposta 404

Corpo

Product not found

Resposta 400

Corpo

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

Famílias de produtos

Recursos de produto da API do Prodsmart.

FAMÍLIA DE PRODUTOS

O objeto Família de produtos representa a família ou as famílias às quais um produto pertence.

O recurso Família de produtos tem os seguintes atributos:

  • code (cadeia, obrigatório) - código da família de produtos

  • name (cadeia, obrigatório) - nome da família de produtos

Criar uma família de produtos

POST /api/product-families{?access_token}

Para criar uma ou mais famílias de produtos ・ Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

POST /api/product-families?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

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

Resposta 201

Corpo

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

Resposta 400

Corpo

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

Eliminar família de produtos

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

Para eliminar uma família de produtos, forneça o código ProductFamily

Exemplo de URI

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

Parâmetros de URI

código

string (obrigatório)

Código do produto.

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

Content-Type: application/json

Resposta 204

Corpo

Product Family was deleted

Resposta 400

Corpo

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

Listar Famílias de produtos

GET /api/product-families{?access_token}

Para listar as famílias de produtos. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

GET /api/product-families?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 201

Corpo

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

Resposta 400

Corpo

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

Máquinas

Recursos de produção da API do Prodsmart.

CONTADOR

Atualizar contador

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

Para atualizar o contador atual na máquina, basta enviar o seguinte pedido. Para simplificar a ligação da máquina, pode utilizar access_token ou enviar credenciais de api no cabeçalho de autenticação com autenticação básica. O Prodsmart atualizará automaticamente a produção iniciada pelo trabalhador naquela máquina. A contagem de quantidades e as quantidades de desperdícios têm de ser incrementais (ou seja, sempre maiores do que as quantidades enviadas anteriormente).

Exemplo de URI

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

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

machine_code

string (obrigatório)

Código de máquina definido na plataforma Prodsmart

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

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

Resposta 200

Corpo

Returns the new value for the machine's counter.

Resposta 400

Corpo

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

PARÂMETROS

Atualizar parâmetros

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

Para atualizar um parâmetro de máquina, basta enviar o seguinte pedido. Para simplificar a ligação da máquina, pode utilizar access_token ou enviar credenciais de api no cabeçalho de autenticação com autenticação básica. Quando estes parâmetros forem passados, se um registo de produção for

Exemplo de URI

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

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

machine_code

string (obrigatório)

Código de máquina definido na plataforma Prodsmart

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

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

Resposta 200

PARAGEM

Atualizar paragem

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

Para atualizar o estado atual na máquina, basta enviar o seguinte pedido. Para simplificar a ligação da máquina, pode utilizar access_token ou enviar credenciais de api no cabeçalho de autenticação com autenticação básica. O Prodsmart regista automaticamente uma paragem ou encerra-as, de acordo com as informações recebidas. Envie 0 para a máquina parada, 1 se estiver ativada e especifique o tipo de tempo de inatividade.

Para atualizar um estado de máquina, especifique os seguintes atributos:

  • type (cadeia, obrigatório, tem de ser um tipo de paragem já atribuído à máquina) - o tipo de paragem

  • running (número, requerido, 0 ou 1) - é a máquina parada (0) ou em execução (1)

Exemplo de URI

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

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

machine_code

string (obrigatório)

Código de máquina definido na plataforma Prodsmart

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

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

Resposta 200

Produção

Recursos de produção da API do Prodsmart.

PRODUÇÃO

Um único objeto de produção. O recurso Produção é o recurso central da API do Prodsmart. Representa o trabalho de um trabalhador numa função durante um período.

O recurso Produção tem os seguintes atributos:

  • id

  • start-time (data, obrigatório, formato AAAA-MM-DDTHH:MM:SSZ) - hora de início da produção

  • end-time (data, obrigatório, formato AAAA-MM-DDTHH:MM:SSZ) - hora final de produção

  • work-time (duração, indicado, formato 00H00m00s) - tempo de trabalho de produção (dentro do período agendado do horário/relógios de ponto e excluindo paragens)

  • production-order (opcional) - ordem de produção para a qual esta produção foi realizada

    • code (cadeia, obrigatório) - código de ordem de produção

    • id (cadeia, obrigatório)

  • operation (obrigatório) - tarefa que foi executada nesta produção

    • code (cadeia, obrigatório, único) - código de tarefa

    • product (obrigatório) - o material que o trabalhador está a trabalhar nesta função

  • quantity (número inteiro, obrigatório, > 0) - quantidade produzida nesta produção

  • worker (obrigatório) - uma pessoa que executa tarefas

    • number (longo, obrigatório, único) - número do trabalhador

  • desperdícios produzidos (matriz, opcional) - produção de material defeituoso numa operação

    • quantity (numérico, obrigatório) - código de desperdício

      • waste - tipo de material defeituoso

      • code (cadeia, obrigatório, único) - código de desperdício

      • description (cadeia, obrigatório) - descrição do desperdício

      • flaw (cadeia, obrigatório) - tipo de desperdício

      • quantity (número inteiro, obrigatório) - quantidade de desperdícios produzidos

O id de estado é atribuído pela API do Prodsmart no momento da criação.

Atualizar uma produção

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

Para atualizar uma Produção, forneça um código e um hash JSON de atributos para a Produção existente. Esta ação requer um access_token com âmbito de productions_write. Por enquanto, só é possível guardar um produto, mas várias operações podem ser criadas de uma só vez.

Exemplo de URI

PUT /api/productions/id?access_token=

Parâmetros de URI

id

numeric (obrigatório)

Id de Produção

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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}

Resposta 200

Corpo

{  "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}

Resposta 400

Corpo

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

Eliminar produção

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

Para eliminar uma Produção, forneça um ID de produção.

Exemplo de URI

DELETE /api/productions/id?access_token=

Parâmetros de URI

id

numeric (obrigatório)

Id de Produção

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

Content-Type: application/json

Resposta 201

Corpo

{  "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}

Resposta 400

Corpo

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

Listar produções

GET /api/productions{?access_token}

Para listar Produções. Vários parâmetros serão tratados como uma condição E. Esta ação requer um access_token com âmbito de productions_write. Este serviço é paginado, apresentando 25 produções por página.

Exemplo de URI

GET /api/productions?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

production-order-id

numeric (opcional)

listar produções com esta ordem de produção

production-order-code

string (opcional)

listar produções com esta (ou estas) ordem(ns) de produção

trabalhador

numeric (opcional)

listar produções com este trabalhador (número do trabalhador)

start-time-before

date (opcional)

listar produções com hora de início antes desta

start-time-after

date (opcional)

listar produções com hora de início após esta

end-time-before

date (opcional)

listar produções com hora de fim antes desta

end-time-after

date (opcional)

listar produções com hora de fim posterior a esta

start-time

date (opcional)

listar produções em execução após esta hora de início (não utilizar combinado com -before -after)

checked-out

boolean (opcional)

listar as produções que são concluídas.

worker-name

boolean (opcional)

obtém o nome e o número do trabalhador em vez de apenas o número do trabalhador.

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

[  {    "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  }]

Paragem

Recursos de paragem da API do Prodsmart.

PARAGENS

Listar paragens

GET /api/downtimes{?access_token}

Para listar paragens. Vários parâmetros serão tratados como uma condição E. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

GET /api/downtimes?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

start-time-before

date (opcional)

lista tempos de inatividade com hora de início antes desta

start-time-after

date (opcional)

lista ordens de tempo de inatividade com hora de início posterior a esta

end-time-before

date (opcional)

lista tempos de inatividade com hora de fim antes desta

end-time-after

date (opcional)

lista tempos de inatividade com hora de fim posterior a esta

máquina

numeric (opcional)

lista tempos de inatividade nesta máquina

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

[  {    "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

Recursos de Relógio de ponto da API do Prodsmart.

RELÓGIO DE PONTO

Os webhooks estão disponíveis para eventos de relógio de ponto no menu Integrações na aplicação. Para utilizar esta funcionalidade, adicione a chamada de URL de ponto final com os eventos de notificação que pretende escutar. Esforçamo-nos para enviar notificações de webhook tão rapidamente quanto os eventos ocorrem no nosso sistema. Atualmente, não oferecemos suporte para novas tentativas.

Lista relógios de ponto

GET /api/punchclocks{?access_token}

Para listar relógios de ponto. Vários parâmetros serão tratados como uma condição E. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

GET /api/punchclocks?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

date-before

date (opcional)

lista entradas do relógio de ponto com data anterior a esta

date-after

date (opcional)

lista entradas do relógio de ponto com data posterior a esta

trabalhador

numeric (opcional)

lista entradas de relógio de ponto para este trabalhador

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

[{    "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')

Movimento de inventário

Recursos de Movimento de inventário da API do Prodsmart.

MOVIMENTO DE INVENTÁRIO

Um único objeto de Movimento de inventário. O recurso de Movimentação de inventário é um dos recursos mais importantes da API do Prodsmart.

O recurso de Movimentação de inventário tem os seguintes atributos:

  • id (fornecido)

  • product (cadeia, obrigatório) - código do produto

  • date-time (data, opcional, formato AAAA-MM-DDTHH:MM:SSZ) - data em que o movimento de inventário é criado

  • quantity (duplo, obrigatório) - quantidade de movimento de inventário

  • type (cadeia, obrigatório) - tipo de movimento de inventário: entrada, saída, consumo, produção

  • lot (cadeia, opcional) - lote de movimento de inventário a utilizar

  • total-cost (bigdecimal, opcional) - custo total do movimento de stock para a quantidade

  • warehouse-location (cadeia, opcional) - código de localização de armazém

  • warehouse (cadeia, opcional) - código do armazém

  • location (cadeia, opcional) - localização, se multilocal

  • comment (cadeia, opcional) - comentário de movimento de inventário

Obter um Movimento de inventário

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

Para obter um Movimento de inventário, basta realizar um pedido GET com o id do Movimento de inventário. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

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

Parâmetros de URI

id

numeric (obrigatório)

Id de Movimento de inventário

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

{  "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"    }  }}

Criar movimento de inventário

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

Para criar um Movimento de inventário, forneça um hash JSON dos atributos para o novo Movimento de inventário. Esta ação requer um access_token com âmbito de productions_write. Por enquanto, só é possível guardar um Movimento de Inventário. No futuro, se o pedido for uma matriz em vez de um recurso, todos os itens na matriz serão guardados.

Exemplo de URI

POST /api/inventory-movements/?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{  "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"}

Resposta 200

Corpo

{  "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"    }  }}

Resposta 400

Corpo

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

Atualizar um Movimento de inventário

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

Para atualizar um Movimento de inventário, forneça um JSON com os atributos que deseja atualizar no Movimento de inventário (todos os atributos são opcionais). Esta ação requer um access_token com productions_write scope.

Exemplo de URI

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

Parâmetros de URI

id

numeric (obrigatório)

Id de Movimento de inventário

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Corpo

{ "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" }

Eliminar um Movimento de inventário

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

Para eliminar um Movimento de inventário, indique um ID de Movimento de inventário.

Exemplo de URI

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

Parâmetros de URI

id

numeric (obrigatório)

Id de Movimento de inventário

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 204

Resposta 400

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

Listar Movimentos de inventário

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

Para listar Movimentos de Inventário. Vários parâmetros serão tratados como uma condição E. Esta ação requer um access_token com âmbito de productions_write. Este serviço é paginado, apresentando 25 MIs por página.

Exemplo de URI

GET /api/inventory-movements/?access_token=

Parâmetros de URI

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

página

numeric (opcional)

índice de página de resultados, a começar em 1

product-code

string (opcional)

código de produto

tipo

string (opcional)

tipo de movimento de inventário: entrada, saída, consumo, produção

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

[  {    "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

Recursos de Stock da API do Prodsmart.

Obter Stock de produto

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

Para obter um Stock de produto, basta realizar um pedido GET com o código do Produto. Vários parâmetros serão tratados como uma condição E. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

GET /api/stock/code?access_token=

Parâmetros de URI

código

string (obrigatório)

Código do produto.

access_token

string (obrigatório)

Token de acesso à API do Prodsmart.

lot

string (opcional)

Obter código do lote e quantidade de stock para o(s) lote(s) do produto

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

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

Resposta 400

Corpo

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

Relatórios

Recursos de relatório da API do Prodsmart.

Tempo de trabalho do trabalhador

Tempo de trabalho do trabalhador GET/api/reports/worker-labor-time{?access_token}

Para obter um relatório, basta realizar um pedido GET com intervalo de tempo para extrair o relatório. É possível adicionar um trabalhador e um parâmetro de secção para filtrar o relatório. Além disso, é possível especificar alguns sinalizadores para personalizar o conteúdo do relatório. O valor predefinido de todos os sinalizadores é falso. Esta ação requer um access_token com âmbito de productions_write.

Exemplo de URI

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

Parâmetros de URI

start-time

string (obrigatório)

Gerar relatório para datas após esta (incluído)

end-time

string (obrigatório)

Gerar relatório para datas anteriores a esta (incluído)

access_token

string (obrigatório)

Token de acesso à API do Prodsmart

worker-number

string (opcional)

Especifique um número de trabalhador para filtrar o relatório

section

string (opcional)

Especifique um nome de secção. Todos os trabalhadores desta secção serão incluídos no relatório

show-rework

boolean (opcional)

Incluir um novo campo com operações de retrabalho no relatório

show-weekend

boolean (opcional)

Incluir dias de fim de semana nos dados

only-punch-clock

boolean (opcional)

Considerar apenas o tempo de presença com entradas de relógio de ponto

página

numeric (opcional)

índice de página de resultados, a começar em 1

Pedido

Cabeçalhos

Content-Type: application/json

Resposta 200

Corpo

[  {    "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"  }]

Resposta 400

Corpo

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

Resposta 429

Corpo

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

Autorização e controlo de acesso

Acesso e controlo do token de autenticação do Prodsmart.

AUTORIZAÇÃO

O recurso de Autorização representa uma autorização concedida à empresa. Apenas pode aceder à sua própria autorização. A autenticação utilizada é a autenticação Básica, em que o cabeçalho de Autenticação está no formato <base64 encoded value of API_KEY:API_SECRET>. Para obter a chave e o segredo da API, inicie sessão no Prodsmart e edite o seu utilizador. (Nota: tem de ter uma função de administrador para obtê-la). O recurso de Autorização tem o seguinte atributo:

  • token

  • scopes

Em que token representa um token e âmbitos é uma matriz de âmbitos concedidos para a autorização concedida. Atualmente, o único âmbito disponível é productions_write.

Obter Autorização

GET /api/authorization

Utilize GET para obter um token de acesso existente. Se um token ainda não existir, pode ser gerado um utilizando o método POST.

Exemplo de URI

GET /api/authorization

Pedido

Cabeçalhos

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Resposta 200

Cabeçalhos

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

Corpo

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

Criar autorização

POST /api/authorization

Utilize POST para gerar um novo token de acesso.

Exemplo de URI

POST /api/authorization

Pedido

Cabeçalhos

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

Corpo

{ "scopes": [ "productions_write" ] }

Resposta 201

Cabeçalhos

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

Corpo

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

Remover uma autorização

DELETE /api/authorization

Exemplo de URI

DELETE /api/authorization

Pedido

Cabeçalhos

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Resposta 204

Isto respondeu à sua pergunta?