Mova recursos de API no Apigee Spaces

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

Este tópico descreve como mover recursos de API (proxies de API, fluxos partilhados e produtos de API) entre espaços do Apigee numa organização do Apigee. Os utilizadores podem mover recursos entre os níveis da organização e do espaço, ou mover recursos entre espaços. Para mover, gerir ou ver os recursos da API numa organização ou num espaço, o utilizador tem de ter as autorizações adequadas para a organização ou o espaço relevante.

Mova recursos da API de uma organização para um espaço

Os recursos da API criados numa organização do Apigee podem ser movidos do nível da organização para um espaço ou vice-versa. Um recurso da API movido para um espaço herda a política IAM desse espaço. Para mover o recurso da API do nível da organização para um espaço, o utilizador tem de ter as seguintes autorizações:

  • apigee.RESOURCE_TYPE.move no âmbito de origem (a organização ou o espaço onde o recurso existe atualmente).

    Os valores válidos para RESOURCE_TYPE incluem apis, sharedflows ou apiproducts, consoante o tipo de recurso da API movido.

  • apigee.RESOURCE_TYPE.create no âmbito de destino (a organização ou o espaço para onde o recurso vai ser movido).

    Os valores válidos para RESOURCE_TYPE incluem apis, sharedflows ou apiproducts, consoante o tipo de recurso da API movido.

Para mover um recurso da API ao nível da organização para um espaço, use o seguinte comando:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/RESOURCE_TYPE/RESOURCE_ID:move?space=SPACE_NAME" \
  -X POST -H "Authorization: Bearer $TOKEN"

Onde:

  • ORG_NAME é o nome da sua organização do Apigee.
  • RESOURCE_TYPE é o tipo de recurso que está a anunciar. Os valores válidos incluem:
    • apis
    • sharedflows
    • apiproducts
  • RESOURCE_ID é o nome do proxy de API, do fluxo partilhado ou do produto de API que quer mover.
  • SPACE_NAME é o nome do espaço para onde está a mover o recurso.

Por exemplo, com o seguinte comando, um utilizador com a função de administrador da organização do Apigee para a organização acme move um proxy de API denominado demo do nível da organização para o espaço red:

curl "https://apigee.googleapis.com/v1/organizations/acme/apis/demo:move?space=red" \
  -X POST -H "Authorization: Bearer $TOKEN"

A resposta deve ser semelhante à seguinte:

{
  "metaData": {
    "createdAt": "1739489725993",
    "lastModifiedAt": "1741724822852",
    "subType": "Proxy"
  },
  "name": "demo",
  "revision": [
    "1",
    "2"
  ],
  "apiProxyType": "PROGRAMMABLE",
  "space": "red"
}

Assim que o proxy da API de demonstração for movido para o espaço vermelho, os membros do espaço vermelho podem aceder ao proxy, mesmo que não tenham autorização para aceder a recursos ao nível da organização. Os membros de outros espaços que não sejam membros do espaço vermelho não podem ver nem aceder ao proxy demo.

Se tentar aceder ao proxy de demonstração sem as autorizações corretas ao nível da organização ou do espaço, recebe o seguinte erro:

  {
    "error": {
      "code": 403,
      "message": "Permission denied on resource \"organizations\/acme\/apis\/demo\" (or it may not exist).",
      "status": "PERMISSION_DENIED"
    }
  }

Para mover um recurso da API de um espaço para o nível da organização, use o seguinte comando, que omite o parâmetro de consulta space:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/RESOURCE_TYPE/RESOURCE_ID:move" \
  -X POST -H "Authorization: Bearer $TOKEN"

Onde:

  • ORG_NAME é o nome da sua organização do Apigee.
  • RESOURCE_TYPE é o tipo de recurso que está a anunciar. Os valores válidos incluem:
    • apis
    • sharedflows
    • apiproducts
  • RESOURCE_ID é o nome do proxy de API, do fluxo partilhado ou do produto de API que quer mover.

Mova recursos da API entre espaços

Os recursos da API podem ser movidos entre espaços numa organização do Apigee. Um recurso da API movido para um espaço herda a política IAM desse espaço. Para mover o recurso da API entre espaços numa organização do Apigee, o utilizador tem de ter as seguintes autorizações:

  • apigee.RESOURCE_TYPE.move para o espaço onde o recurso da API existe atualmente.

    Os valores válidos para RESOURCE_TYPE incluem apis, sharedflows ou apiproducts, consoante o tipo de recurso da API que está a ser movido.

  • apigee.RESOURCE_TYPE.create para o espaço para onde o recurso da API vai ser movido.

    Os valores válidos para RESOURCE_TYPE incluem apis, sharedflows ou apiproducts, consoante o tipo de recurso da API que está a ser movido.

Um utilizador com a função apigee.spaceContentEditor atribuída a ambos os espaços tem as autorizações necessárias.

Para mover um recurso da API entre espaços numa organização do Apigee, use o seguinte comando:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/RESOURCE_TYPE/RESOURCE_ID:move?space=SPACE_NAME" \
  -X POST -H "Authorization: Bearer $TOKEN"

Onde:

  • ORG_NAME é o nome da sua organização do Apigee.
  • RESOURCE_TYPE é o tipo de recurso que está a anunciar. Os valores válidos incluem:
    • apis
    • sharedflows
    • apiproducts
  • RESOURCE_ID é o nome do proxy de API, do fluxo partilhado ou do produto de API que quer mover.
  • SPACE_NAME é o nome do novo espaço.

Por exemplo, um utilizador com a autorização apigee.proxies.move para o espaço vermelho e a autorização apigee.proxies.create para o espaço azul pode usar o seguinte comando para mover o proxy da API demo do espaço vermelho para o espaço azul:

curl "https://apigee.googleapis.com/v1/organizations/acme/apis/demo:move?space=blue" \
  -X POST -H "Authorization: Bearer $TOKEN"

A resposta deve ser semelhante à seguinte:

{
  "basepaths": ["/demo"],
  "revision": 1,
  "apiProxyId": "demo",
  "space_id": "blue",
  "createTime": ...,
  "updateTime": ...
}

Neste exemplo, o utilizador não precisa de ter autorizações ao nível da organização, apenas as autorizações necessárias definidas pelas associações de cada espaço.setIamPolicy

Se tentar mover o proxy da API demo sem as autorizações corretas para ambos os espaços, recebe o seguinte erro:

  {
    "error": {
      "code": 403,
      "message": "Permission denied on resource \"organizations\/acme\/apis\/demo\" (or it may not exist).",
      "status": "PERMISSION_DENIED"
    }
  }