Publica APIs con la API de Edge

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

En esta sección, se describe cómo usar la API de Edge para crear productos de API que se publicarán en los portales para desarrolladores.

Crea productos de API con la API

Los productos de API permiten que los desarrolladores registren que consumen APIs con claves de API y tokens de acceso de OAuth. Los productos de APIs están diseñados para te permiten "agrupar" recursos de API y, luego, publicar esos paquetes en diferentes grupos desarrolladores. Por ejemplo, es posible que debas publicar un conjunto de recursos de API para tu socio desarrolladores, mientras publicas otro paquete para desarrolladores externos. Los productos de API te permiten hacer lo siguiente: realizar este paquete sobre la marcha, sin necesidad de realizar cambios en tus APIs. Los beneficio adicional es que el acceso de los desarrolladores puede "actualizarse" y descendió a una versión anterior sin requerir desarrolladores para obtener nuevas claves de consumidor para sus apps.

Para crear un producto de API con la API, envía una solicitud POST al /organizations/{org_name}/apiproducts Para obtener más información, consulta la referencia de la API de Create API Product.

La siguiente solicitud crea un producto de API llamado weather_free. El producto de API proporciona acceso a todas las APIs expuestas por el proxy de API llamado weatherapi que se implementadas en el entorno test. El tipo de aprobación se establece en auto, lo que indica que cualquier la solicitud de acceso.

curl -X POST https://api.enterprise.apigee.com/v1/organization/myorg/apiproducts \
-H "Content-Type:application/json" \
-d \
'{
  "approvalType": "auto",
  "displayName": "Free API Product",
  "name": "weather_free",
  "proxies": [ "weatherapi" ],
  "environments": [ "test" ]
}' \
-u email:password 

Respuesta de muestra:

{
  "apiResources" : [ ],
  "approvalType" : "auto",
  "attributes" : [ ],
  "createdAt" : 1362759663145,
  "createdBy" : "developer@apigee.com",
  "displayName" : "Free API Product",
  "environments" : [ "test" ],
  "lastModifiedAt" : 1362759663145,
  "lastModifiedBy" : "developer@apigee.com",
  "name" : "weather_free",
  "proxies" : [ "weatherapi" ],
  "scopes" : [ ]
}

El producto de API creado anteriormente implementa la situación más básica y autoriza las solicitudes a un proxy de API en un entorno. Define un producto de API que permite que una aplicación autorizada acceda a a los recursos de API a los que se accede a través del proxy de API que se ejecuta en el entorno de pruebas. Productos de API Expón parámetros de configuración adicionales que te permiten personalizar el control de acceso a tus APIs para diferentes grupos de desarrolladores. Por ejemplo, puedes crear dos productos de API que proporcionen acceso a diferentes proxies de API. También puedes crear dos productos de API que proporcionen acceso al mismo con proxies de API, pero con una configuración de cuota asociada diferente.

Opciones de configuración de los productos de API

Los productos de API exponen las siguientes opciones de configuración:

Name Descripción Predeterminada ¿Es obligatorio?
apiResources

Una lista separada por comas de URI, o rutas de recursos, “agrupadas”en el producto de API.

De forma predeterminada, las rutas de acceso a los recursos se asignan desde el proxy.pathsuffix de salida. El sufijo de la ruta de acceso del proxy se define como el fragmento de URI que sigue al Ruta base de ProxyEndpoint. Por ejemplo, en el siguiente producto de API, la El elemento apiResources se define como /forecastrss. Ya que el La ruta base definida para este proxy de API es /weather, lo que significa que solo este producto de API permite las solicitudes a /weather/forecastrss.

Puedes seleccionar una ruta de acceso específica o todas las rutas secundarias con un comodín. Se admiten comodines (/** y /*). El comodín de asterisco doble indica que subURI incluidos. Un solo asterisco indica que solo los URI de un nivel inferior incluidos.

De forma predeterminada, '/' admite los mismos recursos que "/**" así como la base Ruta de acceso definida por el proxy de API. Por ejemplo, si la ruta base del proxy de API es /v1/weatherapikey y, luego, el producto de API admite solicitudes a /v1/weatherapikey y a cualquier subURI, como /v1/weatherapikey/forecastrss, /v1/weatherapikey/region/CA, y así sucesivamente. Consulta Administrar productos de API para información sobre cómo cambiar el comportamiento de este valor predeterminado.

N/A No
approvalType Especifica cómo se aprueban las claves de API para acceder a las APIs definidas por el producto de API. Si Si se configura como manual, la clave que se genera para la app se encuentra en el estado para cada estado. Esas claves no funcionarán hasta que se hayan aprobado de forma explícita. Si se establece en auto, todas las claves se generan en el entorno y trabajar de inmediato. (auto es normalmente se usa para brindar acceso a productos de API gratuitos o de prueba que proporcionan una cuota limitada o capacidades). N/A
attributes

Es el array de atributos que se pueden usar para extender el perfil de producto de API predeterminado con metadatos específicos del cliente.

Usa esta propiedad para especificar el nivel de acceso del producto de API como public, private o internal. Por ejemplo:
"attributes": [
{
“name”: “acceso”,
“value”: “público”
},
{
"name": "foo",
"value": "foo"
},
{
"name": "bar",
"value": "bar"
}
]
N/A No
scopes Una lista separada por comas de los permisos de OAuth que se validan en el entorno de ejecución. (Apigee Edge valida que los alcances de cualquier token de acceso presentado coincidan con el alcance configurado en la API product.) N/A No
proxies Proxies de API con nombre a los que está vinculado este producto de API. Con la especificación de proxies, puedes asociar recursos en el producto de API con proxies de API específicos, lo que evita que los desarrolladores accedan a esos recursos a través de otros proxies de API. N/A No. Si no se define, apiResources debe definirse de forma explícita (consulta la información sobre apiResources anterior) y la variable flow.resource.name configurada en la política AssignMessage.
environments Entornos con nombre (por ejemplo, “prueba” o “producción”) a los que está vinculado este producto de API. Cuando especificas uno o más entornos, puedes vincular los recursos enumerados en el producto de API. a un entorno específico, lo que evita que el desarrollador acceda a esos recursos a través de la API proxies en otro entorno. Este parámetro de configuración se usa, por ejemplo, para evitar que los recursos asociados con proxies de API en "prod" los proxies de API implementados en "test". N/A No. Si no está definido, se debe definir apiResources de forma explícita, y la variable flow.resource.name está establecida en la política AssignMessage.
quota Cantidad de solicitudes permitidas por app durante el intervalo de tiempo especificado N/A No
quotaInterval Cantidad de unidades de tiempo en las que se evalúan las cuotas N/A No
quotaTimeUnit La unidad de tiempo (minuto, hora, día o mes) sobre la que se cuentan las cuotas N/A No

A continuación, se proporciona un ejemplo más detallado para crear un producto de API.

curl -X POST  https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts \
-H "Content-Type:application/json" -d \
'{
  "apiResources": [ "/forecastrss" ],
  "approvalType": "auto", 
  "attributes":
    [ {"name": "access", "value": "public"} ],
  "description": "Free API Product",
  "displayName": "Free API Product",
  "name": "weather_free",
  "scopes": [],
  "proxies": [ "weatherapi" ],
  "environments": [ "test" ],
  "quota": "10",
  "quotaInterval": "2",
  "quotaTimeUnit": "hour" }' \
-u email:password

Respuesta de muestra:

{
  "apiResources" : [ "/forecastrss" ],
  "approvalType" : "auto",
  "attributes" : [ {
    "name" : "access",
    "value" : "public"
  },
  "createdAt" : 1344454200828,
  "createdBy" : "admin@apigee.com",
  "description" : "Free API Product",
  "displayName" : "Free API Product",
  "lastModifiedAt" : 1344454200828,
  "lastModifiedBy" : "admin@apigee.com",
  "name" : "weather_free",
  "scopes" : [ ],
  "proxies": [ {'weatherapi'} ],
  "environments": [ {'test'} ],
  "quota": "10",
  "quotaInterval": "1",
  "quotaTimeUnit": "hour"}'
}

Acerca de los permisos

Un alcance es un concepto extraído de OAuth y se asigna de forma aproximada al concepto de un "permiso". Activada Apigee Edge, los permisos son completamente opcionales. Puedes usar permisos para obtener permisos autorización. Cada clave de consumidor emitida a una app está asociada con un "alcance principal". El El alcance principal es el conjunto de todos los alcances en todos los productos de API. Para esto, se aprobó la app. Para aplicaciones aprobadas para consumir varios productos de API, el alcance principal es la unión de todos los alcances definidos en los productos de API para los que se aprobó la clave de consumidor.

Visualiza productos de API

Si deseas ver los productos de API creados para una organización que usa la API, consulta las siguientes secciones:

A continuación, se proporciona un ejemplo de cómo ver los productos de API con la API:

curl -X GET "https://ext.apiexchange.org/v1/mint/organizations/{org_name}/products?monetized=true" \
  -H "Accept:application/json" \
  -u email:password

La respuesta debería ser similar a la siguiente (solo se muestra una parte):

{
  "product" : [ {
    "customAtt1Name" : "user",
    "customAtt2Name" : "response size",
    "customAtt3Name" : "content-length",
    "description" : "payment api product",
    "displayName" : "payment",
    "id" : "payment",
    "name" : "payment",
    "organization" : {
      ...
    },
    "pricePoints" : [ ],
    "status" : "CREATED",
    "transactionSuccessCriteria" : "status == 'SUCCESS'"
  }, {
    "customAtt1Name" : "user",
    "customAtt2Name" : "response size",
    "customAtt3Name" : "content-length",
    "description" : "messaging api product",
    "displayName" : "messaging",
    "id" : "messaging",
    "name" : "messaging",
    "organization" : ...
    },
    "pricePoints" : [ ],
    "status" : "CREATED",
    "transactionSuccessCriteria" : "status == 'SUCCESS'"
  } ],
  "totalRecords" : 2
}

Registra a los desarrolladores con la API

Todas las apps pertenecen a desarrolladores o empresas. Por lo tanto, para crear una app, primero necesitas para registrar un desarrollador o una empresa.

Los desarrolladores se registran en una organización mediante la creación de un perfil. Ten en cuenta que el desarrollador que se incluye en el perfil se utiliza como la clave única para el desarrollador en todo el Apigee Edge

Para admitir la monetización, debes definir la monetización. atributos cuando se crean o editan desarrolladores. También puedes definir otras reglas atributos para usarlos en estadísticas personalizadas, aplicación de políticas personalizadas, etcétera estos valores arbitrarios no los interpretará Apigee Edge,

Por ejemplo, la siguiente solicitud registra el perfil de un desarrollador cuya dirección de correo electrónico es ntesla@theremin.com y define un subconjunto de monetización con la API de Create developer:

$ curl -H "Content-type:application/json" -X POST -d \
'{"email" : "ntesla@theremin.com", 
  "firstName" : "Nikola", 
  "lastName" : "Tesla", 
  "userName" : "theremin", 
  "attributes" : [ 
  { 
    "name" : "project_type", 
    "value" : "public"
  },
  {    
   "name": "MINT_BILLING_TYPE",
   "value": "POSTPAID"
  },
  {
   "name": "MINT_DEVELOPER_ADDRESS",
   "value": "{\"address1\":\"Dev One Address\",\"city\":\"Pleasanton\",\"country\":\"US\",\"isPrimary\":true,\"state\":\"CA\",\"zip\":\"94588\"}"
  },
  {
   "name": "MINT_DEVELOPER_TYPE",
   "value": "TRUSTED"
  },
  {    
   "name": "MINT_HAS_SELF_BILLING,
   "value": "FALSE"
  },
  {
   "name" : "MINT_SUPPORTED_CURRENCY",
   "value" : "usd"
  }
 ] 
}' \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers \
-u email:password 

Respuesta de muestra:

{
          "email" : "ntesla@theremin.com",
          "firstName" : "Nikola",
          "lastName" : "Tesla",
          "userName" : "theremin",
          "organizationName" : "{org_name}",
          "status" : "active",
          "attributes" : [ 
          {
            "name" : "project_type",
            "value" : "public"
          },
          {    
             "name": "MINT_BILLING_TYPE",
             "value": "POSTPAID"
          },
          {
             "name": "MINT_DEVELOPER_ADDRESS",
             "value": "{\"address1\":\"Dev One Address\",\"city\":\"Pleasanton\",\"country\":\"US\",\"isPrimary\":true,\"state\":\"CA\",\"zip\":\"94588\"}"
          },
          {
             "name": "MINT_DEVELOPER_TYPE",
             "value": "TRUSTED"
          },
          {    
             "name": "MINT_HAS_SELF_BILLING,
             "value": "FALSE"
          },
          {
             "name" : "MINT_SUPPORTED_CURRENCY",
             "value" : "usd"
          } 
          ],
          "createdAt" : 1343189787717,
          "createdBy" : "admin@apigee.com",
          "lastModifiedAt" : 1343189787717,
          "lastModifiedBy" : "admin@apigee.com"
        }

Registra las apps de desarrollador con la API

Cada app que se registra en Apigee Edge se asocia con un desarrollador y un producto de API. Cuando una app se registra en nombre de un desarrollador, Apigee Edge genera una "credencial". (un clave de consumidor y par secreto) que identifica la aplicación. La app debe pasar estas credenciales como parte de cada solicitud a un producto de API asociado con la app.

La siguiente solicitud usa la sección Crear API de Developer App para registrar una app para el desarrollador que creaste anteriormente: ntesla@theremin.com. Cuando registras una app, debes definir un nombre para ella, una callbackUrl y una lista de una o más API. productos:
$ curl -H "Content-type:application/json" -X POST -d \
'{
  "apiProducts": [ "weather_free"], 
  "callbackUrl" : "login.weatherapp.com", 
  "keyExpiresIn" : "2630000000",
  "name" : "weatherapp"}' \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps \
-u email:password 

Algunos tipos de permisos de OAuth (como el código de autorización) usan la callbackUrl para validar las solicitudes de redireccionamiento de la app. Si usas OAuth, este valor se debe establecer como el mismo valor que redirect_uri, que se usa para realizar solicitudes OAuth.

El atributo keyExpiresIn especifica, en milisegundos, durante la vida útil de la clave de consumidor que se generará para la app de desarrollador. El valor predeterminado, -1, indica un período de validez infinito.

Respuesta de muestra:

{
  "appId": "5760d130-528f-4388-8c6f-65a6b3042bd1",
  "attributes": [
    {
      "name": "DisplayName",
      "value": "Test Key Expires"
    },
    {
      "name": "Notes",
      "value": "Just testing this attribute"
    }
  ],
  "createdAt": 1421770824390,
  "createdBy": "wwitman@apigee.com",
  "credentials": [
    {
      "apiProducts": [
        {
          "apiproduct": "ProductNoResources",
          "status": "approved"
        }
      ],
      "attributes": [],
      "consumerKey": "jcAFDcfwImkJ19A5gTsZRzfBItlqohBt",
      "consumerSecret": "AX7lGGIRJs6s8J8y",
      "expiresAt": 1424400824401,
      "issuedAt": 1421770824401,
      "scopes": [],
      "status": "approved"
    }
  ],
  "developerId": "e4Oy8ddTo3p1BFhs",
  "lastModifiedAt": 1421770824390,
  "lastModifiedBy": "wwitman@apigee.com",
  "name": "TestKeyExpires",
  "scopes": [],
  "status": "approved"
}

Cómo administrar las claves de consumidor para las apps que usan la API

Obtén la clave de consumidor (la clave de API) de la app

Las credenciales para una aplicación (producto de API, clave de consumidor y secreto) se muestran como parte del perfil de app. Un administrador de una organización puede recuperar la clave de consumidor en cualquier momento.

En el perfil de la app, se muestra el valor de la clave de consumidor y el secreto, el estado de la clave de consumidor y cualquier asociación de producto de la API de la clave. Como administrador, puedes recuperar el perfil de clave del consumidor en cualquier momento mediante Obtén información clave sobre una API de apps de desarrollador:

$ curl -X GET -H "Accept: application/json" \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J \
-u email:password

Respuesta de muestra:

{
  "apiProducts" : [ {
    "apiproduct" : "weather_free",
    "status" : "approved"
  } ],
  "attributes" : [ ],
  "consumerKey" : "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J",
  "consumerSecret" : "1eluIIdWG3JGDjE0",
  "status" : "approved"
}

Para obtener más información, consulta Obtén información clave sobre una app de desarrollador.

Agrega un producto de API a una app y una clave

Para actualizar una app a fin de agregar un nuevo producto de API, debes agregar el producto de API a la clave de la app mediante Agrega el producto de API a la API de la clave. Consulta Agrega el producto de API a la clave para obtener más información.

Agregar un producto de API a una clave de app permite que la app que contiene la clave acceda a la API integrados en el producto de API. La siguiente llamada de método agrega un nuevo producto de API a un app:

$ curl -H "Content-type:application/json" -X POST -d \
'{
  "apiProducts": [ "newAPIProduct"]
}' \
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J \
-u email:password 

Respuesta de muestra:

{
  "apiProducts": [
   {
     "apiproduct": "weather_free",
     "status": "approved"
   },
   {
     "apiproduct": "newAPIProduct",
     "status": "approved"
   }
 ],
 "attributes": [],
 "consumerKey": "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J",
 "consumerSecret": "1eluIIdWG3JGDjE0",
 "expiresAt": -1,
 "issuedAt": 1411491156464,
 "scopes": [],
 "status": "approved"
 }

Aprueba claves de consumidor

Si estableces el tipo de aprobación en manual, podrás controlar qué los desarrolladores pueden acceder a los recursos protegidos por los productos de API. Cuando los productos de API tienen claves aprobación establecida en manual, las claves de consumidor se deben aprobar de forma explícita. Las claves pueden ser aprobada de forma explícita con la opción para aprobar o revocar una clave específica de una app de desarrollador API:

$ curl -X POST -H "Content-type:appilcation/octet-stream" \ 
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J?"action=approve" \
-u email:password

Respuesta de muestra:

{
  "apiProducts" : [ {
  "apiproduct" : "weather_free",
  "status" : "approved"
} ],
  "attributes" : [ ],
  "consumerKey" : "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J",
  "consumerSecret" : "1eluIIdWG3JGDjE0",
  "status" : "approved"
}

Para obtener más información, consulta Aprueba o revoca claves específicas de apps de desarrollador.

Aprueba productos de API para claves de consumidor

La asociación de un producto de API con una clave de consumidor también tiene un estado. Para que el acceso a la API sea si se realiza correctamente, la clave de consumidor debe estar aprobada y la clave de consumidor debe aprobarse para el producto de API adecuado. La asociación de una clave de consumidor con un producto de API aprobada con el mensaje Aprobar o revocar un producto de API correspondiente a una clave para un desarrollador App:

$ curl -X POST -H "Content-type:application/octet-stream" \ 
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J/apiproducts/weather_free?"action=approve" \
-u email:password

En este comando cURL, no se muestra una respuesta. Consulta Aprueba o revoca el producto de API para una clave de app de desarrollador a fin de obtener más información.

Revoca productos de API para claves de consumidor

Existen muchos motivos por los que podrías tener que revocar la asociación de una clave de consumidor con una API producto. Es posible que debas quitar un producto de API de una clave de consumidor debido a la falta de pago por parte de la desarrollador, un período de prueba vencido o la promoción de una aplicación de un producto de API a con el otro.

Para revocar la asociación de una clave de consumidor con un producto de API, usa la API Aprueba o revoca la clave específica de la app de desarrollador mediante la acción de revocar contra la clave de consumidor de la app de desarrollador.

$ curl -X POST -H "Content-type:application/octet-stream" \ 
https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J/apiproducts/weather_free?"action=revoke" \
-u email:password

En este comando cURL, no se muestra una respuesta. Para obtener más información, consulta Aprueba o revoca claves específicas de apps de desarrollador.

Aplica la configuración del producto de API

Para que se apliquen los productos de API, se debe adjuntar uno de los siguientes tipos de políticas a la API Flujo del proxy:

  • VerifyAPIKey: toma una referencia a una clave de API, verifica que representa una aplicación válida. coincide con el producto de API. Consulta la política de Verificar clave de API para más.
  • Operación OAuthV1, “VerifyAccessToken”: Verifica la firma, valida un token de acceso de OAuth 1.0a y una “clave de consumidor” y hace coincidir la app con el producto de API. Consulta la política OAuth v1.0a para obtener más información.
  • OAuthV2, operación “VerifyAccessToken”: verifica que el acceso de OAuth 2.0 el token es válido, hace coincidir el token con la app, verifica que esta sea válida y, luego, coincide la app a un producto de API. Consulta OAuth página principal para obtener más información.

Una vez que se configuran las políticas y los productos de API, Apigee ejecuta el siguiente proceso Perímetro:

  1. Apigee Edge recibe una solicitud y la enruta al proxy de API correspondiente.
  2. Se ejecuta una política que verifica la clave de API o el token de acceso OAuth presentado por el cliente.
  3. Edge resuelve la clave de API o el token de acceso a un perfil de app.
  4. Edge resuelve la lista (si existe) de productos de API asociados con la app.
  5. El primer producto de API que coincide se usa para propagar las variables de cuota.
  6. Si ningún producto de API coincide con la clave de API o el token de acceso, se rechaza la solicitud.
  7. Edge aplica el control de acceso basado en URI (entorno, proxy de API y ruta de URI) según el La configuración del producto de API y la configuración de la cuota.