API-Proxys mithilfe der API bereitstellen

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Jede Organisation hat einen eigenen Lebenszyklus für die Softwareentwicklung. Häufig ist es erforderlich, die API-Proxy-Bereitstellung mit den Prozessen zu synchronisieren und auszurichten, die für Back-End-Dienste verwendet werden.

Mit den in diesem Thema beschriebenen Edge API-Methoden können Sie die API-Proxyverwaltung in den SDLC Ihrer Organisation einbinden. Diese API wird häufig verwendet, um Skripts oder Code zu schreiben, die API-Proxys bereitstellen oder API-Proxys von einer Umgebung in eine andere migrieren, als Teil eines größeren automatisierten Prozesses, der auch andere Anwendungen bereitstellt oder migriert.

Die Edge API trifft keine Annahmen über Ihren SDLC (oder die eines anderen Nutzers). Stattdessen stehen atomare Funktionen zur Verfügung, die von Ihrem Entwicklungsteam koordiniert werden können, um Ihren API-Entwicklungslebenszyklus zu automatisieren und zu optimieren.

Umfassende Informationen finden Sie unter Edge-APIs.

Um die Edge API zu verwenden, müssen Sie sich bei Ihren Aufrufen authentifizieren. Dazu können Sie eine der folgenden Methoden verwenden:

  • OAuth2 (nur Public Cloud)
  • SAML (öffentliche und private Cloud)
  • Basic Auth (nicht empfohlen; öffentliche und private Cloud)

Dieses Thema konzentriert sich auf eine Reihe von APIs für die Verwaltung von API-Proxys.

Video:In diesem kurzen Video erfahren Sie, wie Sie eine API bereitstellen.

Mit der API interagieren

Die folgenden Schritte führen Sie durch einfache Interaktionen mit den APIs.

APIs in Ihrer Organisation auflisten

Sie können damit beginnen, alle API-Proxys in Ihrer Organisation aufzulisten. Ersetzen Sie EMAIL:PASSWORD und ORG_NAME jeweils durch die entsprechenden Einträge. Eine Anleitung finden Sie unter Edge-API verwenden.

curl -u EMAIL:PASSWORD \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis

Beispielantwort:

[ "weatherapi" ]

API abrufen

Sie können die Methode GET für jeden API-Proxy in Ihrer Organisation aufrufen. Dieser Aufruf gibt eine Liste aller verfügbaren Versionen des API-Proxys zurück.

curl -u EMAIL:PASSWORD -H "Accept: application/json" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi

Beispielantwort:

{
  "name" : "weatherapi",
  "revision" : [ "1" ]
}

Das einzige von dieser Methode zurückgegebene Detail ist der Name des API-Proxys zusammen mit der zugehörigen Überarbeitung, der eine Nummer zugeordnet ist. API-Proxys bestehen aus einem Bundle von Konfigurationsdateien. Überarbeitungen bieten einen einfachen Mechanismus zur Verwaltung von Konfigurationsaktualisierungen während der Iteration. Überarbeitungen werden sequenziell nummeriert. So können Sie eine Änderung rückgängig machen, indem Sie eine frühere Version Ihres API-Proxys bereitstellen. Sie können auch eine Überarbeitung eines API-Proxys in der Produktionsumgebung bereitstellen und dabei neue Versionen des API-Proxys in der Testumgebung erstellen. Wenn Sie bereit sind, können Sie die höhere Version Ihres API-Proxys aus der Testumgebung gegenüber der vorherigen Version des API-Proxys in der Produktumgebung hochstufen.

In diesem Beispiel gibt es nur eine Version, da der API-Proxy gerade erstellt wurde. Wenn sich ein API-Proxy durch den Lebenszyklus der iterativen Konfiguration und Bereitstellung bewegt, erhöht sich die Versionsnummer in Ganzzahlen. Mit direkten API-Aufrufen für die Bereitstellung können Sie optional die Versionsnummer des API-Proxys erhöhen. Manchmal möchten Sie bei geringfügigen Änderungen die Überarbeitung nicht erhöhen.

API-Überarbeitung abrufen

Die API-Version (z. B. api.company.com/v1) sollte sich nur sehr selten ändern. Wenn Sie die API-Version erhöhen, bedeutet dies für Entwickler, dass sich die Signatur der externen Schnittstelle, die von der API angezeigt wird, erheblich geändert hat.

Die API-Proxy-Überarbeitung ist eine erhöhte Zahl, die einer API-Proxy-Konfiguration zugeordnet ist. API Services verwaltet Überarbeitungen Ihrer Konfigurationen, damit Sie eine Konfiguration wiederherstellen können, wenn ein Fehler auftritt. Standardmäßig wird die Version eines API-Proxys bei jedem Import eines API-Proxys mithilfe der API API-Proxy importieren automatisch erhöht. Wenn Sie die Überarbeitung eines API-Proxys nicht erhöhen möchten, verwenden Sie die API Update API-Proxyversion. Wenn Sie für die Bereitstellung Maven verwenden, nutzen Sie die Optionen clean oder update, wie in der Readme-Datei für das Maven-Plug-in beschrieben.

Sie können beispielsweise die Methode GET für API-Proxyversion 1 aufrufen, um eine detaillierte Ansicht zu erhalten.

curl -u EMAIL:PASSWORD -H "Accept:application/json" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1

Beispielantwort

{
  "configurationVersion" : {
    "majorVersion" : 4,
    "minorVersion" : 0
  },
  "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}",
  "createdAt" : 1343178905169,
  "createdBy" : "andrew@apigee.com",
  "lastModifiedAt" : 1343178905169,
  "lastModifiedBy" : "andrew@apigee.com",
  "name" : "weatherapi",
  "policies" : [ ],
  "proxyEndpoints" : [ ],
  "resources" : [ ],
  "revision" : "1",
  "targetEndpoints" : [ ],
  "targetServers" : [ ],
  "type" : "Application"
}

Diese API-Proxy-Konfigurationselemente sind in der Referenz zur API-Proxy-Konfiguration ausführlich dokumentiert.

API in einer Umgebung bereitstellen

Sobald Ihr API-Proxy für den ordnungsgemäßen Empfang und die Weiterleitung von Anfragen konfiguriert ist, können Sie ihn in einer oder mehreren Umgebungen bereitstellen. Normalerweise iterieren Sie API-Proxys in test und stufen die API-Proxy-Überarbeitung auf prod hoch, wenn sie bereit sind. Häufig werden Sie feststellen, dass Sie viel mehr Überarbeitungen eines API-Proxys in der Testumgebung haben. Das liegt hauptsächlich daran, dass Sie in der Produktionsumgebung viel weniger Iterationen ausführen werden.

Ein API-Proxy kann erst aufgerufen werden, wenn er in einer Umgebung bereitgestellt wurde. Nachdem Sie die API-Proxyversion für die Produktion bereitgestellt haben, können Sie die URL prod für externe Entwickler veröffentlichen.

Umgebungen auflisten

Jede Organisation in Apigee Edge hat mindestens zwei Umgebungen: test und prod. Die Unterscheidung ist willkürlich. Ziel ist es, Ihnen einen Bereich zur Verfügung zu stellen, in dem Sie überprüfen können, ob Ihr API-Proxy ordnungsgemäß funktioniert, bevor Sie ihn für externe Entwickler freigeben.

Jede Umgebung ist im Grunde nur eine Netzwerkadresse, sodass Sie den Traffic zwischen den API-Proxys, an denen Sie arbeiten, und denen, auf die Apps während der Laufzeit zugreifen, aufteilen können.

Umgebungen bieten auch die Trennung von Daten und Ressourcen. Sie können beispielsweise verschiedene Caches in der Test- und in der Produktion einrichten, auf die nur API-Proxys zugreifen können, die in dieser Umgebung ausgeführt werden.

Umgebungen in einer Organisation ansehen

curl -u EMAIL:PASSWORD \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments

Beispielantwort

[ "test", "prod" ]

Deployments analysieren

Eine Bereitstellung ist eine Version eines API-Proxys, der in einer Umgebung bereitgestellt wurde. Ein API-Proxy mit dem Status bereitgestellt ist über das Netzwerk unter den im Element <VirtualHost> für diese Umgebung definierten Adressen zugänglich.

API-Proxys bereitstellen

API-Proxys können erst aufgerufen werden, nachdem sie bereitgestellt wurden. API-Dienste stellen RESTful APIs zur Verfügung, mit denen der Bereitstellungsprozess gesteuert wird.

In einer Umgebung kann jeweils nur eine Version eines API-Proxys bereitgestellt werden. Daher muss die Bereitstellung der bereitgestellten Überarbeitung aufgehoben werden. Sie können festlegen, ob das neue Bundle als neue Überarbeitung bereitgestellt oder die vorhandene Überarbeitung überschrieben wird.

Sie sehen die Apigee Edge-Dokumentation.
Rufen Sie die Apigee X-Dokumentation auf.
weitere Informationen

Heben Sie zuerst die Bereitstellung der vorhandenen Überarbeitung auf. Geben Sie den Umgebungsnamen und die Versionsnummer des API-Proxys an, dessen Bereitstellung Sie aufheben möchten:

curl -X DELETE \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \
  -u EMAIL:PASSWORD

Stellen Sie dann die neue Überarbeitung bereit. Die neue Version des API-Proxys muss bereits vorhanden sein:

curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \
  -u EMAIL:PASSWORD

Nahtlose Bereitstellung (keine Ausfallzeiten)

Verwenden Sie den Parameter override für die Bereitstellungsmethode und setzen Sie ihn auf true, um das Risiko von Ausfallzeiten während der Bereitstellung zu minimieren.

Sie können nicht eine Version eines API-Proxys über eine andere bereitstellen. Die Bereitstellung der ersten Instanz muss immer aufgehoben werden. Wenn Sie override auf true setzen, geben Sie an, dass eine Version eines API-Proxys über der aktuell bereitgestellten Version bereitgestellt werden soll. Das Ergebnis ist, dass die Bereitstellungsreihenfolge umgekehrt wird. Die neue Überarbeitung wird bereitgestellt. Sobald die Bereitstellung abgeschlossen ist, wird die Bereitstellung der bereits bereitgestellten Überarbeitung aufgehoben.

Im folgenden Beispiel wird der Wert override festgelegt, indem er als Formularparameter übergeben wird:

curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments" \
  -d "override=true" \
  -u EMAIL:PASSWORD

Sie können die Bereitstellung weiter optimieren, indem Sie den Parameter delay festlegen. Der Parameter delay gibt ein Zeitintervall in Sekunden an, vor dem die Bereitstellung der vorherigen Überarbeitung aufgehoben werden soll. Dies hat zur Folge, dass laufende Transaktionen ein Zeitintervall haben, in dem sie abgeschlossen werden müssen, bevor der API-Proxy ihre Transaktion verarbeitet, deren Bereitstellung aufgehoben wird. Folgendes geschieht mit override=true und dem Parametersatz delay:

  • Revision 1 verarbeitet Anfragen.
  • Überarbeitung 2 wird parallel bereitgestellt.
  • Wenn Überarbeitung 2 vollständig bereitgestellt ist, wird neuer Traffic an Überarbeitung 2 gesendet. Es wird kein neuer Traffic an Überarbeitung 1 gesendet.
  • Überarbeitung 1 verarbeitet möglicherweise noch vorhandene Transaktionen. Wenn Sie den Parameter delay festlegen (z. B. 15 Sekunden), geben Sie Überarbeitung 15 Sekunden Zeit, um die Verarbeitung vorhandener Transaktionen abzuschließen.
  • Nach dem Verzögerungsintervall wird die Bereitstellung von Überarbeitung 1 aufgehoben.
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments?delay=15" \
  -d "override=true" \
  -u EMAIL:PASSWORD
Suchparameter Beschreibung
override

Der Standardwert ist false (normales Bereitstellungsverhalten: Die Bereitstellung einer vorhandenen Überarbeitung wird aufgehoben, dann wird eine neue Überarbeitung bereitgestellt).

Legen Sie true fest, um das normale Bereitstellungsverhalten zu überschreiben und eine nahtlose Bereitstellung zu ermöglichen. Die vorhandene Überarbeitung bleibt bereitgestellt, während gleichzeitig die neue Überarbeitung bereitgestellt wird. Wenn die neue Überarbeitung bereitgestellt wird, wird die Bereitstellung der alten Überarbeitung aufgehoben. Wird in Verbindung mit dem Parameter delay verwendet, um zu steuern, wann die Bereitstellung aufgehoben wird.

delay

Damit die Transaktionsverarbeitung für die vorhandene Überarbeitung abgeschlossen werden kann, bevor die Bereitstellung aufgehoben wird, und um die Möglichkeit von 502 Bad Gateway oder 504 Gateway Timeout errors zu vermeiden, legen Sie diesen Parameter auf die Anzahl der Sekunden fest, für die das Aufheben der Bereitstellung verzögert werden soll. Es gibt keine Begrenzung für die Anzahl von Sekunden, die Sie festlegen können, und es gibt keine Auswirkungen auf die Leistung, wenn Sie eine große Anzahl von Sekunden festlegen. Während der Verzögerung wird kein neuer Traffic an die alte Überarbeitung gesendet.

Der Standardwert ist 0 Sekunden. Wenn override auf „true“ und delay auf 0 gesetzt ist, wird die Bereitstellung der vorhandenen Überarbeitung unmittelbar nach der Bereitstellung der neuen Überarbeitung aufgehoben. Negative Werte werden als 0 Sekunden (null) behandelt.

Wenn override=true zusammen mit einem delay verwendet wird, können HTTP-5XX-Antworten während der Bereitstellung eliminiert werden. Das liegt daran, dass beide API-Proxy-Überarbeitungen gleichzeitig bereitgestellt werden. Die Bereitstellung der älteren Überarbeitung wird nach der Verzögerung aufgehoben.

Alle Bereitstellungen einer API-Überarbeitung ansehen

Manchmal ist es erforderlich, eine Liste aller derzeit bereitgestellten Versionen eines API-Proxys abzurufen.

curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1/deployments \
  -u EMAIL:PASSWORD
{
  "aPIProxy" : "weatherapi",
  "environment" : [ {
    "configuration" : {
      "basePath" : "",
      "steps" : [ ]
    },
    "name" : "test",
    "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "90096dd1-1019-406b-9f42-fbb80cd01200"
    }, {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "7d6e2eb1-581a-4db0-8045-20d9c3306549"
    }, {
      "status" : "deployed",
      "type" : [ "router" ],
      "uUID" : "1619e2d7-c822-45e0-9f97-63882fb6a805"
    }, {
      "status" : "deployed",
      "type" : [ "router" ],
      "uUID" : "8a5f3d5f-46f8-4e99-b4cc-955875c8a8c8"
    } ],
    "state" : "deployed"
  } ],
  "name" : "1",
  "organization" : "org_name"
}

Die obige Antwort enthält viele Attribute, die für die interne Infrastruktur von Apigee Edge spezifisch sind. Wenn Sie Apigee Edge nicht lokal verwenden, können Sie diese Einstellungen nicht ändern.

Die wichtigen in der Antwort enthaltenen Attribute sind organization, environment, aPIProxy, name und state. Anhand dieser Attributwerte können Sie feststellen, ob eine bestimmte Version eines API-Proxys in einer Umgebung bereitgestellt wurde.

Alle Bereitstellungen in der Testumgebung ansehen

Sie können auch den Bereitstellungsstatus für eine bestimmte Umgebung (einschließlich der Versionsnummer des aktuell bereitgestellten API-Proxys) mit dem folgenden Aufruf abrufen:

curl -u EMAIL:PASSWORD
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/test/deployments

Dies gibt für jede API, die in der Testumgebung bereitgestellt wird, dasselbe Ergebnis wie oben zurück.

Alle Bereitstellungen in Ihrer Organisation ansehen

Verwenden Sie die folgende API-Methode, um eine Liste aller derzeit bereitgestellten Versionen aller API-Proxys in allen Umgebungen abzurufen:

curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/deployments \
  -u EMAIL:PASSWORD

Dies gibt für alle API-Proxys, die in allen Umgebungen bereitgestellt werden, das gleiche Ergebnis wie oben zurück.

Da die API RESTful ist, können Sie einfach die Methode POST zusammen mit einer JSON- oder XML-Nutzlast für dieselbe Ressource verwenden, um einen API-Proxy zu erstellen.

Ein Profil für Ihren API-Proxy wird generiert. API-Proxys werden standardmäßig im JSON-Format (JavaScript Object Notation) dargestellt. Unten sehen Sie die JSON-Standardantwort auf die obige POST-Anfrage, durch die ein API-Proxy namens weatherapi erstellt wurde. Es folgt eine Beschreibung jedes Elements im Profil:

{
  "configurationVersion" : {
    "majorVersion" : 4,
    "minorVersion" : 0
  },
  "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}",
  "createdAt" : 1357172145444,
  "createdBy" : "you@yourcompany.com",
  "displayName" : "weatherapi",
  "lastModifiedAt" : 1357172145444,
  "lastModifiedBy" : "you@yourcompany.com",
  "name" : "weatherapi",
  "policies" : [ ],
  "proxyEndpoints" : [ ],
  "resources" : [ ],
  "revision" : "1",
  "targetEndpoints" : [ ],
  "targetServers" : [ ],
  "type" : "Application"
}

Das generierte API-Proxy-Profil zeigt die vollständige Struktur eines API-Proxys:

  • APIProxy revision: Die sequenziell nummerierte Iteration der API-Proxy-Konfiguration, die von API-Diensten verwaltet wird
  • APIProxy name: Der eindeutige Name des API-Proxys
  • ConfigurationVersion: Version der API-Dienste, der die API-Proxy-Konfiguration entspricht
  • CreatedAt: Zeitpunkt, zu dem der API-Proxy generiert wurde, formatiert im UNIX-Zeitformat
  • CreatedBy: E-Mail-Adresse des Apigee Edge-Nutzers, der den API-Proxy erstellt hat
  • DisplayName: Ein nutzerfreundlicher Name für den API-Proxy
  • LastModifiedAt: Zeitpunkt, zu dem der API-Proxy generiert wurde, formatiert im UNIX-Zeitformat
  • LastModifiedBy: E-Mail-Adresse des Apigee Edge-Nutzers, der den API-Proxy erstellt hat
  • Policies: Eine Liste von Richtlinien, die diesem API-Proxy hinzugefügt wurden
  • ProxyEndpoints: Eine Liste mit Namen von ProxyEndpunkte
  • Resources: Eine Liste von Ressourcen (JavaScript, Python, Java, XSLT), die in diesem API-Proxy ausgeführt werden können
  • TargetServers: Eine Liste benannter Zielserver, die mit der Management API erstellt werden können und in erweiterten Konfigurationen für Load-Balancing verwendet werden
  • TargetEndpoints: Eine Liste mit dem Namen „TargetEndpunkte“

Beachten Sie, dass viele Elemente der API-Proxy-Konfiguration, die mit der einfachen POST-Methode oben erstellt wurde, leer sind. In den folgenden Themen erfahren Sie, wie Sie die Schlüsselkomponenten eines API-Proxys hinzufügen und konfigurieren.

Informationen zu diesen Konfigurationselementen finden Sie auch in der Referenz zur API-Proxy-Konfiguration.

Skripts für die API erstellen

Die Verwendung der Beispiel-API-Proxys, die auf GitHub verfügbar sind, enthalten Shell-Skripts, die das Apigee-Bereitstellungstool umschließen. Wenn Sie das Python-Bereitstellungstool aus irgendeinem Grund nicht verwenden können, können Sie die API direkt aufrufen. Beide Ansätze werden in den folgenden Beispielskripts demonstriert.

Bereitstellungstool umschließen

Prüfen Sie zuerst, ob das Python-Bereitstellungstool in Ihrer lokalen Umgebung verfügbar ist.

Erstellen Sie dann eine Datei für Ihre Anmeldedaten. Die von Ihnen geschriebenen Bereitstellungsskripts importieren diese Einstellungen, sodass Sie die Anmeldedaten für Ihr Konto zentral verwalten können. Im API-Plattformbeispiel heißt diese Datei setenv.sh.

#!/bin/bash

org="Your ORG on enterprise.apigee.com"
username="Your USERNAME on enterprise.apigee.com"

# While testing, it's not necessary to change the setting below
env="test"
# Change the value below only if you have an on-premise deployment
url="https://api.enterprise.apigee.com"
# Change the value below only if you have a custom domain
api_domain="apigee.net"

export org=$org
export username=$username
export env=$env
export url=$url
export api_domain=$api_domain

Die obige Datei macht alle Ihre Einstellungen für die Shell-Skripts verfügbar, die das Bereitstellungstool umschließen.

Erstellen Sie nun ein Shell-Skript, das diese Einstellungen importiert und damit das Bereitstellungstool aufruft. Ein Beispiel finden Sie unter API-Plattformbeispiele für Apigee.

#!/bin/bash

source path/to/setenv.sh

echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:"

read -s password

echo Deploying $proxy to $env on $url using $username and $org

path/to/deploy.py -n {api_name} -u $username:$password -o $org -h $url -e $env -p / -d path/to/apiproxy

Erstellen Sie außerdem ein Script, um die API aufzurufen und zu testen:

#!/bin/bash

echo Using org and environment configured in /setup/setenv.sh

source /path/to/setenv.sh

set -x

curl "http://$org-$env.apigee.net/{api_basepath}"

API direkt aufrufen

Es kann nützlich sein, einfache Shell-Skripts zu schreiben, die das Hochladen und Bereitstellen von API-Proxys automatisieren.

Das folgende Skript ruft die Verwaltungs-API direkt auf. Die Bereitstellung der vorhandenen Version des API-Proxys, den Sie aktualisieren, wird aufgehoben. Anschließend wird im Verzeichnis /apiproxy eine ZIP-Datei mit den Proxykonfigurationsdateien erstellt. Anschließend wird die Konfiguration hochgeladen, importiert und bereitgestellt.

#!/bin/bash

#This sets the name of the API proxy and the basepath where the API will be available
api=api

source /path/to/setenv.sh

echo Delete the DS_store file on OSX

echo find . -name .DS_Store -print0 | xargs -0 rm -rf
find . -name .DS_Store -print0 | xargs -0 rm -rf

echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:"

read -s password

echo Undeploy and delete the previous revision

# Note that you need to explicitly update the revision to be undeployed.
# One benefit of the Python deploy tool is that it manages this for you.

curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X DELETE

curl -k -u $username:$password -X DELETE "$url/v1/o/$org/apis/$api/revisions/1"

rm -rf $api.zip

echo Create the API proxy bundle and deploy

zip -r $api.zip apiproxy

echo Import the new revision to $env environment 

curl -k -v -u $username:$password "$url/v1/o/$org/apis?action=import&name=$api" -T $api.zip -H "Content-Type: application/octet-stream" -X POST

echo Deploy the new revision to $env environment 

curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X POST