Componentes do Pacote da API do Encapsulador

Os pacotes de API do wrapper contêm um arquivo compactado das APIs do wrapper, um script Terraform para implantação e uma coleção Postman correspondente.

  • O arquivo compactado da API wrapper é chamado <ChaincodeName>WrapperAPI.zip. Ele também contém um script Terraform que deve ser implantado no recurso de pilha.
  • O arquivo de coleção Postman é chamado <ChaincodeName>_WrapperAPI.postman_collection.json. Você pode usar essa coleção para chamar todas as APIs do wrapper.

Pacote de API Wrapper

O pacote de API do wrapper contém um script Terraform que provisiona todos os recursos do OCI (Oracle Cloud Infrastructure) necessários para criar as APIs do wrapper. Há arquivos de suporte adicionais do Terraform e uma pasta do Oracle Functions para cada API. Os pacotes de API wrapper criam os recursos do OCI a seguir.

  • Rede Virtual na Nuvem (VCN): Estabelece a infraestrutura de rede para comunicação.
  • Aplicativos (Oracle Functions): Implanta funções sem servidor para tratar a lógica da API.
  • Gateway de API: Cria o gateway para gerenciar e rotear solicitações de API.
  • Implantação de API: Configura e implanta as APIs no Gateway de API.
  • Política de Implantação de API: Configura as políticas do IAM necessárias para permitir o acesso seguro.
  • OCI Registry: Fornece um registro de contêiner para gerenciar imagens do Docker.
Depois de gerar APIs do wrapper, se quiser alterar qualquer variável de configuração, você poderá atualizá-las no Visual Studio Code ou poderá extrair o pacote da API do wrapper e atualizar o arquivo terraform.tfvars com pontos finais e nomes de recursos atualizados e o arquivo routes.go com pontos finais atualizados. Edite a variável function_paths no arquivo terraform.tfvars para atualizar um ponto final. A variável function_paths define pontos finais com a seguinte sintaxe: {endpoint, methodType}. O texto a seguir mostra um exemplo de uma variável function_paths.
function_paths="[{\"endpoint\":\"/activateCBDCAccount\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/addCBAdmin\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/approveBurn\",\"methodType\":[\"POST\"]}]"
O arquivo routes.go está na pasta <ChaincodeName>OCIFunction. A variável routeData contém metadados para todas as rotas criadas no gateway, incluindo o nome da rota, os argumentos e se há argumentos opcionais. Quando você atualizar um ponto final na variável function_paths no arquivo terraform.tfvars, também deverá atualizar a entrada correspondente na variável routeData no arquivo routes.go, conforme mostrado no exemplo a seguir.
var routeData = map[string]Route{
    "/activateCBDCAccount": {
        Args:           []string{"activateAccount", "orgId", "userId", "tokenId"},
        OptionalParams: true,
    },
}

Coleção Postman

As coleções de carteiros agora suportam a autenticação chaincode e OAuth 2.0 confidencial. Para obter mais informações, consulte Aprimoramentos nas Coleções Postman.

A coleção Postman inclui pontos finais e payloads atualizados para todas as APIs. O código a seguir mostra um exemplo de payload.
{
    "orgId": "{{bc-org-id}}",
    "userId": "user1",
    "tokenType": "fungible",
    "applicationGroups": "[\"application_groups value\"]",
    "dailyLimits": "{\"max_daily_amount\":10000,\"max_daily_transactions\":100}",
    "endorsers": {{endorsers}}
}
A tabela a seguir mostra as variáveis de coleta Postman.
Variável Descrição Valor padrão
bc-admin-user O usuário administrativo, que tem a atribuição admin e pode acessar todas as solicitações POST. Por padrão, esse usuário é o chamador de todas as solicitações POST no chaincode. bc-admin-valor do usuário
bc-admin-user-password Senha de usuário administrativo. valor bc-admin-user-password
bc-org-id O ID da organização padrão em todas as solicitações POST em que orgId é o nome do parâmetro valor bc-org-id
bc-user-id O ID de usuário padrão em todas as solicitações POST em que userId é o nome do parâmetro valor bc-user-id
bc-token-id O ID do token padrão em todas as solicitações POST em que tokenId é o nome do parâmetro valor de bc-token-id
endorsers O array de endossadores lista os pares específicos (por exemplo: peer1, peer2) para endossar essa transação. ["org1-xyz-abc.blockchain.ocp.oraclecloud.com:20009", "org2-xyz-abc.blockchain.ocp.oraclecloud.com:20009"]
api-gateway-endpoint O ponto final de cada solicitação, que serve como um caminho base para pontos finais da API do encapsulador.

Se houver menos de 50 APIs, um único ponto final será usado. Se houver mais de 50 APIs, os pontos finais serão gerados dinamicamente como api-gateway-endpoint1, api-gateway-endpoint2 etc., com base no número de APIs.

https://xyz.apigateway.region.oci.customer-oci.com/CBDC
bc-url O URL do proxy REST da instância do Oracle Blockchain Platform. https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy
access-token-url O URL do token de acesso do IDCS (Oracle Identity Cloud Service). Por exemplo: <idcs_endpoint>/oauth/v1/token valor access-token-url
client-id O ID do cliente da instância do Oracle Blockchain Platform. cliente-id
client-secret O segredo do cliente da instância do Oracle Blockchain Platform. cliente-segredo
peer Essa variável só existe para a coleção Postman da API encapsuladora de chaincode confidencial, que requer o cabeçalho de pareamento para todas as APIs setter e getter. org-xyz-abc.blockchain.ocp.oraclecloud.com:20009

Depois de implantar o pacote de API do wrapper, a saída da implantação de recursos de pilha é um objeto JSON que contém os valores do ponto final do gateway. Se você gerar mais de 50 APIs, vários pontos finais de gateway serão gerados, um para cada 50 APIs. Atualize as variáveis de coleta Postman relacionadas a esses pontos finais. As variáveis relacionadas ao ponto final na coleção Postman devem ser atualizadas com os valores apropriados da saída da implantação do pacote de API do wrapper no Stack Resource Manager.

Todas as APIs do setter na coleção Postman da API do wrapper incluem o parâmetro endorsers ou sameOrgEndorser no payload da solicitação. As informações que especificam quais APIs exigem o parâmetro sameOrgEndorser são definidas no parâmetro sameOrgEndorserOptionInWrapperAPI no arquivo .ochain.json no chaincode. As APIs listadas neste parâmetro terão sameOrgEndorser definido como verdadeiro em seus payloads. Todas as outras APIs do setter incluirão o parâmetro endorsers. O exemplo a seguir mostra o parâmetro para o chaincode CBDC de atacado.
"sameOrgEndorserOptionInWrapperAPI": ["addConversionRate","addTokenAdmin","addTokenAuditor","approveBurn","approveMint","burnTokens","createExchangePoolAccounts","deleteHistoricalTransactions","initializeCBDCToken","initializeExchangePoolUser","mintWithFundingExchangePool","rejectBurn","rejectMint","removeTokenAdmin","removeTokenAuditor","requestBurn","requestMint","updateCBDCToken","updateConversionRate"]
Você pode personalizar o parâmetro sameOrgEndorserOptionInWrapperAPI no arquivo .ochain.json conforme necessário. Quando você gerar APIs do wrapper, as APIs especificadas incluirão o parâmetro sameOrgEndorser como true em seus payloads.
Para obter mais detalhes sobre como usar coleções do Postman, consulte os tópicos a seguir.