Creating App Engine Applications with the Admin API

Use the Google App Engine Admin API to programmatically create App Engine applications in new Google Cloud Platform projects. By using both the Admin API along with the Cloud Resource Manager API, you are able to programmatically manage Cloud Platform projects and App Engine applications.

Creating an App Engine application creates an Application resource for a target Cloud Platform project in the specified location.

To manually create an App Engine application in a new Cloud Platform project, you can use a Beta command of the gcloud tool: gcloud beta app create.

Before you begin

Before you can create an App Engine application, you must be able to authorize your HTTP requests and have or create a Cloud Platform project. A project can contain only a single App Engine application. Therefore, a new App Engine application can be created only in a project that does not already contain an Application resource. You can use either the apps.get method or the Cloud Platform Console to check if a project already contains an Application resource.

To create a Cloud Platform project:

  • To programmatically create a Cloud Platform project, you use the Cloud Resource Manager API, see Creating a New Project for details. See a short example.

  • To manually create a Cloud Platform project, you use the Cloud Platform Console.

Creating an App Engine application

To create an App Engine application with the Admin API:

  1. Authorize your HTTP requests, for example obtain an access token.

    Authorizing access to the Admin API can be accomplished with different OAuth flows depending on the needs of your API app. For more information, see Accessing the API.

  2. Send an HTTP POST request using your access token and the Admin API to create an App Engine application.

    You define the Application resource and target Cloud Platform Console project in the HTTP POST request, for example:

    POST https://appengine.googleapis.com/v1/apps { "id": "[MY_PROJECT_ID]", "location": "[MY_APP_LOCATION]" }
    

    Required HTTP request fields:

    • id: The project ID of the target Cloud Platform Console project in which you want to create an App Engine application.

    • location: This is the geographic region in which the App Engine application is located and runs, for example:

      • us-central
      • us-east1
      • europe-west

      For a complete list of supported locations, you can use the apps.locations.list method.

      Example: Authorize and execute this example request in the APIs Explorer to view a current list of supported locations.

    See Application resource for the complete list of field options.

    Example cURL command:

    curl -X POST -d "{ 'id': '[MY_PROJECT_ID]', 'location': '[MY_APP_LOCATION]' }" -H "Content-Type: application/json" -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps
    

    Where:

    • [MY_PROJECT_ID] is the ID of target project where you want to create your App Engine application.
    • [MY_APP_LOCATION] is the location where you want to create your App Engine application.
    • [MY_ACCESS_TOKEN] is the access token that you obtained to authorize your HTTP requests.

    Example response:

    {
      "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f",
      "metadata": {
        "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1",
        "method": "google.appengine.v1.Applications.CreateApplication",
        "insertTime": "2016-10-03T20:48:02.099Z",
        "user": "me@example.com",
        "target": "apps/[MY_PROJECT_ID]"
      }
    }
    
  3. Verify that your App Engine application was created:

    1. View the status of the actual creation operation:

      The HTTP POST request that you used in the previous step returned the operation name in the name field, which you use with the GET method of the apps.operations collection to check the status of the creation operation.

      For example, if the name field of the response is:

      "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f"
      

      Then you send the following HTTP GET request:

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f
      

      Example cURL command:

      curl -X GET -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f
      

      Where [MY_ACCESS_TOKEN] is your access token and [MY_PROJECT_ID] is the ID of target project.

      Example response:

      {
        "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f",
        "metadata": {
          "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1",
          "method": "google.appengine.v1.Applications.CreateApplication",
          "insertTime": "2016-10-03T20:48:02.099Z",
          "endTime": "2016-10-03T20:48:18.272Z",
          "user": "me@example.com",
          "target": "apps/[MY_PROJECT_ID]"
        },
        "done": true,
        "response": {
          "@type": "type.googleapis.com/google.appengine.v1.Application",
          "id": "[MY_PROJECT_ID]",
          "location": "[MY_APP_LOCATION]"
        }
      }
      
    2. Verify that the App Engine application was created in your project:

      To view details about the version, you use the GET method of the apps collection. You must specify the project that you deployed in the HTTP GET request, for example:

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]
      

      Example cURL command:

      curl -X GET -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/
      

      Where [MY_ACCESS_TOKEN] is your access token and [MY_PROJECT_ID] is the ID of target project.

      Example response:

      {
        "name": "apps/[MY_PROJECT_ID]",
        "id": "[MY_PROJECT_ID]",
        "authDomain": "gmail.com",
        "location": "us-central",
        "defaultHostname": "[MY_PROJECT_ID].appspot.com",
        "defaultBucket": "[MY_PROJECT_ID].appspot.com"
      }
      

What's next

Send feedback about...

App Engine Admin API