Serviç os da Web de distribuiç ã o digital (DDWS) GetInvoice - Manual do serviço

Documentos relacionados
Serviç os da Web de distribuiç ã o digital (DDWS) GetMyPrice - Serviço manual

Serviç os da Web de distribuiç ã o digital (DDWS) GetOrderDetails - Manual do serviço

Serviç os da rede de distribuiç ã o digital (DDWS) GetLicense - Manual do serviço

Serviços da rede de distribuição digital (DDWS) GetPartnerDesignation - Manual do serviço

Serviç os da Web de distribuição digital (DDWS) Guia de autenticação de API

Integração REST Text2Speech Versão 1.1

Serviços da rede de distribuição digital (DDWS) PlaceOrder - Serviço manual

Plataforma Dados Saúde. WebAPI

Plataforma Dados Saúde. WebAPI

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...

Este item do documento apresenta o AuthSnet, protocolo de autenticação usado para acessar os recursos privados (protected resource) da ServiceNet.

Manual de uso da API de Avaliação e Acompanhamento. servicos.gov.br

API olx.com.br. Utilizando o protocolo OAuth 2.0

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...

Admin Docs Documentation

MANUAL DE INTEGRAÇÃO. Plataforma Simplus

API icontrato. Versão 1.0. Para ajuda e informações, abra um chamado pelo

PUSH WEB SERVER HTTP GATEWAY. Versão 1.0

gurado REST API Documentation

Manual do Checkout 2.0

Manual Direct100 API V2 RICCARDO BARANA

Pagador Transaction. Consulta. Versão 1.3

Coletando dados utilizando a API do Zabbix com PHP e JSON

Manual de Integração do icarta

PAPO SMS MANUAL DE INTEGRAÇÃO DO DESENVOLVEDOR VERSÃO 1.0.1

API Documentation. Release Igor Morse

Manual de Integração DOCUMENTAÇÃO TÉCNICA. Especificação para integração via API, Webservices e SMPP.

Sumário. Rua República Argentina, 176 Blumenau Santa Catarina Brasil

API - Lista de Compras

Integração HTTP GET. Versão 2.0

Requisitos de faturação

Manual de Configuração do ELT WebService ELT EDI MultiTasker Sistema de Averbação Eletrônica

API DE INTEGRAÇÃO VERSÃO 2. Janeiro/2017. Manual de Integração. Setor de Desenvolvimento

MANUAL DE INTEGRAÇÃO API DE PAGAMENTOS PRIXPAY v.003

Amadeus Touchless Queue Dispatch

API. Lista de métodos da API do Funil de Vendas. Criação de Atividade. POST /v2/activities. Authorization: Basic { ACTIVITY } Exemplo:

Documentação da API.NET do idrake Service

Integração HTTP REST. Versão 2.0

NRS-GROUP Av. Paulista nº º Andar Sala 74 São Paulo (Brasil) Telefone

Instruções para a Configuração dos Registros para os Fornecedores da HP:

Plataforma Dados Saúde. WebAPI

Classe PHP Client. A classe Zend\Http\Client fornece uma interface para realizar pedidos HTTP.

Plataforma Dados Saúde. WebAPI

Documentação Geral para Desenvolvedores versão 1.0

Avisos legais KYOCERA Document Solutions Inc.

GUIA API BTB /04/2019 INFORMAÇÃO PÚBLICA

Application Programming Interface para interligação com WEuroGest

Manual de Configuração do ELT WebService

Manual de Utilização

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

WEBINAR. Como ingressar mais rápido no Marketplace Via Varejo: Entenda as etapas necessárias e tire suas dúvidas

Sistema para automação e controle residencial via Twitter

Hewlett Packard Enterprise Instruções de Configuração dos Vendedores:

API - IMERCADO Captura, Alocação e Repasse

Troca de Informações Através de Arquivo Pessoa Jurídica

Integração MK-Auth com a Juno/Boleto Fácil. 1. Configurando a Juno no MK-Auth

Manual de Instruções para Implementar o Formulário de Inclusão de Pedidos via Webservice Projeto Carvalhaes

ASP.NET Web Services. José Antônio da Cunha IFRN

API SEBRAE MÉTODOS PARA INTEGRAÇÃO COM A PLATAFORMA Versão 1.0 Brasília 2017

Verifique a Conectividade do servidor Radius com comando dos radius AAA do teste

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Simplificada (Juridica) Versão: 1.0. Autor: Angelo Bestetti Junior

Register ME. Versão 4.0. Guia do administrador

API SEBRAE MÉTODOS PARA INTEGRAÇÃO COM A BIS. Versão 1.0

MENSAGEM FONADAS. Processamento e envio de mensagens VOZ

MANUAL DE INSTRUÇÕES DE OPERAÇÃO DO SISTEMA SLIMOFFICE PARA FORNECEDORES

MANUAL DE UTILIZAÇÃO DO

Aplicação Web Zend Framework 2 Cliente de Aplicação Asp.Net Web API

Infor LN Guia do usuário para estatísticas

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Módulo PicPay E-commerce v1.0

Requisitos de faturação

Guia do administrador

Login Google. Copie a SSL URL, que no meu caso é

Manual de Integração


REGISTRO DE BOLETO BANCÁRIO BRADESCO. Guia de Integração (Versão /2017)

Integração Web Services REST Gateway

No texto do de convite existem duas informações importantes: o link para o acesso a Cotação Web e a senha para o encerramento da cotação.

Introdução. Documento revisão 2.1

Autenticação descrita no item 3 do documento (credenciais serão passados ao responsável técnico via direto);

Manual de Utilização

Manual de Integração

Histórico de Revisões

Python para web com Flask. #PythonAmazonas

Manual da API REST - Versão 1.0

Instruções de Configuração dos Vendedores de HP:

Para efetuar a configuração de s no painel, acesse o cpanel a partir do link abaixo:

Instrumentação do NEON via WebSocket Especificação dos serviços de instrumentação do NEON através de conexões WebSocket.

SISTEMA DE EMISSÃO DE NOTA FISCAL DE PRESTAÇÃO DE SERVIÇOS

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Redes de Computadores

Manual de Integração - Versão 1.0. Esta é uma versão antiga da API, se for iniciar uma nova integração utilize a v3:

Comércio Eletrônico Locaweb

2017/07/25 19:38 1/10 DocFix

InPost Brasil. Integração e-commerce e InPost. Revisão 0.1 API 1.0 Informações Confidenciais e Proprietárias da InPost Brasil Ltda.

Guia do Google Cloud Print

Usando a geração de boletos

Manual de Integração Cartórios

GUIA DE INTEGRAÇÃO WEB2APP APLICATIVO PAGSEGURO 1. Guia de Integração Web2App Aplicativo PagSeguro VERSÃO 1.0.0

PRDS C#.Net Alexandre L. Silva

Transcrição:

Serviç os da Web de distribuiç ã o digital (DDWS) GetInvoice - Manual do serviço

ÍNDICE Histórico de revisão... 3 1 Introdução... 3 1.1 Visão geral... 3 1.2 Documentos de suporte... 3 2 Introdução... 4 3 Visão geral do serviço Obter fatura... 4 3.1 GetInvoiceList... 6 3.2 GetInvoiceDetails... 6 3.3 Vantagens do serviço GetInvoice... 6 4 Informações de referência do serviço GetInvoice... 6 4.1 Nota sobre vários CSNs... 6 4.2 Esquema de solicitação... 7 4.3 Esquema de resposta... 8 4.3.1 GetInvoiceList... 8 4.3.2 GetInvoiceDetails... 8 4.4 Esquema de erro... 11 4.5 Mensagem de solicitação... 11 4.5.1 Mensagem de solicitação - GetInvoiceList... 11 4.5.2 Mensagem de solicitação - GetInvoiceDetails... 12 4.6 Mensagem de resposta... 13 4.6.1 Mensagem de resposta - GetInvoiceList... 13 4.6.2 Mensagem de resposta - GetInvoiceDetails... 13 4.7 Mensagens de erro... 18 4.7.1 Amostra de resposta de erro... 19 5 Apêndice... 19 5.1 Código C# para inserir vários CSNs... 19 5.1.1 Programa principal... 19 5.1.2 Classe de Utilitários... 20 5.1.3 POCOs... 24 2 Manual de referê ncia do serviç o da Web

Histórico de revisão Versão Data Autor Comentários 2.1 22/10/2015 AR Seção Histórico de revisão adicionada 2.2 14/12/2015 AR Foram adicionados os campos adsk_vat_number, recurring_po, total_amount sob o invoice_header para a resposta de GetInvoiceDetails na seção 4.3 2.3 22/12/2015 AR Seção 4.2, o comprimento máximo de purchase_order_number foi substituído para 35 caracteres 2.4 23/02/2016 RL Adicione os campos bill_per_start_dt e bill_per_end_dt a invoice_items. 2.5 23/02/2016 ER Atualizar descrição de contract_end 1 Introdução 1.1 Visão geral A plataforma do Serviço da Web de distribuição digital (DDWS) é uma solução para realização de pedidos criada diretamente por nossos Parceiros para a Autodesk, com pouco toque dos Parceiros e nenhum toque da Autodesk.Este novo recurso de negócios permitirá as transações de serviço Web B2B verdadeiras entre os Parceiros e a Autodesk. Para os Parceiros têm a implementação efetiva da Plataforma de serviços digitais da Autodesk, as afiliadas precisarão ter familiaridade com os serviços da Web REST, o OAuth e o JSON. Uma amostra de um aplicativo de cliente é fornecida (gravado na linguagem Ruby) em um documento Guia de programação, que ajudarão os chamados desenvolvedores afiliados a consumirem a API do serviço digital. 1.2 Documentos de suporte Guia do desenvolvedor para parceiros da Autodesk: este guia ajuda os Parceiros no processo de apresentação e no acesso aos serviços do DDWS. O guia também serve para apresentar aos Parceiros a Plataforma de serviços digitais da Autodesk, usando instruções passo a passo que os orientam nas atividades iniciais necessárias para integração. 3 Manual de referê ncia do serviç o da Web

Documentação da API de autenticação: este documento orientará os Parceiros pelo processo de geração de credenciais, assinaturas e tokens de acesso necessários para usar as APIs do serviço. Ele também contém informações para o desenvolvimento de um aplicativo de integração de um Parceiro. Ele fornece a compreensão básica da integração do serviço da Web e demonstra o desenvolvimento de um aplicativo típico. 2 Introdução Como parte do processo de apresentação, os Parceiros serão associados a um único Número específico do cliente (CSN) e terão seu aplicativo registrado com a Autodesk. Para obter mais detalhes sobre o processo de integração, consulte o Guia do desenvolvedor para parceiros da Autodesk. 3 Visão geral do serviço Obter fatura Pode haver situações em que o solicitante que faz a entrada tem um intervalo de datas (de data e para data). Nesse caso, o serviço não pode fornecer todos os detalhes da fatura para um determinado período, pois há uma chance de ter uma quantidade enorme de faturas durante um determinado período. Há duas operações definidas neste serviço para pesquisa de faturas: getinvoicelist getinvoicedetails 4 Manual de referê ncia do serviç o da Web

O diagrama acima é uma indicação do serviço getinvoice. Ao implementar a plataforma de serviços digitais da Autodesk, você pode tornar seus processos mais eficientes. A próxima série de gráficos ilustra uma experiência do usuário com a loja da Web. Esta primeira captura de tela mostra como a operação getinvoicelist será chamada. Os clientes vão inserir um intervalo de datas para obter as faturas correspondentes a um determinado período. Com base nessa entrada, todas as faturas que estão nesse intervalo de datas serão exibidas para o cliente. Depois de obter a lista de faturas, os clientes podem obter os detalhes da fatura para um número de fatura, número de ordem de compra, número do pedido de vendas específico, como mostrado a seguir na captura de tela. 5 Manual de referê ncia do serviç o da Web

3.1 GetInvoiceList A finalidade desta operação é obter a lista de faturas de um sistema de back-end se a entrada inclui somente um intervalo de datas. Depois que o solicitante receber a resposta, ele(a) chamará getinvoicedetails usando Número da fatura / Número da ordem de compra / Número do pedido de vendas como entrada. As seguintes entradas são necessárias para executar o serviço: 1. customer_number 2. invoice_date_from 3. invoice_date_to 3.2 GetInvoiceDetails A finalidade desta operação é obter os detalhes da fatura de uma entrada especificada. Esta operação pode ser chamada usando os seguintes conjuntos de entradas: 1. customer_number e purchase_order_number/ invoice_number / sales_order_number Se todos os três parâmetros (po_number, invoice_number e order_number) estão presentes em uma solicitação de serviço, a prioridade dos critérios de pesquisa será definida da seguinte maneira: 1. invoice_number (baixo) 2. purchase_order_number 3. sales_order_number (baixo) Nota: apenas uma fatura válida será preenchida como parte da resposta da API GetInvoice. 3.3 Vantagens do serviço GetInvoice 1. Um serviço da Web REST leve que podem ser consumido facilmente em qualquer aplicativo por meio da conexão HTTP(s). 2. A capacidade de recuperar as informações da fatura por Parceiros quando necessário, eliminando a necessidade de procurar as faturas em PDF em e-mails ou dados de EDI IDoc. 3. O serviço fornece flexibilidade para os Parceiros procurarem faturas dentro de intervalos de datas específicos ou fornecendo números de fatura, de ordem de compra ou de pedido 4. Os Parceiros podem personalizar a data da fatura e o plug-in do sistema interno conforme necessário. 4 Informações de referência do serviço GetInvoice 4.1 Nota sobre vários CSNs O serviço GetInvoice oferece suporte a apenas um único customer_number (CSN) por solicitação. Se um Parceiro tiver vários CSNs, esse Parceiro deverá poder chamar o serviço várias vezes para obter as informações correspondentes. Uma forma de fazer isso seriar programa um loop em sua conexão de aplicativo que executa o serviço GetInvoice uma vez para cada CSN disponível. É importante que um script assim também controle a geração de credenciais e os tokens de acesso de cada chamada. Um exemplo de um script assim pode ser encontrado na seção Apêndice deste Manual de referência do serviço. Abaixo, incluímos o segmento relevante do dito exemplo. 6 Manual de referê ncia do serviç o da Web

Elementos de getinvoicelist() // Looping through each CSN var container = new List<ResponseContainer>(); foreach (var csn in credentials.csns) // Signing partner's credentials var firstsignature = Utils.GetFirstSignature(credentials); // Sending request to OAuth server to generate an Access Token var tokendetails = Utils.CallOAuthEndPoint(firstSignature); credentials); // Signing Access Token var secondsignature = Utils.GetSecondSignature(tokenDetails, // Calling Get Invoice WebService var endpoint = string.format("https://enterprise-api- stg.autodesk.com/v1/invoices?customer_number=0&invoice_date_from=2015-08- 01&invoice_date_to=2015-09-01", csn); var invoice = Utils.GetInvoices(endPoint, secondsignature, csn); // Storing WebService's response var invoicecontainer = JsonConvert.DeserializeObject<InvoiceContainer>(invoice); container.add(new ResponseContainer CSN = csn, Response = invoicecontainer ); // Writing response to file var json = JsonConvert.SerializeObject(container, Formatting.Indented); Utils.WriteJsonToFile(json); 4.2 Esquema de solicitação Os detalhes dos Parâmetros de mensagem de solicitação na tabela a seguir para getinvoicelist() e getinvoicedetails(). Elemento Tipo de campo Comprimento/formato de entrada Utilização customer_number Sequência de caracteres Comprimento: máx. 10 caracteres Obrigatório Invoice_date_from Data Formato: ISO 8601 AAAA-MM-DD Obrigatório invoice_date_to Data Formato: ISO 8601 AAAA-MM-DD Obrigatório 7 Manual de referê ncia do serviç o da Web

Elementos de getiinvoicedetails() customer_number Sequência de caracteres Comprimento: máx. 10 caracteres Obrigatório invoice_number purchase_order_number sales_order_number Sequência de caracteres Sequência de caracteres Sequência de caracteres Comprimento: máx. 10 caracteres Comprimento: máx. 35 caracteres Comprimento: máx. 10 caracteres Qualquer um ou todos podem ser passados com o customer_number 4.3 Esquema de resposta 4.3.1 GetInvoiceList Nome do campo Descrição invoice_number Número da fatura bill_to_customer Número do cliente 1 purchase_order_number Número da ordem de compra do cliente invoice_date Data de publicação no documento Formato: ISO 8601 AAAA-MM-DD transaction_type Descrição do tipo de documento invoice_total_amount Quantidade na moeda do documento invoice_currency Chave da moeda account_doc_description Texto do item customer_po_number Número da ordem de compra do cliente sales_order_number Número do documento de vendas e distribuição 4.3.2 GetInvoiceDetails Nome do campo invoice_number name bank_keys bank_number bank_branchid bank_account_number currency alternative_bank_account lockbox_number swiftcode iban bank_control_key country address Descrição invoice_bankinfo Número do documento de vendas e distribuição Nome do banco Chaves do banco Número do banco Agência bancária Número da conta bancária Moeda do banco Número de conta bancária alternativa (para números de conta ambíguos) Número de LockBox Código SWIFT para pagamentos internacionais IBAN (Número de conta bancária nternacional) Chave de controle do banco País Endereço do banco 8 Manual de referê ncia do serviç o da Web

city district region postalcode tel_number fax_number additional invoice_date invoice_number po_date order_date purchase_order_number customer_po_number transaction_type ship_date invoice_currency sales_order_number contract_number payment_term payment_due Cidade Distrito Região (Estado, Província e País) CEP / Caixa postal Nºdo telefone Nºdo fax Código info-abi/código CAB/GIRO/código de classificação etc. adicional. invoice_header Data de cobrança para o índice de cobrança e a impressão Formato: ISO 8601 Número do documento de vendas e distribuição Data da ordem de compra do cliente Formato: ISO 8601 Data do pedido de vendas Formato: ISO 8601 AAAA-MM-DD Número da ordem de compra do cliente Número da ordem de compra das informações de envio 20 caracteres Data Formato: ISO 8601 AAAA-MM-DD Moeda do documento SD Pedido Referência interna do cliente ou fornecedor Termos de pagamento Data de vencimento do pagamento Formato: ISO 8601 AAAA-MM-DD local_currency Chave da moeda exchange_rate Taxa de troca para determinação de preços vat_number Número de registro IVA delivery_code Incoterms (parte 1) delivery_description Incoterms (parte 2) delivery_number Entrega numbers_item Número natural tax_amount Valor de impostos na moeda do documento tax_type Tipo de taxa tax_rate Taxa de impostos freight_charge Custo de frete tracking_number Número do Waybill opportunity_id ID da oportunidade extra_po_identifier Identificador de compra adicional invoice_amount Valor líquido na moeda do documento weight_total Peso total weight_uom Unidade de peso reserve_header_field Campo de cabeçalho de backup adsk_vat_number Número de registro IVA da Autodesk recurring_po Pedido de compra sob assinatura recorrente 9 Manual de referê ncia do serviç o da Web

total_amount invoice_number line_number sku sku_description physical_media invoice_currency contract_start Valor líquido + impostos invoice_items Documento de cobrança Item de cobrança Número do material Texto curto para o item do pedido de vendas Valor de ELD do valor de caractere Moeda do documento SD Data de início do contrato Formato: ISO 8601 AAAA-MM-DD contract_end Data de término do contrato Formato: ISO 8601 AAAA-MM-DD Para recorrente (mensal e anual), as regras a seguir se aplicam. Quando o contrato é cancelado, o campo contract_end mostra a data de cancelamento. Quando o contrato está ativo, o campo contract_end mostra o o texto Contrato de renovação automática. quantity Quantidade cobrada realmente quantity_uom Unidade de medida base seats Número natural unit_price Preço unitário unit_discount Desconto da unidade net_value Valor líquido do item de cobrança na moeda do documento serial_number Número de série current_serial_number Número de série atual old_serial_number Número de série antigo partner_subs_id N de Subs do parceiro vat_description Texto de IVA reserve_item_field Campo de item de backup bill_per_start_dt Data de início do período de cobrança bill_per_end_dt Data de término do período de cobrança invoice_partners invoice_number Número do documento de vendas e distribuição line_number Item de cobrança partner_type Tipo de cliente partner_number Número do cliente 1 contact_number Número da pessoa de contato partner_name Nome street Rua e número da residência po_box Caixa postal city Cidade postal_code CEP pobox_postal_code CEP da caixa postal country Nome do país tel_number Primeiro número de telefone fax_number Número do fax district Distrito 10 Manual de referê ncia do serviç o da Web

region country_iso Região (Estado, Província e País) Código de país ISO 4.4 Esquema de erro Nome do campo status message transactionid Descrição Resposta de confirmação: "OK", "FALHA", "ERRO" Mensagem de falha ou erros ID exclusivo de transação (combinação de número da fatura e registro de data e hora) 4.5 Mensagem de solicitação Em função dos parâmetros de entrada, a operação getinvoicelist() ou getinvoicedetails() será executada. Se a entrada tiver os parâmetros "de data" e "para data", getinvoicelist() será executado. Se a entrada tiver o Número da ordem de compra, o Número da fatura ou o Número do pedido de vendas, getinvoicedetails() será executado. Abaixo estão as solicitações de amostra para as operações. 4.5.1 Mensagem de solicitação GetInvoiceList http://enterprise-api- stg.autodesk.com/v1/invoices?customer_number=5117338390&invoice_date_from=2014-06-01&invoice_date_to=2014-06-30 Message Headers Content-Type: application/json Authorization: Bearer <<Access Token>> CSN: <<CSN>> signature: <<Signed Access Token>> timestamp: <<Timestamp for the signed Access Token>> 11 Manual de referê ncia do serviç o da Web

4.5.2 Mensagem de solicitação GetInvoiceDetails Message Headers Content-Type: application/json Authorization: Bearer <<Access Token>> CSN: <<CSN>> signature: <<Signed Access Token>> timestamp: <<Timestamp for the signed Access Token>> OR http://enterprise-apistg.autodesk.com/v1/invoices?customer_number=5163338143&invoice_number=9052068717 http://enterprise-apistg.autodesk.com/v1/invoices?customer_number=5163338143&invoice_number=9052068717&sal es_order_number=7355393800 Message Headers Content-Type: application/json Authorization: Bearer <<Access Token>> CSN: <<CSN>> signature: <<Signed Access Token>> timestamp: <<Timestamp for the signed Access Token>> OR http://enterprise-apistg.autodesk.com/v1/invoices?customer_number=5163338143&invoice_number=905206871&pur chase_order_number=712100000424 Message Headers Content-Type: application/json Authorization: Bearer <<Access Token>> CSN: <<CSN>> signature: <<Signed Access Token>> timestamp: <<Timestamp for the signed Access Token>> OR http://enterprise-apistg.autodesk.com/v1/invoices?customer_number=5163338143&invoice_number=9052068717&sal es_order_number=7355393800&purchase_order_number=712100000424 Message Headers Content-Type: application/json Authorization: Bearer <<Access Token>> CSN: <<CSN>> signature: <<Signed Access Token>> timestamp: <<Timestamp for the signed Access Token>> 12 Manual de referê ncia do serviç o da Web

4.6 Mensagem de resposta Nota: a Autodesk enviará uma resposta com a estrutura a seguir. Os Parceiros podem reformatar para diferentes estruturas de acordo com suas necessidades. 4.6.1 Mensagem de resposta - GetInvoiceList ] "status": "OK", "transaction_id": "INV701765101433844843", "message": [ "invoice_number": "9052238559", "purchase_order_number": "9833356789", "bill_to_customer": "5163338143", "invoice_date": "2014-06-11, "customer_po_number": "", "transaction_type": "Invoice", "invoice_total_amount": 328.5, "invoice_currency": "USD", "account_doc_description": "", "sales_order_number": "7333403750", "invoice_number": "9052158556", "purchase_order_number ": "7865345690", "bill_to_customer ": "5163268143", "invoice_date": "2014-06-24", "customer_po_number ": "", "transaction_type": "Invoice", "invoice_total_amount: 2161.53, "invoice_currency": "USD", "account_doc_description ": "", "sales_order_number ": "7052971819" 4.6.2 Mensagem de resposta - GetInvoiceDetails "status": "OK", "transaction_id": "INV701765101433844843", "message": [ "invoice_bankinfo": [ invoice_number : 9044468717, 13 Manual de referê ncia do serviç o da Web

, "name": "Merghle", "bank_keys": "", "bank_number": "", "bank_branchid": "", "bank_account_number": "", "currency": "", "alternative_bank_account": "", "lockbox_number": "", "swiftcode": "", iban": "", "bank_control_key": "", "country": "", "address": "", "city": "Carol Stream, IL 60132-2188", district :, "region": "", "postalcode": "", "tel_number": ", "fax_number ": "", "additional": "MAIL PAYMENTS TO: AUTODESK, INC. C/O MERGHLE" invoice_number : 9054468717, "name": "Merghle", "bank_keys": "", "bank_number": "", "bank_branchid": "", "bank_account_number": "40574469", "currency": "", "alternative_bank_account": "", "lockbox_number": "", "swiftcode": "", "iban": "", "bank_control_key": "", "country": "", "address": "", "city": "", district :, "region": "", "postalcode": "", "tel_number": ", "fax_number ": "", "additional": "ABA# 021000089/WIRE PAYMENTS TO:" ], "invoice_header": [ "invoice_date": "2014-10-24", "invoice_number": "9052333717", "po_date": "2014-07-09", "order_date": "2014-09-24", "purchase_order_number": "D20000036_R2D2", "customer_po_number": "", 14 Manual de referê ncia do serviç o da Web

"transaction_type": "Invoice", "ship_date": null, "invoice_currency": "USD", "sales_order_number": "7354493780", "contract_number": "D44000442", "payment_term": "30", "payment_due": "Up to 11/23/2014 without deduction", "local_currency": "USD", "exchange_rate": 1, "vat_number": "", "delivery_code": "CIF", "delivery_description": "FOB Origin", "delivery_number": "", "numbers_of_items": 1, "tax_amount": 0, "tax_type": "TPS;TVQ", "tax_rate": "7.975%;7%", "tracking_number": "1ZR43W412049469", "extra_po_identifier": "", "freight_charge": 0, "opportunity_id": "", " invoice_amount": 30, "weight_total": 0, "weight_uom": "", "reserve_header_field": "" ], "invoice_items": [ "invoice_number": "9033338717", "line_number": "000050", "sku": "961F1-WW6573-L994", "sku_description": "ADSKFD 2014 TL:MT SUB WW ELD", ], physical_media :, "invoice_currency": "USD", "contract_start": "2014-09-24", "contract_end": "2015-12-31", "quantity": 1, "quantity_uom": "EA", "seats": 0, "unit_price": 30, "unit_discount": 0, "net_value": 30, "serial_number": "364-72262293", "current_serial_number": "", "old_serial_number": "", "partner_subs_id": "", vat_description :, "reserve_item_field": "", "bill_per_start_dt": "2016-02-22T00:00:00+0000", "bill_per_end_dt": "2016-03-21T00:00:00+0000" 15 Manual de referê ncia do serviç o da Web

"invoice_partners": [ "invoice_number": "9052222717", "line_number": "000000", "partner_type": "", "partner_number": "", "contact_number": "0000000000", "partner_name": "Autochair Inc.", "street": "McInnis Parkway", "po_box": "", "city": "SAN ROFFEL", "postal_code": "94903", "pobox_postal_code": "", "country": "USA", "tel_number": "415-507-5000", "fax_number": "", "district": "MARIN", "region": "CA", "invoice_number": "9033368717", "line_number": "000000", "partner_type": "Sold to", "partner_number": "5162644143", "contact_number": "0000000000", "partner_name": "Quechua Rentals", "street": "410 Terry Ave N", "po_box": "", "city": "Seattle", "postal_code": "98109-5210", "pobox_postal_code": "", "country": "USA", "tel_number": "", "fax_number": "", "district": "KING", "region": "WA", "invoice_number": "9054558717", "line_number": "000000", "partner_type": "Bill to", "partner_number": "5163268143", "contact_number": "0000000000", "partner_name": "Quechua Rentals", "street": "410 Terry Ave N", "po_box": "", "city": "Seattle", "postal_code": "93109-5210", "pobox_postal_code": "", "country": "USA", "tel_number": "", "fax_number": "", "district": "KING", 16 Manual de referê ncia do serviç o da Web

] ],, "region": "WA" "invoice_number": "9053338717", "line_number": "000000", "partner_type": "Ship to", "partner_number": "5166668390", "contact_number": "0000000000", "partner_name": "Quechua Rentals", "street": "410 Terry Ave N", "po_box": "", "city": "Seattle", "postal_code": "98209-5210", "pobox_postal_code": "", "country": "USA", "tel_number": "", "fax_number": "", "district": "KING", "region": "WA" "invoice_number": "9053368717", "line_number": "000050", "partner_type": "Reseller", "partner_number": "5162644143", "contact_number": "0000000000", "partner_name": "Quechua Rentals", "street": "410 Terry Ave N", "po_box": "", "city": "Seattle", "postal_code": "98229-5210", "pobox_postal_code": "", "country": "USA", "tel_number": "", "fax_number": "", "district": "KING", "region": "WA" Nota: no caso de vários tipos de impostos e taxas de impostos, o serviço retornará os dados como mostrado abaixo. Aqui os valores são separados por ';', e tax_type e tax_rate serão fornecidos na sequência (por exemplo, tax_rate de 7,975% corresponde ao tipo de impostos "TPS" e tax_rate de 7% corresponde ao tax_type "TVQ") 17 Manual de referê ncia do serviç o da Web

4.7 Mensagens de erro A tabela a seguir mostra os códigos de erro e as respectivas mensagens de erro presentes na resposta mensagens caso um erro seja encontrado: Mensagem de erro Código de erro Descrição do erro Insira o Número do cliente UAN-GEN-00108 Número do cliente com valor em branco O campo não pode ser deixado em branco. Insira a data O intervalo de datas não deve ter mais de 90 dias. Verifique sua entrada e tente novamente O número do cliente não pode ter mais de 10 caracteres. Verifique sua entrada e tente novamente Insira a De data válida no formato AAAA-MM-DD Insira a Para data válida no formato AAAA-MM-DD Problema do sistema que impede o processamento. Tente novamente mais tarde Número da fatura deve ter exatos 10 caracteres. Verifique sua entrada e tente novamente O Número do pedido de vendas deve ter exatos 10 caracteres. Verifique sua entrada e tente novamente De data da fatura deve ser anterior à Para data da fatura O Número do cliente fornecido é inválido. UAN-GEN-00108 UAN-GEN-00141 UAN-GEN-00123 UAN-GEN-00119 UAN-GEN-00119 UAN-GEN-00122 UAN-GEN-00123 UAN-GEN-00123 UAN-INV-00002 APG-DWS-INV- 002 De data da fatura / Para data da fatura com valor em branco Para verificar se um intervalo de datas tem mais de 90 dias Para verificar se o Número do cliente tem mais de 10 caracteres Para verificar o formato de data Para verificar o formato de data Exceção técnica Para verificar se o número da fatura menos ou mais de 10 caracteres Para verificar se o número do pedido de vendas é menor ou mais de 10 caracteres Para verificar se o valor De data da fatura é anterior à Para data da fatura Se o CSN enviado pelo parceiro for inválido "status": "OK", "transaction_id": "INV701111351434507983", "message": [] - A camada do serviço para responder com a mensagem em branco se não houver nenhum registro encontrado para a pesquisa atual 18 Manual de referê ncia do serviç o da Web

4.7.1 Amostra de resposta de erro "status": "Error", "transactionid": "INV51046287871433503736", "message": [ "error_code": "UAN-GEN-00108", "error_message": "Please enter Customer Number" ] 5 Apêndice 5.1 Código C# para inserir vários CSNs O seguinte é um exemplo de script que os Parceiros podem gravar para inserir vários CSNs no serviço GetInvoice. Já que o serviço GetInvoice só pode processar um único CSN por solicitação, é necessário programar seu aplicativo com isso em mente. Uma forma de fazer isso é programar um loop que faz uma solicitação para cada CSN fornecido, levando em consideração a geração de assinaturas e tokens de acesso. Um exemplo de código que faz isso é mostrado abaixo. 5.1.1 Programa principal using System; using System.Collections.Generic; using System.Text; using MultipleInvoiceCallPoC.POCOs; using Newtonsoft.Json; using System.Diagnostics; using System.Threading; namespace MultipleInvoiceCallPoC class Program static void Main(string[] args) //"Acquiring credentials var credentials = new Credentials BasePath = "https://www.example.com", ConsumerKey = "AbM03alqHyT3uv3D3cYQV0gq8K0kkKNf", ConsumerSecret = "SCqY7IKSoIZ1ZbY5", CSNs = new List<string>() "51626566", 19 Manual de referê ncia do serviç o da Web

; "51626567", "51626568", "51626569", "51626570" // Looping through each CSN var container = new List<ResponseContainer>(); foreach (var csn in credentials.csns) // Signing partner's credentials var firstsignature = Utils.GetFirstSignature(credentials); // Sending request to OAuth server to generate an Access Token var tokendetails = Utils.CallOAuthEndPoint(firstSignature); // Signing Access Token var secondsignature = Utils.GetSecondSignature(tokenDetails, credentials); // Calling Get Invoice WebService var endpoint = string.format("https://enterprise-api- stg.autodesk.com/v1/invoices?customer_number=0&invoice_date_from=2015-08- 01&invoice_date_to=2015-09-01", csn); var invoice = Utils.GetInvoices(endPoint, secondsignature, csn); // Storing WebService's response var invoicecontainer = JsonConvert.DeserializeObject<InvoiceContainer>(invoice); container.add(new ResponseContainer CSN = csn, Response = invoicecontainer ); // Writing response to file var json = JsonConvert.SerializeObject(container, Formatting.Indented); Utils.WriteJsonToFile(json); 5.1.2 Classe de Utilitários public class Utils /// Sets up the OAuth URL end-point and headers to be send in the request in order to /// generate the Access Token /// <param name="url">string that contains the OAuth URL end-point</param> 20 Manual de referê ncia do serviç o da Web

/// <param name="firstsignature">class that contains Partner's signed credentials</param> /// <returns>string with a JSON object</returns> public static string GetAccesToken(string url, FirstSignature firstsignature) var request = (HttpWebRequest)WebRequest.Create(url); request.method = "POST"; request.contenttype = "application/json"; request.headers.add("authorization", string.format("basic 0", firstsignature.base64credentials)); request.headers.add("signature", firstsignature.signedsignature); request.headers.add("timestamp", string.format("0", firstsignature.timestamp)); return GetResponse(request); csn) /// Sets up the GetInvoice URL end-point, headers for the request and a particular CSN /// <param name="url">string that contains the GetInvoices end-point</param> /// <param name="secondsignature">class that contains a signed Access Token</param> /// <param name="csn">string that contains CSN</param> /// <returns>string with a JSON object</returns> public static string GetInvoices(string url, SecondSignature secondsignature, string var request = (HttpWebRequest)WebRequest.Create(url); request.method = "GET"; request.contenttype = "application/json"; request.headers.add("authorization", secondsignature.authorization); request.headers.add("csn", csn); request.headers.add("signature", secondsignature.signedsignature); request.headers.add("timestamp", string.format("0", secondsignature.timestamp)); return GetResponse(request); /// Gets a response from an Internet resource /// <param name="request">requet data </param> /// <returns>string with a JSON object</returns> public static string GetResponse(HttpWebRequest request) try var response = (HttpWebResponse)request.GetResponse(); var enc = System.Text.Encoding.GetEncoding("utf-8"); var responsestream = new StreamReader(response.GetResponseStream(), enc); var result = string.empty; result = responsestream.readtoend(); 21 Manual de referê ncia do serviç o da Web

response.close(); return result; catch (Exception e) Trace.WriteLine(e.Message); return string.empty; /// Calls Invoices Endpoint and retrieves a list of invoices /// <param name="firstsignature">class that contains Partner's signed credentials</param> /// <returns>class with access token data</returns> public static AccessToken CallOAuthEndPoint(FirstSignature firstsignature) var url = "https://enterprise-apidev.autodesk.com/v2/oauth/generateaccesstoken?grant_type=client_credentials"; var details = Utils.GetAccesToken(url, firstsignature); var tokendetails = JsonConvert.DeserializeObject<AccessToken>(details); return tokendetails; /// Takes Partner's credentials and signs them /// <param name="credentials">class with partner's credentials data</param> /// <returns>class containing partner's signed credentials</returns> public static FirstSignature GetFirstSignature(Credentials credentials) var credtemp = string.format("0:1", credentials.consumerkey, credentials.consumersecret); var firstsignature = new FirstSignature Base64Credentials = Base64Encode(credTemp), Timestamp = GetEpochTimestamp() ; var message = string.format("012", credentials.basepath, credentials.consumerkey, firstsignature.timestamp); firstsignature.signedsignature = GenerateSignature(message, credentials.consumersecret); return firstsignature; /// Takes Access Token and signs it /// <param name="token">class with access token data</param> /// <param name="credentials">class with partner's credentials data</param> /// <returns>classs containing a signed access token</returns> 22 Manual de referê ncia do serviç o da Web

public static SecondSignature GetSecondSignature(AccessToken token, Credentials credentials) var secondsignature = new SecondSignature Timestamp = GetEpochTimestamp(), CSN = credentials.csn, Authorization = string.format("bearer 0", token.access_token) ; var message = string.format("012", credentials.basepath, token.access_token, secondsignature.timestamp); secondsignature.signedsignature = GenerateSignature(message, credentials.consumersecret); return secondsignature; /// Encode string to base64 /// <param name="plaintext">string to be encoded</param> /// <returns>enconded string</returns> public static string Base64Encode(string plaintext) var plaintextbytes = System.Text.Encoding.UTF8.GetBytes(plainText); return System.Convert.ToBase64String(plainTextBytes); /// Decodes base64 string /// <param name="base64encodeddata">string to be decoded</param> /// <returns>decoded string</returns> public static string Base64Decode(string base64encodeddata) var base64encodedbytes = System.Convert.FromBase64String(base64EncodedData); return System.Text.Encoding.UTF8.GetString(base64EncodedBytes); /// Gets Epoch Unix timestamp /// <returns>epoch Unix timestamp</returns> public static int GetEpochTimestamp() return (int)(datetime.utcnow - new DateTime(1970, 1, 1)).TotalSeconds; /// Hashing of the signature using HMACSHA256 /// <param name="message">string with the message to be hashed</param> /// <param name="secret">string with the consumer secret</param> /// <returns>hashed string</returns> public static string GenerateSignature(string message, string secret) 23 Manual de referê ncia do serviç o da Web

var encoding = new System.Text.ASCIIEncoding(); byte[] keybyte = encoding.getbytes(secret); byte[] messagebytes = encoding.getbytes(message); using (var hmacsha256 = new HMACSHA256(keyByte)) byte[] hashmessage = hmacsha256.computehash(messagebytes); return Convert.ToBase64String(hashmessage); /// Prints a JSON object to a file /// <param name="json">string with a JSON Object</param> public static void WriteJsonToFile(string json) using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\temp\json.txt")) file.writeline(json); 5.1.3 POCOs namespace MultipleInvoiceCallPoC /// Class used to store Access Token data public class AccessToken public string access_token get; set; public string expires_in get; set; public string token_type get; set; namespace MultipleInvoiceCallPoC.POCOs /// Class used to encapsulate the Partner's credentials data public class Credentials public string BasePath get; set; public string CSN get; set; public List<string> CSNs get; set; public string ConsumerKey get; set; public string ConsumerSecret get; set; 24 Manual de referê ncia do serviç o da Web

namespace MultipleInvoiceCallPoC.POCOs /// Class used to encapsulate the Partner's signed credentials public class FirstSignature public string Base64Credentials get; set; public int Timestamp get; set; public string SignedSignature get; set; namespace MultipleInvoiceCallPoC.POCOs /// Class used to encapsulate a signed Access Token public class SecondSignature public string SignedSignature get; set; public int Timestamp get; set; public string Authorization get; set; public string CSN get; set; namespace MultipleInvoiceCallPoC.POCOs /// Class that represents an Invoice public class Invoice public string invoice_number get; set; public string purchase_order_number get; set; public string sales_order_number get; set; public string bill_to_customer get; set; public string invoice_date get; set; public string transaction_type get; set; public string invoice_total_amount get; set; public string invoice_currency get; set; public string account_doc_description get; set; public string customer_po_number get; set; /// Class used to contain Invoice data retreived from calling GetInvoices end-point public class InvoiceContainer public string status get; set; public string transaction_id get; set; 25 Manual de referê ncia do serviç o da Web

public Invoice[] message get; set; /// Auxiliary class for display purposes used to contain Invoice data for a particular CSN public class ResponseContainer public string CSN get; set; public InvoiceContainer Responseget; set; Nota: este Manual de referência do serviço é para uso exclusivo pelos destinatários pretendidos e pode conter informações proprietárias e/ou confidenciais que podem ser privilegiadas ou protegidas contra divulgação. Qualquer revisão, utilização, divulgação ou distribuição não autorizada é proibida. 26 Manual de referê ncia do serviç o da Web