Componentes de paquete de API de envoltorio

Los paquetes de la API de envoltorio contienen un archivo de almacenamiento de las API de envoltorio, un script de Terraform para el despliegue y una recopilación de Postman correspondiente.

  • El archivo de almacenamiento de API de envoltorio se denomina <ChaincodeName>WrapperAPI.zip. También contiene un script de Terraform que se debe desplegar en el recurso de pila.
  • El archivo de recopilación Postman se denomina <ChaincodeName>_WrapperAPI.postman_collection.json. Puede utilizar esta recopilación para llamar a todas las API de envoltorio.

Paquete API envoltorio

El paquete de API de encapsulador contiene un script de Terraform que aprovisiona todos los recursos de Oracle Cloud Infrastructure (OCI) necesarios para crear las API de encapsulador. Hay archivos de soporte de Terraform adicionales y una carpeta de Oracle Functions para cada API. Los paquetes de API de envoltorio crean los siguientes recursos de OCI.

  • Red virtual en la nube (VCN): establece la infraestructura de red para la comunicación.
  • Aplicaciones (Oracle Functions): despliega funciones sin servidor para manejar la lógica de API.
  • API Gateway: crea el gateway para gestionar y enrutar las solicitudes de API.
  • Despliegue de API: configura y despliega las API en API Gateway.
  • Política de despliegue de API: configura las políticas de IAM necesarias para activar el acceso seguro.
  • OCI Registry: proporciona un registro de contenedor para gestionar imágenes de Docker.
Después de generar las API de envoltorio, si desea cambiar cualquier variable de configuración, puede actualizarlas en Visual Studio Code, o bien puede extraer el paquete de API de envoltorio y actualizar el archivo terraform.tfvars con puntos finales y nombres de recursos actualizados y el archivo routes.go con puntos finales actualizados. Edite la variable function_paths en el archivo terraform.tfvars para actualizar un punto final. La variable function_paths define los puntos finales con la siguiente sintaxis: {endpoint, methodType}. El siguiente texto muestra un ejemplo de una variable function_paths.
function_paths="[{\"endpoint\":\"/activateCBDCAccount\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/addCBAdmin\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/approveBurn\",\"methodType\":[\"POST\"]}]"
El archivo routes.go está en la carpeta <ChaincodeName>OCIFunction. La variable routeData contiene metadatos para todas las rutas creadas en el gateway, incluidos el nombre de ruta, los argumentos y si hay argumentos opcionales. Al actualizar un punto final en la variable function_paths en el archivo terraform.tfvars, también debe actualizar la entrada correspondiente en la variable routeData en el archivo routes.go, como se muestra en el siguiente ejemplo.
var routeData = map[string]Route{
    "/activateCBDCAccount": {
        Args:           []string{"activateAccount", "orgId", "userId", "tokenId"},
        OptionalParams: true,
    },
}

Colección Postman

Las recopilaciones de Postman ahora admiten el código de cadena confidencial y la autenticación OAuth 2.0. Para obtener más información, consulte Mejoras en Postman Collections.

La recopilación de Postman incluye puntos finales y cargas útiles actualizados para todas las API. El siguiente código muestra un ejemplo de carga útil.
{
    "orgId": "{{bc-org-id}}",
    "userId": "user1",
    "tokenType": "fungible",
    "applicationGroups": "[\"application_groups value\"]",
    "dailyLimits": "{\"max_daily_amount\":10000,\"max_daily_transactions\":100}",
    "endorsers": {{endorsers}}
}
En la siguiente tabla se muestran las variables de recopilación de Postman.
Variable Descripción Valor por defecto
bc-admin-user El usuario administrativo, que tiene el rol admin y puede acceder a todas las solicitudes POST. Por defecto, este usuario es el emisor de llamada de todas las solicitudes POST en el código de cadena. valor bc-admin-user
bc-admin-user-password Contraseña de usuario administrativo. valor bc-admin-user-password
bc-org-id ID de organización por defecto en todas las solicitudes POST donde orgId es el nombre del parámetro valor bc-org-id
bc-user-id El ID de usuario por defecto en todas las solicitudes POST donde userId es el nombre del parámetro valor bc-user-id
bc-token-id ID de token por defecto en todas las solicitudes POST donde tokenId es el nombre del parámetro valor bc-token-id
endorsers En la matriz de endosadores se muestran los iguales específicos (por ejemplo: peer1, peer2) para endosar esta transacción. ["org1-xyz-abc.blockchain.ocp.oraclecloud.com:20009", "org2-xyz-abc.blockchain.ocp.oraclecloud.com:20009"]
api-gateway-endpoint Punto final de cada solicitud, que sirve como ruta base para los puntos finales de API de envoltorio.

Si hay menos de 50 API, se utiliza un único punto final. Si hay más de 50 API, los puntos finales se generan dinámicamente como api-gateway-endpoint1, api-gateway-endpoint2, etc., en función del número de API.

https://xyz.apigateway.region.oci.customer-oci.com/CBDC
bc-url URL de proxy de REST de la instancia de Oracle Blockchain Platform. https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy
access-token-url URL del token de acceso de Oracle Identity Cloud Service (IDCS). Por ejemplo: <idcs_endpoint>/oauth/v1/token valor acceso-token-url
client-id ID de cliente de la instancia de Oracle Blockchain Platform. ID de cliente
client-secret Secreto de cliente de la instancia de Oracle Blockchain Platform. cliente-secreto
peer Esta variable solo existe para la recopilación de Postman de API de contenedor de código de cadena confidencial, que requiere la cabecera peer para todas las API setter y getter. org-xyz-abc.blockchain.ocp.oraclecloud.com:20009

Después de desplegar el paquete de API de envoltorio, la salida del despliegue de recursos de pila es un objeto JSON que contiene los valores de punto final de gateway. Si genera más de 50 API, se generan varios puntos finales de gateway, uno por cada 50 API. Debe actualizar las variables de recopilación de Postman relacionadas con estos puntos finales. Las variables relacionadas con el punto final de la recopilación Postman se deben actualizar con los valores adecuados de la salida del despliegue del paquete de API de envoltorio en el gestor de recursos de pila.

Todas las API de setter de la recopilación Postman de API de envoltorio incluyen el parámetro endorsers o sameOrgEndorser en la carga útil de la solicitud. La información que especifica qué API necesitan el parámetro sameOrgEndorser se define en el parámetro sameOrgEndorserOptionInWrapperAPI del archivo .ochain.json en el código de cadena. Las API que se muestran en este parámetro tendrán sameOrgEndorser definido en true en sus cargas útiles. Todas las demás API de setter incluirán el parámetro endorsers en su lugar. En el siguiente ejemplo se muestra el parámetro para el código de cadena CBDC al por mayor.
"sameOrgEndorserOptionInWrapperAPI": ["addConversionRate","addTokenAdmin","addTokenAuditor","approveBurn","approveMint","burnTokens","createExchangePoolAccounts","deleteHistoricalTransactions","initializeCBDCToken","initializeExchangePoolUser","mintWithFundingExchangePool","rejectBurn","rejectMint","removeTokenAdmin","removeTokenAuditor","requestBurn","requestMint","updateCBDCToken","updateConversionRate"]
Puede personalizar el parámetro sameOrgEndorserOptionInWrapperAPI en el archivo .ochain.json según sea necesario. Al generar API de envoltorio, las API especificadas incluirán el parámetro sameOrgEndorser como true en sus cargas útiles.
Para obtener más información sobre el uso de recopilaciones de Postman, consulte los siguientes temas.