Tokenização

Permite substituir os dados de cartão de forma segura por um cartão virtual de uso controlado.

Como funciona

Primeiros passos

  1. Leia Introdução ao GraphQL, com exemplos reais da nossa API.
  2. Crie um usuário no portal do desenvolvedor.
  3. Cadastre sua primeira aplicação.
  4. Utilize o dashboard para acessar suas configurações de acesso.
  5. Para explorar rapidamente as APIs aqui na página de documentação, use o console de GraphQL, na seção de referências. Nele, você pode ver as consultas de exemplo, executá-las e alterá-las.

Primeiros passos na plataforma de Desenvolvedores Elo

Jaydson GomesDesenvolvedor Evangelista

O cartão físico que conhecemos, também referido como "cartão real", é composto pelo número (PAN - Primary Account Number), um código de segurança (CSC - Card Security Code) e data de validade. Com somente estes dados é possível realizar compra e caso estes dados sejam copiados, podem gerar prejuízo ao portador, comerciante ou emissores.

Com o aumento das fraudes criou-se o conceito de Token, que se comporta como um cartão virtual, na maioria das vezes tem um número (PAN), código de segurança (CSC) e data de validade que podem ser utilizados em sistemas legados de forma transparente. Com uma grande diferença: o Token pode ser parametrizado e ter um escopo de atuação reduzido, consequentemente eliminando ou reduzindo o potencial de fraudes.

  • Por exemplo podemos Tokenizar (criar um Token) para um cartão real e especificar restrições de uso CardUsageConstraints:
  • Número de usos permitido. Por exemplo maxUsage: 1 para um token que só pode ser utilizado uma única vez;
  • Data de expiração. Por exemplo expiry: 2017-10-01 limita o uso do token a uma data específica, que pode ser diferente da validade do cartão real.
  • Limites de transação por moeda. Por exemplo allowedTxAmount: [{currency: "USD", max: 100}] limitaria o token a transacionar no máximo USD$100.
  • Restrição de Comerciantes. Por exemplo allowedMerchants:[123, 456] permite o token ser utilizado em apenas dois lojistas, com identificadores 123 e 456 .
  • Restrição de Categorias de Comerciantes. Por exemplo allowedMerchantCategories para limitar o uso a apenas algumas categorias de comerciantes e deniedMerchantCategories para proibir categorias.

No caso de vazamento de dados, seja por perder um telefone celular ou hackers invadirem o servidor do comerciante, apenas o Token seria exposto e então limitado ao seu escopo de atuação.

O processo de Tokenização é util a diversas entidades:

  • Emissores (Bancos): integram com seus aplicativos e permitem o portador criar um Token, por exemplo para uso em lojas virtuais na qual o portador não confia;
  • Portadores: aplicativo da própria Elo ou terceiros poderiam criar Tokens para serem usados em compras. Um exemplo são aplicativos que fazem transações via NFC, Bluetooth ou QRCode, ao invés de divulgarem os dados do cartão real criam um token com escopo reduzido para o propósito da transação;
  • Comerciantes: ao invés de guardarem dados sensíveis do usuário em suas bases de dados, tornando-se alvo de hackers, o comerciante troca os dados sensíveis por um Token de uso exclusivo para si próprio (usageConstraints { allowedMerchants: [1234] }) e se possível com mais restrições. Uma vez que seu servidor seja comprometido, os tokens não terão utilidade a terceiros e também poderão ser cancelados sem impactar o portador do cartão.

Para melhor segurança os dados sensíveis (PAN, CSC e data de validade) nunca são trafegados de forma aberta, mesmo que o transporte (HTTPS) seja seguro. Utilizamos JSON Web Encryption - JWE e JSON Web Signature - JWS da seguinte forma (pseudo código):

JWE.Encrypt(recipient=ChaveDoServidor, format=compact,
    JWS.Sign(issuer=ChaveDoUsuario, format=compact,
        JSON.Stringify(DadosSensiveis)
    )
)

Ao consultar dados sensíveis deve-se registrar a chave com o servidor e então enviar o identificador da chave, fazendo o processo reverso no valor retornado:

JSON.Parse(payload of
    JWS.Verify(payload of
        JWE.Decrypt(sensitive)
    )
)


Chaves

A chave pública do servidor (ChaveDoServidor) esta disponível a partir da consulta abaixo:

query {
    serverPublicKey {
        key
    }
}

Já as chaves públicas do usuário (i.e: referente à ChaveDoUsuario) deverão ser geradas nos dispositivos dos clientes e associadas ao usuário na plataforma atraves da mutation addPublicKeyToUser().

mutation {
    addPublicKeyToUser(input:{
        clientMutationId:"012", 
        userId:"bdc89491-f1f4-32f7-bad2-f44ae3b88aa6", 
        key:"{\"kty\":\"EC\", \"kid\":\"my-public-key-id-1\", \"x\":\"g_Sr4WwVDt5Qy3KonZyXqFwWykTR9KVMCt8Sx-dXSB8\",\"y\":\"ydSE-mUMtuhBTI_txDpd2ivb7e6FNzxq4e_18iHFZ2U\",\"crv\":\"P-256\"}",
        format:JWK
}) {
        clientMutationId, 
        user{
            id,
            firstName
            ,lastName
        }, 
        publicKey{
            key
        }
    }
}

O token pode ser criado a partir de um cardId (id de cartão previamente cadastrado) ou dos dados sensiveis do cartão (PAN, CSC e data de validade) assinados e cifrados conforme a seção anterior.

Para criar um token a partir das informações de um cartão previamente cadastrado utilize o campo cardId na mutation createCardToken como demonstrado abaixo.

NOTA: Se você não possuí o cardId do cartão cadastrado é preciso consulta-lo ou cadastra-lo utilizando a mutation createCard

mutation {
    createCardToken(input: {
        cardId: "9903BD7E-186F-4C56-BC75-FBEAF155FED7", # se foi retornado anteriormente
        origin: { # forneça o máximo de informação possível!
            ip: "200.123.1.2",
            geolocation: { lat: 1.2345, lon: -1.2345, source: CELLULAR },
            device: { userAgent: "Xpto", brand: "Apple", model: "iPhone 7", type: SMARTPHONE} 
        },
        usageConstraints: { maxUsage: 1, allowedMerchants: ["123"] }
    })
    {
        cardToken { # Token retornado, deve ser salvo pois não pode ser consultado!
            id # informação utilizada para suspender o cardToken
            last4
            expiry { month year }
            # ...
        }
    }
}

Caso queira criar um cardToken a partir do sensitive de um cartão utilize o campo sensitive na mesma mutation createCardToken:

mutation {
    createCardToken(input: {
        sensitive: "<dados sensiveis criptografados>",
        origin: { # forneça o máximo de informação possível!
            ip: "200.123.1.2",
            geolocation: { lat: 1.2345, lon: -1.2345, source: CELLULAR },
            device: { userAgent: "Xpto", brand: "Apple", model: "iPhone 7", type: SMARTPHONE} 
        },
        usageConstraints: { maxUsage: 1, allowedMerchants: ["123"] }
    })
    {
        cardToken { # Token retornado, deve ser salvo pois não pode ser consultado!
            id # informação utilizada para suspender o cardToken
            last4
            expiry { month year }
            # ...
        }
    }
}

Caso o Token não seja mais necessário ou tenha sido comprometido, deve-se suspendê-lo:

mutation {
    suspendCardToken(input: {
        cardTokenId: "67F47F96-3D36-4199-8C7E-67ADC6DEC58C", # preferencialmente
        sensitive: "...dados sensíveis cifrados...", # se não tiver cardTokenId
        permanent: true,
        reason: ISSUER # Veja o enum CardSuspendReason para ter as opções
    }) 
    {
        cardToken { id }
    }
}



Argumentos:

id: ID obrigatório



Argumentos:






Argumentos:

input: CreateCardTokenInput obrigatório



Argumentos:

input: SuspendCardTokenInput obrigatório



Argumentos:

input: ActivateCardTokenInput obrigatório



Argumentos:

input: UpdateCardOriginToTokenInput obrigatório



Argumentos:

input: AddPublicKeyToUserInput obrigatório



Argumentos:

input: CreateCardTokenForUserInput obrigatório






Campos:

lon

:

Float obrigatório

lat

:

Float obrigatório

alt

:

Float

precision

:

Float


Campos:

userAgent

:

String

brand

:

String

model

:

String

type

:

DeviceType

serialNumber

:

String

imei

:

String

os

:

String


Campos:

ip

:

String

geolocation

:

GeolocationInput

device

:

DeviceInput

merchantUserId

:

String

walletId

:

ID


Campos:

currency

:

String obrigatório

min

:

Float

max

:

Float


Campos:

min

:

Int

max

:

Int


Campos:

maxUsage

:

Int

expiry

:

DateTime

allowedTxAmounts

:

lista de CardCurrencyRangeInput obrigatório

allowedIdCodes

:

lista de ID obrigatório

allowedMerchantCategories

:

lista de MerchantCategoryRangeInput obrigatório

deniedMerchantCategories

:

lista de MerchantCategoryRangeInput obrigatório


Campos:

clientMutationId

:

String

cardId

:

ID

sensitive

:

String

usageConstraints

:

CardUsageConstraintsInput


Campos:

status

:

CardStatus

usageConstraints

:

CardUsageConstraintsInput

cardHolderServiceId

:

ID

funding

:

CardFunding

cardProductId

:

ID

cardBrandId

:

ID

cardCaptureId

:

ID

cardUsageId

:

ID

cardNetworkId

:

ID

cardIssuerId

:

ID


Campos:


Campos:

startDate

:

Date

endDate

:

Date

originCountry

:

String

destinationCountry

:

String


Campos:

startDate

:

Date

endDate

:

Date

categoryId

:

ID


Campos:

startDate

:

Date

endDate

:

Date

categoryId

:

ID


Campos:

id

:

ID obrigatório


Campos:

ip

:

String

deviceType

:

DeviceType

merchantUserId

:

String

walletId

:

ID


Campos:

startTimestamp

:

DateTime

endTimestamp

:

DateTime

includeMerchantCategories

:

lista de MerchantCategoryRangeInput obrigatório

excludeMerchantCategories

:

lista de MerchantCategoryRangeInput obrigatório

captureId

:

ID

usageId

:

ID


Campos:

startTimestamp

:

DateTime

endTimestamp

:

DateTime

includeMerchantCategories

:

lista de MerchantCategoryRangeInput obrigatório

excludeMerchantCategories

:

lista de MerchantCategoryRangeInput obrigatório


Campos:

cardTransactionId

:

ID

codeCapture

:

Int

codeUsage

:

Int

iso

:

Int

startTimestamp

:

DateTime

endTimestamp

:

DateTime


Campos:

cnpj

:

String


Campos:

filter

:

String


Campos:

clientMutationId

:

String

cardTokenId

:

ID obrigatório

permanent

:

Boolean

reason

:

CardSuspendReason obrigatório


Campos:

clientMutationId

:

String

cardTokenId

:

ID obrigatório


Campos:

cardId

:

ID

updateCardOriginId

:

ID obrigatório

sensitiveCurrent

:

String

sensitiveNew

:

String obrigatório


Campos:

clientMutationId

:

String

cardOriginToTokens

:

lista obrigatória de CardOriginToTokenInput obrigatório


Campos:

clientMutationId

:

String

userId

:

ID obrigatório

key

:

String obrigatório

format

:

CryptoKeyFormat


Campos:

number

:

String obrigatório

issuerOrganization

:

String

issuerState

:

String

issueDate

:

Date


Campos:

cpf

:

String

cnpj

:

String

rg

:

RGInput


Campos:

personal

:

Float obrigatório

family

:

Float obrigatório

currency

:

String obrigatório


Campos:

type

:

PersonContactType obrigatório

context

:

String

value

:

String obrigatório


Campos:

context

:

String

country

:

String obrigatório

city

:

String obrigatório

state

:

String obrigatório

stateAbbrev

:

String

zip

:

String

district

:

String

kind

:

String

number

:

Int obrigatório

place

:

String obrigatório

complement

:

String

reference

:

String

instructions

:

String

lon

:

Float

lat

:

Float


Campos:

clientMutationId

:

String

name

:

String

legalIds

:

LegalIdsInput obrigatório

birthday

:

Date

gender

:

Gender

maritalStatus

:

MaritalStatus

occupationId

:

ID

contacts

:


addresses

:

lista de AddressInput

origin

:

String


Campos:

clientMutationId

:

String

sensitive

:

String obrigatório

user

:

CreateProvisionedUserInput obrigatório

usageConstraints

:

CardUsageConstraintsInput





Campos:

key

:

String obrigatório


Campos:

month

:

Int obrigatório

year

:

Int obrigatório


Campos:

number

:

String obrigatório


Campos:

number

:

String obrigatório


Campos:

number

:

String obrigatório

issuerOrganization

:

String

issuerState

:

String

issueDate

:

Date


Campos:

cnpj

:

CNPJ

cpf

:

CPF

rg

:

RG


Campos:

personal

:

Float

family

:

Float

currency

:

String


Campos:

id

:

ID obrigatório

display

:

String obrigatório


Campos:

url

:

String obrigatório

width

:

Int obrigatório

height

:

Int obrigatório

mimeType

:

String obrigatório


Campos:

type

:

PersonContactType obrigatório

context

:

String

value

:

String obrigatório

verified

:

VerifiedStatus


Campos:

context

:

String

country

:

String obrigatório

city

:

String obrigatório

state

(


abbrev:

Boolean

)

:

String

zip

:

String

district

:

String

kind

:

String

number

:

Int

place

:

String obrigatório

complement

:

String

reference

:

String

instructions

:

String

lon

:

Float

lat

:

Float


Campos:

id

:

ID obrigatório

name

:

String

firstName

:

String

lastName

:

String

displayName

:

String

companyName

:

String

companyLegalName

:

String

legalIds

:

LegalIds

birthday

:

Date

age

:

Int

gender

:

Gender

maritalStatus

:

MaritalStatus

occupation

(


language:

String

)

:

PersonOccupation

image

(


width:

Int

height:

Int

mimeType:

String

)

:

ImageUrl

contacts

:

lista de PersonContact obrigatório

addresses

:

lista de Address obrigatório

wallets

:

lista de Wallet obrigatório

cards

(


first:

Int

after:

String

last:

Int

before:

String

)

:

CardsConnection

cardTokens

(


first:

Int

after:

String

last:

Int

before:

String

)

:

CardTokensConnection

travelInsurances

(


first:

Int

after:

String

last:

Int

before:

String

)

:

TravelInsurancesConnection

extendedWarrantyInsurances

(


first:

Int

after:

String

last:

Int

before:

String

)

:

ExtendedWarrantyInsurancesConnection

purchaseProtectionInsurances

(


first:

Int

after:

String

last:

Int

before:

String

)

:

PurchaseProtectionInsurancesConnection

homeAssistences

(


first:

Int

after:

String

last:

Int

before:

String

)

:

HomeAssistencesConnection


Campos:

pageInfo

:

PageInfo obrigatório

edges

:

lista de CardsEdge

totalCount

:

Int


Campos:

id

:

ID obrigatório

name

:

String obrigatório

holder

:

CardHolder obrigatório

cards

(


first:

Int

after:

String

last:

Int

before:

String

)

:

CardsConnection


Campos:

hasPreviousPage

:

Boolean obrigatório

hasNextPage

:

Boolean obrigatório

startCursor

:

String

endCursor

:

String


Campos:

cursor

:

String obrigatório

node

:

Card


Campos:

cursor

:

String obrigatório

node

:

CardToken


Campos:

pageInfo

:

PageInfo obrigatório

edges

:

lista de CardTokensEdge

totalCount

:

Int


Campos:

cursor

:

String obrigatório


Campos:

pageInfo

:

PageInfo obrigatório

edges

:


totalCount

:

Int


Campos:

cursor

:

String obrigatório


Campos:

pageInfo

:

PageInfo obrigatório

totalCount

:

Int


Campos:

cursor

:

String obrigatório


Campos:

pageInfo

:

PageInfo obrigatório

totalCount

:

Int


Campos:

cursor

:

String obrigatório


Campos:

pageInfo

:

PageInfo obrigatório

edges

:


totalCount

:

Int


Campos:

id

:

ID obrigatório

sensitive

(


keyId:

String

)

:

String

last4

:

String

expiry

:

CardExpiry

holder

:

CardHolder

billingAddress

:

Address

status

:

CardStatusInterface obrigatório

usageConstraints

:

CardUsageConstraints

availableServices

:

lista de CardHolderService obrigatório

usedServices

:

lista de CardHolderService obrigatório

bin

:

BIN

funding

:

CardFunding

product

:

CardProduct

isInternational

:

Boolean

isCompany

:

Boolean

isToken

:

Boolean

cardTokens

:

CardTokensConnection

brand

:

CardBrand

allowedCaptures

:

lista de CardCapture obrigatório

usages

:

lista de CardUsage obrigatório

network

:

CardNetwork

issuer

:

CardIssuer

metadata

:

CardMetadata

trackings

:

lista de Track

transactions

(


first:

Int

after:

String

last:

Int

before:

String

)

:

CardTransactionsConnection

transactionsSummary

:

lista de CardTransactionCategorySummary obrigatório

fraudTransactions

(


first:

Int

after:

String

last:

Int

before:

String

)

:

CardFraudTransactionsConnection

queueFraudTransactions

(


first:

Int

after:

String

last:

Int

before:

String

)

:

CardFraudTransactionsConnection


Campos:

maxUsage

:

Int

expiry

:

DateTime

allowedTxAmounts

:

lista de CardCurrencyRange obrigatório

allowedMerchants

:

lista de Merchant obrigatório

allowedMerchantCategories

:

lista de MerchantCategory obrigatório

deniedMerchantCategories

:

lista de MerchantCategory obrigatório


Campos:

id

:

ID obrigatório

name

:

String obrigatório

description

:

String

image

(


width:

Int

height:

Int

mimeType:

String

)

:

ImageUrl

url

:

String

discounts

:

Discounts


Campos:

number

:

String obrigatório

panSizeRange

:

IntRange obrigatório

funding

:

CardFunding obrigatório

product

:

CardProduct obrigatório

country

:

String obrigatório

isInternational

:

Boolean obrigatório

regexp

:

String obrigatório

isCompany

:

Boolean obrigatório

isToken

:

Boolean obrigatório

brand

:

CardBrand obrigatório

allowedCaptures

:

lista obrigatória de CardCapture obrigatório

usages

:

lista obrigatória de CardUsage obrigatório

network

:

CardNetwork obrigatório

issuer

:

CardIssuer obrigatório

metadata

:

CardMetadata obrigatório

services

:

lista obrigatória de CardHolderService obrigatório

creditSettlementBankNumber

:

Int

debitSettlementBankNumber

:

Int


Campos:

id

:

ID obrigatório

code

:

CodeProduct obrigatório

name

:

String obrigatório

image

(


width:

Int

height:

Int

mimeType:

String

)

:

ImageUrl

url

:

String


Campos:

id

:

ID obrigatório

name

:

String obrigatório

image

(


width:

Int

height:

Int

mimeType:

String

)

:

ImageUrl

url

:

String


Campos:

id

:

ID obrigatório

name

:

String obrigatório

code

:

Int obrigatório


Campos:

id

:

ID obrigatório

name

:

String obrigatório

code

:

Int obrigatório


Campos:

id

:

ID obrigatório

name

:

String obrigatório

image

(


width:

Int

height:

Int

mimeType:

String

)

:

ImageUrl

url

:

String


Campos:

id

:

ID obrigatório

name

:

String obrigatório

legalName

:

String obrigatório

description

:

String

image

(


width:

Int

height:

Int

mimeType:

String

)

:

ImageUrl

legalIds

:

CompanyLegalIds obrigatório

contacts

:

lista obrigatória de CompanyContact obrigatório

addresses

:

lista obrigatória de Address obrigatório

url

:

String

cards

(


first:

Int

after:

String

last:

Int

before:

String

)

:

CardsConnection


Campos:

image

(


width:

Int

height:

Int

mimeType:

String

)

:

ImageUrl

backgroundColor

:

String

foregroundColor

:

String

issuer

:

String

brand

:

String

product

:

String


Campos:

type

:

TrackType obrigatório

key

:

String obrigatório

value

:

String obrigatório


Campos:

pageInfo

:

PageInfo obrigatório

edges

:


totalCount

:

Int


Campos:

category

:

MerchantCategory obrigatório

count

:

Int obrigatório

value

:

String obrigatório


Campos:

pageInfo

:

PageInfo obrigatório

edges

:


totalCount

:

Int


Campos:

timestamp

:

DateTime obrigatório

ip

(


ipv6Mapped:

Boolean

)

:

String

geolocation

:

Geolocation

device

:

Device

merchant

:

Merchant

merchantUserId

:

String

wallet

:

Wallet


Campos:

id

:

ID obrigatório

sensitive

(


keyId:

String

)

:

String

last4

:

String

expiry

:

CardExpiry

holder

:

CardHolder

billingAddress

:

Address

status

:

CardStatusInterface obrigatório

usageConstraints

:

CardUsageConstraints

availableServices

:

lista de CardHolderService obrigatório

usedServices

:

lista de CardHolderService obrigatório

bin

:

BIN

funding

:

CardFunding

product

:

CardProduct

isInternational

:

Boolean

isCompany

:

Boolean

isToken

:

Boolean

brand

:

CardBrand

allowedCaptures

:

lista de CardCapture obrigatório

usages

:

lista de CardUsage obrigatório

network

:

CardNetwork

issuer

:

CardIssuer

metadata

:

CardMetadata

transactions

(


first:

Int

after:

String

last:

Int

before:

String

)

:

CardTransactionsConnection

transactionsSummary

:

lista de CardTransactionCategorySummary obrigatório

card

:

Card

origin

:

CardTokenOrigin


Campos:

legalId

:

String obrigatório

name

:

String obrigatório

legalName

:

String obrigatório


Campos:

companyTravel

:

String

journeyLocator

:

String

trips

:

lista obrigatória de Trip obrigatório

purpose

:

TravelPurpose


Campos:

id

:

ID obrigatório

cardHolder

:

CardHolder obrigatório

bin

:

BIN obrigatório

merchant

:

MerchantInsurance

journey

:

Journey obrigatório

startDate

:

Date obrigatório

endDate

:

Date obrigatório

companyInsurance

:

String obrigatório


Campos:

id

:

ID obrigatório

display

:

String obrigatório

products

:

lista obrigatória de ProductCategory obrigatório


Campos:

id

:

ID obrigatório

insuranceId

:

ID obrigatório

cardHolder

:

CardHolder obrigatório

bin

:

BIN obrigatório

status

:

CardHolderInsuranceStatus obrigatório

merchant

:

MerchantInsurance

startDate

:

Date obrigatório

endDate

:

Date obrigatório

companyInsurance

:

String

invoiceNumber

:

String

invoiceDate

:

Date

serialNumber

:

String

category

(


language:

String

)

:

ExtendedWarrantyProductCategory

brand

:

String

model

:

String

description

:

String

value

:

Float

extendedWarrantyMonths

:

Int

manufacturerWarrantyMonths

:

Int


Campos:

id

:

ID obrigatório

display

:

String obrigatório

products

:

lista obrigatória de ProductCategory obrigatório


Campos:

id

:

ID obrigatório

insuranceId

:

ID obrigatório

cardHolder

:

CardHolder obrigatório

merchant

:

MerchantInsurance

bin

:

BIN obrigatório

status

:

CardHolderInsuranceStatus obrigatório

startDate

:

Date obrigatório

endDate

:

Date obrigatório

companyInsurance

:

String obrigatório

invoiceNumber

:

String obrigatório

invoiceDate

:

Date obrigatório

serialNumber

:

String

category

(


language:

String

)

:

PurchaseProtectionProductCategory

brand

:

String obrigatório

model

:

String obrigatório

description

:

String obrigatório

value

:

Float obrigatório

coverageDays

:

Int


Campos:

name

:

String obrigatório

contacts

:

lista obrigatória de PersonContact obrigatório


Campos:

name

:

String obrigatório

code

:

String obrigatório

legalIds

:

LegalIds

contacts

:

lista obrigatória de PersonContact obrigatório

geolocation

:

Geolocation

merchant

:

MerchantAssistence


Campos:

id

:

ID obrigatório

openedAt

:

DateTime obrigatório

updatedAt

:

DateTime

cardHolder

:

CardHolder obrigatório

bin

:

BIN obrigatório

status

:

HomeAssistenceStatus obrigatório

type

:

HomeAssistenceType obrigatório

address

:

Address obrigatório

person

:

PersonType obrigatório

providerAssistence

:

ProviderAssistence

description

:

String obrigatório


Campos:

currency

:

String obrigatório

min

:

Float

max

:

Float


Campos:

id

:

ID obrigatório

name

:

String obrigatório

legalName

:

String obrigatório

description

:

String

image

(


width:

Int

height:

Int

mimeType:

String

)

:

ImageUrl

legalIds

:

CompanyLegalIds obrigatório

contacts

:

lista obrigatória de CompanyContact obrigatório

addresses

:

lista obrigatória de Address obrigatório

url

:

String

categories

:

lista obrigatória de MerchantCategory obrigatório

transactionFees

:

lista de MerchantTransactionFees obrigatório

cardTransactions

(


first:

Int

after:

String

last:

Int

before:

String

)

:

CardTransactionsConnection


Campos:

id

:

ID obrigatório

iso

:

Int obrigatório

name

(


language:

String

)

:

String obrigatório

image

(


width:

Int

height:

Int

mimeType:

String

)

:

ImageUrl

transactionFees

:

lista de MerchantTransactionFees obrigatório

merchants

(


first:

Int

after:

String

last:

Int

before:

String

)

:

MerchantsConnection


Campos:

holderOrAdditional

:

Int

companion

:

Int


Campos:

min

:

Int obrigatório

max

:

Int obrigatório


Campos:

cnpj

:

CNPJ


Campos:

type

:

CompanyContactType obrigatório

context

:

String

value

:

String obrigatório


Campos:

cursor

:

String obrigatório


Campos:

cursor

:

String obrigatório


Campos:

cardUsage

:

CardUsage obrigatório

installmentsRange

:

IntRange

lastModified

:

DateTime obrigatório

expiry

:

DateTime

marketingFee

:

Float obrigatório

marketingFeeCeilValue

:

Float

acquiringServiceFee

:

Float obrigatório

acquiringServiceFeeCeilValue

:

Float

processingCost

:

Float obrigatório

additionalInstallmentCost

:

Float

calc

(


transactionValue:

Float obrigatório

installments:

Int

)

:

MerchantTransactionFeesCalc obrigatório


Campos:

pageInfo

:

PageInfo obrigatório

edges

:

lista de MerchantsEdge

totalCount

:

Int


Campos:

id

:

ID obrigatório

capture

:

CardCapture obrigatório

usage

:

CardUsage

bin

:

BIN

merchant

:

Merchant

currency

:

String obrigatório

value

:

String obrigatório

installments

:

Int obrigatório

timestamp

:

DateTime obrigatório

approvalCode

:

String

prePaid

:

PrePaid


Campos:

cardTransaction

:

CardTransaction obrigatório

last4

:

String

authorization

:

Authorization obrigatório

status

:

CardFraudTransactionStatus obrigatório

reference

:

String

codePos

:

ID obrigatório

liability

:

LiabilityType

codeEic

:

Int obrigatório

flaggedAt

:

DateTime

arn

:

Int obrigatório

initiated

:

InitiatedType obrigatório

settled

:

Date obrigatório


Campos:

lon

:

Float obrigatório

lat

:

Float obrigatório

alt

:

Float

precision

:

Float


Campos:

userAgent

:

String

brand

:

String

model

:

String

type

:

DeviceType

serialNumber

:

String

imei

:

String

os

:

String


Campos:

IataCode

:

String

IcaoCode

:

String

city

:

String obrigatório

country

:

String obrigatório

dateTime

:

DateTime obrigatório


Campos:

insurances

:

lista de InsuranceTraveler obrigatório

legalIds

:

InsuranceLegalIds obrigatório

name

:

String obrigatório

birthday

:

Date obrigatório

gender

:

Gender obrigatório

pregnancyWeeks

:

Int

maritalStatus

:

MaritalStatus obrigatório

occupation

(


language:

String

)

:

PersonOccupation

address

:

Address obrigatório

contacts

:

lista de PersonContact obrigatório

politicalExposure

:

Boolean obrigatório


Campos:

tripNumber

:

Int

tripLocator

:

String

type

:

TripType

departure

:

Layover

arrival

:

Layover

travelers

:

lista obrigatória de TravelInsuranceTraveler obrigatório


Campos:

leisure

:

Boolean obrigatório

business

:

Boolean obrigatório

adventure

:

Boolean obrigatório


Campos:

id

:

ID obrigatório

display

:

String obrigatório


Campos:

legalId

:

String obrigatório

name

:

String obrigatório

legalName

:

String obrigatório


Campos:

cardUsage

:

CardUsage obrigatório

expiry

:

DateTime

installments

:

Int obrigatório

totalCost

:

Float obrigatório

processingCost

:

Float obrigatório

installmentsCost

:

Float obrigatório

marketingCost

:

Float obrigatório

acquiringServiceCost

:

Float obrigatório


Campos:

cursor

:

String obrigatório

node

:

Merchant


Campos:

currency

:

String

balance

:

String


Campos:

date

:

DateTime obrigatório

code

:

ID obrigatório

decision

:

String obrigatório


Campos:

clientMutationId

:

String

cardToken

:

CardToken


Campos:

clientMutationId

:

String

cardToken

:

CardToken


Campos:

clientMutationId

:

String

cardToken

:

CardToken


Campos:

statusUpdate

:

UpdateStatus

updateCardOriginId

:

ID

bin

:

BIN

last4

:

String

errorDescription

:

String


Campos:

clientMutationId

:

String

cardOriginToTokens

:



Campos:

id

:

ID obrigatório

title

:

String obrigatório

description

:

String

url

:

String

isWalletDigital

:

Boolean


Campos:

agreementTerm

:

AgreementTerm obrigatório

timestamp

:

DateTime obrigatório


Campos:

accessToken

:

String obrigatório

timestamp

:

DateTime obrigatório

ip

(


ipv6Mapped:

Boolean

)

:

String

geolocation

:

Geolocation

device

:

Device


Campos:

id

:

String obrigatório

key

(


)

:

String obrigatório

fingerprint

:

String obrigatório


Campos:

id

:

ID obrigatório

verified

:

VerifiedStatus

username

:

String

name

:

String

firstName

:

String

lastName

:

String

displayName

:

String

legalIds

:

LegalIds

birthday

:

Date

age

:

Int

gender

:

Gender

maritalStatus

:

MaritalStatus

occupation

(


language:

String

)

:

PersonOccupation

image

(


width:

Int

height:

Int

mimeType:

String

)

:

ImageUrl

contacts

:

lista de PersonContact obrigatório

addresses

:

lista de Address obrigatório

cardHolders

:

lista de CardHolder obrigatório

merchants

:

lista de Merchant obrigatório

cardIssuers

:

lista de CardIssuer obrigatório

socialNetworks

:

lista de SocialNetworkInterface obrigatório

agreements

:

lista de UserAgreement obrigatório

accessTokens

:

lista de AccessTokenInfo obrigatório

publicKeys

:

lista de PublicKey obrigatório


Campos:

clientMutationId

:

String

user

:

User

publicKey

:

PublicKey


Campos:

clientMutationId

:

String

cardToken

:

CardToken





Campos:

id

:

ID obrigatório


Campos:

status

:

CardStatus obrigatório


Campos:

provider

:

String obrigatório

username

:

String obrigatório





Valores possíveis:


USER


CELLULAR


WIFI


GPS





Valores possíveis:


DESKTOP


LAPTOP


SMARTPHONE


TABLET


E_READER


WATCH


OTHER_WEARABLE


CAR


MOTORCYCLE


BOAT


AIRPLANE


OTHER_VEHICLE


PORTABLE_GAME_CONSOLE


GAME_CONSOLE


CAMERA


SMARTTV


PORTABLE_MEDIA_DEVICE


MEDIA_DEVICE


HOME_APPLIANCE





Valores possíveis:


FEMALE


MALE





Valores possíveis:


DIVORCED


MARRIED


SINGLE


WIDOWED


COMMON_LAW_MARRIED





Valores possíveis:


PHONE


EMAIL


IM


OTHER





Valores possíveis:


UNVERIFIED


PENDING


VERIFIED


FAILED


NOT_APPLICABLE





Valores possíveis:


INACTIVE


ACTIVE


SUSPENDED





Valores possíveis:


CREDIT


DEBIT


MULTIPLE


MEAL


FOOD





Valores possíveis:


RECEIVED


HIRED


CANCELED





Valores possíveis:


SERVICE_REQUESTED


TO_BE_CONFIRMED


CONFIRMED


PROVIDER_UNDER_WAY


PROVIDER_ON_SERVICE


COMPLETED





Valores possíveis:


PLUMBER


LOCKSMITH


ELECTRICIAN


GLAZIER





Valores possíveis:


BASIC


BUSINESS


CORPORATE


ELO_PLUS


SHOPPING


GRAFITE


NANQUIM


AWARDS


CORPORATE_EXPENDITURE


TRAVEL


CORPORATE_NANQUIM


GRAFITE_BUSINESS


PAYMENT_OF_SUPPLIERS


GENERAL_USE


GIFT_CARD


PAYMENTS


ELO_PLUS_ENTERPRISE


PREPAID_ENTERPRISE


NANQUIM_CORPORATE_DINERS





Valores possíveis:


SELLER





Valores possíveis:


PHONE


EMAIL


IM


OTHER





Valores possíveis:


APPROVED


REJECTED


RETURNED


REFUNDED


CHARGEBACK





Valores possíveis:


AIR


SEA


ROAD





Valores possíveis:


RECEIVED


IN_PROGRESS


PROCESSED


COMPLETED





Valores possíveis:


YES


NO


NOT_APPLICABLE





Valores possíveis:


CARD_ISSUER


CARD_HOLDER





Valores possíveis:


ISSUER


CARDHOLDER


PIN_LOCKED


TOKEN_REQUESTOR





Valores possíveis:


UPDATED


NOT_UPDATED





Valores possíveis:


JWK


PEM


X509





Valores possíveis:


SHA1


SHA256


SHA384


SHA512