Child pages
  • Conversor XML/JSON

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Estamos em Devido ao processo de migrar todas as nossas migração das mensagens padronizadas para o formato JSON. Consequentemente, também estamos adaptando os , e consequentemente, a adaptação dos EAIs que as utilizam. Durante esse período de transição, faz, fez-se necessária a existência de uma camada de conversão automática até que a migração esteja completa.

Para atender essa necessidade, disponibilizamos esse serviço via API REST no http://api.totvs.com.br, através dos seguintes endpoints

  • /XMLToJSON
  • /JSONToXML

O conversor recebe uma mensagem em XML e a retorna na nova estrutura definida em JSON, e vice-versa. Estão disponibilizados dois métodos públicos estáticos na classe Conversor: 

...


Convertendo de XML para JSON 

http://api.totvs.com.br:8082/api/totvseai/Converter/v1/XMLToJSON

Realizar uma requisição através do verbo POST na URL acima, enviando o XML no corpo. A resposta será o seu valor correspondente convertido em JSON.

O cabeçalho "Content-Type" deve ser definido como "Text-Plain". A resposta obtida também será  "Text-Plain".

Exemplo Requisição:

Code Block
languagec#
titleXML to JSON
POST http://api.totvs.com.br:8082/api/totvseai/Converter/v1/XMLToJSON
Content-Type: text/plain
Body Request: 
<TOTVSMessage>
	<MessageInformation version="1.001">
		<UUID>c18535da-75b8-4925-9e32-b6445d4f2927</UUID>
		<Type>BusinessMessage</Type>
		<Transaction>Warehouse</Transaction>
		<StandardVersion>1.001</StandardVersion>
		<SourceApplication>RM</SourceApplication>
		<CompanyId>2</CompanyId>
		<BranchId>2</BranchId>
		<Product name="RM" version="11.83.55" />
		<GeneratedOn>2016-06-21T19:41:21</GeneratedOn>
		<DeliveryType>Sync</DeliveryType>
	</MessageInformation>
	<BusinessMessage>
		<BusinessEvent>
			<Entity>Warehouse</Entity>
			<Event>upsert</Event>
		</BusinessEvent>
		<BusinessContent>
			<CompanyId>CompanyId1</CompanyId>
			<BranchId>BranchId1</BranchId>
			<CompanyInternalId>CompanyInternalId1</CompanyInternalId>
			<Code>Code1</Code>
			<InternalId>InternalId1</InternalId>
			<Description>Description1</Description>
			<Active>true</Active>
			<Type>1</Type>
			<IsFinalItem>true</IsFinalItem>
			<IsQualityControl>true</IsQualityControl>
			<IsProcess>true</IsProcess>
			<IsWaste>true</IsWaste>
			<IsRecycled>true</IsRecycled>
			<IsBalanceAvailable>true</IsBalanceAvailable>
			<WarehouseClassification>1</WarehouseClassification>
		</BusinessContent>
	</BusinessMessage>
</TOTVSMessage>

Exemplo Resposta:

Code Block
languagec#
titleXML to JSON
POST http://api.totvs.com.br:8082/api/totvseai/Converter/v1/XMLToJSON
Content-Type: text/plain
Body Response: 
{"Header":{"UUID":"c18535da-75b8-4925-9e32-b6445d4f2927","Type":"BusinessMessage","Transaction":"Warehouse","StandardVersion":"1.001","SourceApplication":"RM","CompanyId":"2","BranchId":"2","GeneratedOn":"2016-06-21T19:41:21","DeliveryType":"Sync","Version":"1.001","ProductName":"RM","ProductVersion":"11.83.55"},"Content":{"CompanyId":"CompanyId1","BranchId":"BranchId1","CompanyInternalId":"CompanyInternalId1","Code":"Code1","InternalId":"InternalId1","Description":"Description1","Active":true,"Type":1,"IsFinalItem":true,"IsQualityControl":true,"IsProcess":true,"IsWaste":true,"IsRecycled":true,"IsBalanceAvailable":true,"WarehouseClassification":1}}


Convertendo de JSON para XML

http://api.totvs.com.br:8082/api/totvseai/Converter/v1/JSONToXML/?tagevent=upsert|delete|request

Realizar uma requisição através do verbo POST na URL acima, enviando o JSON no corpo. A resposta será o seu valor correspondente convertido em XML.

O cabeçalho "Content-Type" deve ser definido como "Text-Plain". A resposta obtida também será  "Text-Plain".

Nesse caso, também é preciso especificar qual é o evento da mensagem (Para ser o valor da tag <event></event), no parâmetro de query tagevent, evidenciado na URL. 
Os possíveis valores são:

  • Upsert
  • Delete
  • Request 

Exemplo Requisição:

Download da DLL do conversor

Trata-se de uma DLL desenvolvida em .Net CORE, e portanto pode ser importada em qualquer programa que tenha suporte para tal.

StandardMessageConversor.dll

Importando o Conversor em um projeto .Net

  • Clique direito em "Dependencies" → "Add Reference"

Image Removed 

  • Clicar em "Browse..."

Image Removed

  • Buscar a DLL do conversor (StandardMessageConversor.dll).

Image Removed

  • Agora já adicionamos a referência ao Conversor. 
  • A próxima etapa é adicionar o Newtonsoft.Json. É possível fazer esse processo através do NuGet.
  • Clique direito no projeto → "Manage NuGet Packages"    

Image Removed

  • Buscar Newtonsoft.Json.
  • Clicar em "Install" para instalar o pacote no projeto.

Image Removed

  • O conversor está importado e pronto para uso.

Importando o Conversor em um projeto ADVPL

Note
titleEm construção

Essa seção do artigo estará disponível futuramente      

Para projetos em ADVPL, precisa ser utilizada a versão 9.0.1. do Newtonsoft

Importando o Conversor em um projeto Progress

Note
titleEm construção

Essa seção do artigo estará disponível futuramente

Convertendo de XML para JSON 

Code Block
languagec#
titleJSON to XML to JSON
POST  string generatedMsg = Conversor.ConvertXMLToJSON(message);http://api.totvs.com.br:8082/api/totvseai/Converter/v1/JSONToXML/?tagevent=upsert
Content-Type: text/plain
Body Request: 
{"Header":{"UUID":"c18535da-75b8-4925-9e32-b6445d4f2927","Type":"BusinessMessage","Transaction":"Warehouse","StandardVersion":"1.001","SourceApplication":"RM","CompanyId":"2","BranchId":"2","GeneratedOn":"2016-06-21T19:41:21","DeliveryType":"Sync","Version":"1.001","ProductName":"RM","ProductVersion":"11.83.55"},"Content":{"CompanyId":"CompanyId1","BranchId":"BranchId1","CompanyInternalId":"CompanyInternalId1","Code":"Code1","InternalId":"InternalId1","Description":"Description1","Active":true,"Type":1,"IsFinalItem":true,"IsQualityControl":true,"IsProcess":true,"IsWaste":true,"IsRecycled":true,"IsBalanceAvailable":true,"WarehouseClassification":1}}

Exemplo Resposta:

Code Block
languagec#
titleJSON to XML to JSON
    /// <summary>
    /// Recebe uma mensagem padronizada em XML e a retorna em JSONPOST http://api.totvs.com.br:8082/api/totvseai/Converter/v1/JSONToXML/?tagevent=upsert
Content-Type: text/plain
Body Request: 
<?xml version="1.0" encoding="utf-8"?>
<TOTVSMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <MessageInformation version="1.001">
    <UUID>c18535da-75b8-4925-9e32-b6445d4f2927</UUID>
    <Type>BusinessMessage</Type>
    <Transaction>Warehouse</Transaction>
    <StandardVersion>1.001</StandardVersion>
    <SourceApplication>RM</SourceApplication>
    <<CompanyId>2</summary>CompanyId>
    /// <param<BranchId>2</BranchId>
    <Product name="messageRM">Mensagem no formato XML</param> version="11.83.55" />
    /// <returns>Mensagem padronizada no formato JSON</returns>
    public static string ConvertXMLToJSON(string message);

Convertendo de JSON para XML

Code Block
languagec#
titleJSON to XML
  string generatedMsg = Conversor.ConvertJSONToXML(message, "upsert");
Code Block
languagec#
titleJSON to XML
     /// <summary><GeneratedOn>2016-06-21T19:41:21</GeneratedOn>
    <DeliveryType>Sync</DeliveryType>
  </MessageInformation>
  <BusinessMessage>
    <BusinessEvent>
      <Entity>Warehouse</Entity>
      <Event>upsert</Event>
    <///BusinessEvent>
 Recebe uma mensagem padronizada<BusinessContent>
 em JSON e a retorna em XML
<CompanyId>CompanyId1</CompanyId>
     /// <<BranchId>BranchId1</summary>BranchId>
    /// <param name="message"> Mensagem no formato JSON</param>
  <CompanyInternalId>CompanyInternalId1</CompanyInternalId>
      <Code>Code1</Code>
      /// <param name="restVerb"> Verbo em que a mensagem foi recebida pela API Rest. Exemplos: "upsert", "delete". 
    /// O valor colocado nessa variavel será apresentado no elemento Event de BusinessEvent
    /// </param>
    /// <returns>Mensagem padronizada no formato XML</returns>
    public static string ConvertJSONToXML(string message, string restVerb);<InternalId>InternalId1</InternalId>
      <Description>Description1</Description>
      <Active>true</Active>
      <Type>1</Type>
      <IsFinalItem>true</IsFinalItem>
      <IsQualityControl>true</IsQualityControl>
      <IsProcess>true</IsProcess>
      <IsWaste>true</IsWaste>
      <IsRecycled>true</IsRecycled>
      <IsBalanceAvailable>true</IsBalanceAvailable>
      <WarehouseClassification>1</WarehouseClassification>
    </BusinessContent>
  </BusinessMessage>
</TOTVSMessage>


Transações suportadas

Abaixo encontram-se as transações que estão sendo suportadas pelo conversor.


Em testesEm testesEm testesEm testes002Em testesEm testesApenas 1Em testesApenas 000Em testes002OurNumberBankingEm testes000Em testesEm testesReversalOfFinancingTradingSalesOrderEm testesEm testesEm testesEm testesEm testes
TransaçãoVersõesStatus
AbsenceApenas 1.000Em testesOK
AccountantAccountAté 2.002OK
AccountantDefaultHistoryAté 2.000OK
AccountingBalanceApenas 1.000OK
AccountingCalendarApenas 1.000OK
AccountingClosingDateApenas 1.000OK
AccountingEntryAté 2.001OK
AccountingItemApenas 1.000Em testesOK
AccountPayableDocumentAté 2.002Em testesOK
AccountPayableDocumentDischargeAté 2.003OK
AccountPayableDocumentReplaceApenas 1.000OK
AccountReceivableCancellationAllowanceApenas 1.000OKEm testes
AccountReceivableDocumentAté 2.006Em testesOK
AccountReceivableDocumentDischargeAté 2.002OK
AccountReceivableDocumentReplaceApenas 1.000OK
AccountssReceivableOffseting Apenas 2.000OK
ActivityApenas 1.000Em testesOK
AdditionalEntityApenas 1.000Em testesOK
AdditionalEntityTypeApenas 1.000Em testesOK
AddressStockApenas 1.000OK
AdjustmentsinTaxCalculationEFDApenas 1.000OK
AgencyCreditCardApenas 1.000Em testesOK
AgriculturalOwnerApenas 1.000Em testesOK
AgriculturalSectorApenas 1.000Em testesOK
AgriculturalVarietyApenas 1.000Em testesOK
AgriculturalYearApenas 1.000Em testesOK
ApartmentTypeApenas 1.000Em testesOK
AppointmentCostAté 1.001Em testesOK
AreaAndLineOfBusinessApenas 1.000Em testesOK
AssetDepreciationApenas 1.000Em testesOK
AssetsAté 1.001Em testesOK
AssetsValuationApenas 1.000Em testesOK
AssignmentGradeApenas 1.000Em testesOK
BalanceBaselineEntryApenas 1.000Em testesOK
BankAté 2.002Em testesOK
BankTransactionApenas 2.000Em testesOK
BankTransactionsApenas 1.000Em testesOK
BranchAté 2.001Em testesOK
BroadcastTypeApenas 1.000Em testesOK
BrokerSystemApenas 1.000Em testesOK
BudgetItemsApenas 1.000Em testesOK
CabintypeApenas 1.000Em testesOK
CalculatedTransApenas 1.000OK
CancelRequestApenas 1.000Em testesOK
CardClassificationApenas 1.000Em testesOK
CarrierAté 2.000OK
CashierConferenceApenas 2.000OKEm testes
CityAté 2.000Em testesOK
ClassValueApenas 1.000Em testesOK
CommercialFamilyApenas 1.000Em testesOK
CompanyAté 2.002Em testesOK
ContactApenas 1.000Em testesOK
ContactRelationshipApenas 1.000Em testesOK
ContractAté 2.000Em testesOK
ControlItemApenas 1.000Em testesOK
ControlItemReportApenas 1.000OK
ControlSpinApenas 2.000Ok
CorporateGroupApenas 1.000Em testesOK
CostCenterAté 2.001Em testesOK
CoverageDocumentAté 2.004Em testesOK
CreditRiskAnalysisAté 1.001Em testesOK
CurrencyAté 2.002Em testesOK
CurrencyQuotationAté 2.001Em testesOK
CustomerCreditCardApenas 1.000Em testesOK
CustomerEstablishmentApenas 1.000Em testesOK
CustomerShippingAddressAté 1.001Em testesOK
CustomerVendorAté 2.005Em testesOK
CustomerVendorReserveIDApenas 1.001OK
DeleteBranchApenas 1.000OK
DeleteCourseDeliveryScheduleApenas 1.000Em testesOK
DepartamentDeliveryScheduleApenas 1.000OK
DepartamentAté 2.001OKEm testes
DirectionTypeApenas 1.000Em testesOK
DisciplineApenas 1.000Em testesOK
DisciplineClassApenas 1.000Em testesOK
DisciplineEnrollmentApenas 1.000OK
DocumentOnCouponApenas 1.000OK
DocumentNumberingNullificationApenas 1.000OK
DocumentTraceabilityOrderApenas 1.000OK
DocumentTraceabilityRequestsDisciplineEnrollmentApenas 1.000Em testesOK
DocumentTypeApenas 1.000OK
EAIEnvironmentTestApenas 1.000Em testesOK
EDIDocumentForTransportationApenas 1.000Em testesOK
ElectronicTransportDocumentApenas 1.000Em testesOK
EmployeeAté 3.002Em testesOK
EmployeeExceptionApenas 1.000Em testesOK
EmployeeHistorySalaryPositionApenas 1.000Em testesOK
EmployeeHistoryWorkShiftApenas 1.000Em testesOK
EmployeePositionAté 1.001Em testesOK
EmployeeSituationsApenas 1.000Em testesOK
EnrollmentAté 2.000Em testesOK
EquipmentAté 1.001Em testesOK
EquipmentsCostApenas 1.000Em testesOK
EstablishmentApenas 1.000OK
ExportOfAccountMovementsAté 1.002OK
ExportOfSingleInvoiceIssueApenas 1.000OK
ExportSINTEGRAApenas 1.000OK
ExportSPEDFISCALApenas 1.000OKEm testes
ExternalAutonomousPaymentAté 1.002Em testesOK
FamilyAté 2.002Em testesOK
FarmApenas 1.000Em testesOK
FinancialManagerAté 2.001Em testesOK
FinancialNatureAté 2.000Em testesOK
FinancingAté 1.002Em testesOK
FinancingTradingApenas 2.000Em testesOK
FrontSystemApenas 1.000Em testesOK
FuelTypeApenas 1.000Em testesOK
GeneralStopReportApenas 1.000Em testesOK
GenericCalendarApenas 1.000Em testesOK
GeographicReferenceApenas 1.000Em testesGetAccountBalancesOK
GetAccountBalancesApenas 1.000OK
GetApportionmentOfPayrollApenas 1.000OK
GetAssignmentsApenas 1.000OK
GetCoursesAté 4.100OK
GetEmployeeCostApenas 1.000OK
GetEmployeeSituationsApenas 1.000OK
GetEmployeeTimeSheetApenas 1.000OK
GetEmployeeWorkedHoursApenas 1.000OK
GetHarvestOrderAté 1.001OKEm testes
HolidayApenas 1.000Em testesOK
HotelInvoiceAté 1.002OK
HotelInvoiceCancellationAllowanceApenas 1.000OK
ImplementKilometrageApenas 1.000OK
InfoOfParcelValuesApenas 1.000OK
InputDocumentAté 2.005OK
InsurancePlanHotelInvoiceApenas 1.000Em testesOK
InternalIdLoadApenas 1.000OK
InventoryAté 3.000OK
InventoryGroupApenas 1.000OK
InvoiceAté 3.010OK
InvoiceTransferInternalIdLoadApenas 1.000Em testesOK
ItemAté 4.005OK
ItemCostingApenas 1.000OK
ItemGridApenas 1.000OK
ItemReferenceApenas 1.000OK
ItemReserveApenas 1.000OK
ItemScriptApenas 1.000OK
ItemSiteApenas 1.000OK
ItemStockLevelApenas 1.000OK
ItemStructureApenas 1.002OK
ItemTypeApenas 1.000OK
LaborUnionAté 1.001OK
ListOfAccountantAccountApenas 2.002OK
ListOfAccountantDefaultHistoryApenas 2.000OK
ListOfAccountPayableDocumentApenas 1.000OK
ListOfAccountReceivableSettlementsAté 1.001OK
ListOfComplementaryValueApenas 1.000OK
ListOfCostCenterApenas 2.001OK
ListOfManagerialAccountingEntityApenas 1.000OK
ListOfStationSalePointAté 1.001OK
MachineAté 1.002OK
MacroApenas 1.000OK
MaintenanceOrderAté 1.002OK
MaintenanceRequestApenas 1.000OK
MaintenanceSupplyContractApenas 1.000OK
MarkingPointApenas 1.000OK
MarksApenas 1.000OK
ModelsApenas 1.000OK
MonthlyPayrollApenas 1.000OK
MovementsInternalAté 1.001OK
OperationalCategoryApenas 1.000OK
OperationSplitApenas 1.000OK
OperativeGroupApenas 1.000OK
OrderAté 4.Em testes004OK
OtherDocumentsF100Apenas 1.000OK
OurNumberBankingApenas 1.000OK
PackagingAté 1.001OK
PackagingRelationshipAté 1.001OK
PartOfLandApenas 1.000OK
PartOfLandVarietyRelationshipApenas 1.000Em testesPaymentConditionAté 2.002OK
PassengerTerminalApenas 1.000OK
PaymentConditionAté 2.002OK
PaymentMethodApenas 1.000OK
PayrollAmountApenas 1.000OK
PeopleAté 1.001OK
PeriodGlBalanceApenas 1.000OK
PlannedStopApenas 1.000OK
PositionApenas 1.000OK
PriceListHeaderItemAté 2.002OK
ProductionAppointmentAté 2.003OK
ProductionAreaApenas 1.000OK
ProductionOrderAté 2.005OK
ProductionPeriodApenas 1.000OK
ProductionResultsTableApenas 1.000OK
ProductionShift_1_000Apenas 1.000OK
ProductSupplierRelationshipAté 2.004OK
ProfessorApenas 1.000OK
ProgramPlanApenas 1.000OK
ProjectAté 2.000OK
ProrationProgramming_1_000Apenas 1.000OK
QuotationAté 1.002OK
ReductionAté 1.001OK
ReferenceApenas 1.000OK
RefuelingApenas 1.000OK
RefundReasonApenas 1.000OK
RefusalApenas 1.000OK
RequestAté 1.010OK
ResourceApenas 1.000OK
RetailSalesAté 2.003OK
RetailSalesCancellationApenas 1.000OK
RetailSalesCancellationAllowanceApenas 1.000OK
ReversalOfAccountPayableDocumentDischargeApenas 1.000OK
ReversalOfAccountReceivableDocumentDischargeApenas 1.000Em testesOK
ReversalOfFinancingTradingApenas 1.000OK
RoadLineStrechApenas 1.000OK
RoleApenas 1.000OK
RouteApenas 1.000OK
RuralCarrierApenas 1.000OK
RuralMovementApenas 1.000OK
RuralServiceApenas 1.000OK
RuralShiftWorkApenas 1.000Em testesOK
SalesChargeApenas 1.000OK
SaleItemCancelationApenas 1.000OK
SaleItemFinderApenas 1.000OK
SalesOrderAté 2.000OK
ScheduleWorkApenas 1.000OK
ScoreAté 2.000OK
SellerAté 2.003OK
ServiceClassApenas 1.000OK
ServiceStationApenas 1.000OK
SetEmployeeBranchTranferApenas 1.000OK
SettingsApenas 1.000OK
ShiftWorkApenas 1.000OK
ShipApenas 1.000OK
ShipmentOfExportInvoiceApenas 1.000OK
SplitUpdateApenas 1.000OK
StepProjectAté 2.000Em testesOK
StockGroupApenas 1.000OK
StockLevelAté 2.000OK
StockTurnoverAté 2.001OK
StopReportAté 1.003OK
StudentStockGroupApenas 1.000OK
SubProjectAté 2.000Em testesTaskProjectAté 2.000OK
TaskProjectAté 2.000OK
TaxApenas 1.000OK
TaxGroupApenas 1.000OK
TeamOperatorApenas 1.000OK
TourismCreditEvaluationApenas 1.000OK
TransferWarehouseAté 1.003OK
TransportDocumentApenas 2.000OK
TransportDocumentStatusApenas 2.000OK
TransportInvoiceApenas 2.000OK
TransportInvoiceStatusApenas 2.000OK
TravelAgentApenas 1.000OK
TravelCustomerApenas 1.000OK
TravelPaymentTermApenas 1.000OK
TravelRateApenas 1.000OK
TravelVendorApenas 1.000OK
TWSImportExportApenas 1.000OK
UnitOfMeasureAté 2.002OK
UnitOfMeasureConversionApenas 1.000OK
UnsubscribeApenas 1.000OK
UpdateContractParcelAté 1.002OK
UserAté 4.003OK
VacationApenas 1.000OK
VacationScheduleApenas 1.000OK
ValidateCustomerVendorApenas 1.000OK
ValidityLotApenas 1.000OK
VehicleCategoryApenas 1.000OK
VehiclesApenas 1.000OK
VehicleTypeApenas 1.000OK
VendorGroupApenas 1.000Em testesOK
VisaTypeApenas 1.000Em testesOK
WageTableApenas 1.000Em testesOK
WarehouseAté 1.001003Em testesOK
WasteReasonApenas 1.000Em testesOK
WeighingRawMaterialsAté 1.001OK
WhoisApenas 1.000OKEm testes
WorkCenterApenas 1.000Em testesOK
WorkforceAndOverheadAppointmentApenas 1.000Em testesOK