Как опубликовать API

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Опубликуйте API на портале, чтобы разработчики приложений могли их использовать. Инструкции приведены в следующих разделах.

Обзор публикации API

Публикация API на портале состоит из двух этапов:

  1. Выберите продукт API, который хотите опубликовать на портале.
  2. Создавайте справочную документацию по API на основе документа OpenAPI или схемы GraphQL, чтобы разработчики приложений могли изучать ваши API. Подробнее о снимках…

Что публикуется на портале?

Когда вы публикуете API, в портал автоматически вносятся следующие изменения:

  • Документация по API Интерфейс зависит от того, публикуете ли вы API с помощью документа OpenAPI или схемы GraphQL. Полезные ссылки:
  • На страницу API добавлена ссылка на документацию по API

    На странице API (входит в образец портала) приведен список всех API, опубликованных на вашем портале, в алфавитном порядке. Там же можно найти ссылки на справочную документацию по каждому API. При необходимости вы можете настроить следующие параметры:

    • Изображение, которое показывается на карточке каждого API
    • Категории, используемые для добавления тегов к API, чтобы разработчики могли находить связанные API на странице API.

    Страница API на портале с двумя категориями и изображениями

SmartDocs (OpenAPI)

Когда вы публикуете API с помощью документа OpenAPI, в ваш портал добавляется справочная документация SmartDocs API.

Разработчики могут ознакомиться со справочной документацией по API SmartDocs и использовать панель Попробовать этот API, чтобы отправить запрос к API и посмотреть результат. Попробовать API работает с незащищенными конечными точками или защищенными конечными точками с использованием базовой аутентификации, ключа API или аутентификации OAuth в зависимости от метода защиты, определенного в документе OpenAPI. Для OAuth поддерживаются следующие потоки: код авторизации, пароль и учетные данные клиента.

Страница справочной документации по API с выносками, в которых показано, как авторизовать вызов API, открепить панель "Попробовать API", скачать спецификацию и выполнить API.

Нажмите Полноэкранный режим, чтобы развернуть панель Попробовать этот API. На развернутой панели можно посмотреть вызов curl и примеры кода в разных форматах, например HTTP, Python, Node.js и других, как показано на рисунке ниже.

Развернутая панель "Попробовать этот API"

GraphQL Explorer

При публикации API с использованием схемы GraphQL в портал добавляется GraphQL Explorer. GraphQL Explorer – это интерактивная площадка для выполнения запросов к API. Обозреватель основан на GraphiQL – эталонной реализации IDE GraphQL, разработанной GraphQL Foundation.

Разработчики могут использовать GraphQL Explorer для изучения интерактивной документации на основе схемы, создания и выполнения запросов, просмотра результатов запросов и скачивания схемы. Чтобы защитить доступ к API, разработчики могут передавать заголовки авторизации в панели Заголовки запроса.

Подробнее о GraphQL можно узнать на сайте graphql.org.

GraphQL Explorer на портале

Что такое снимок?

Каждый документ OpenAPI или GraphQL служит источником достоверной информации на протяжении всего жизненного цикла API. Один и тот же документ используется на каждом этапе жизненного цикла API, от разработки до публикации и мониторинга. При изменении документа необходимо учитывать, как это повлияет на API на других этапах жизненного цикла, как описано в разделе Что произойдет, если я изменю документ?.

При публикации API вы делаете снимок документа OpenAPI или GraphQL, чтобы создать справочную документацию по API. Снимок представляет собой определенную версию документа. Если вы измените документ, то можете сделать ещё один снимок, чтобы в документации по API были отражены последние изменения.

URL обратного вызова

Если вашим приложениям требуется URL обратного вызова, например при использовании типа предоставления кода авторизации OAuth 2.0 (часто называемого трехсторонняя аутентификация OAuth), вы можете потребовать, чтобы разработчики указывали URL обратного вызова при регистрации своих приложений. URL обратного вызова обычно указывает на приложение, которое должно получить код авторизации от имени клиентского приложения. Дополнительную информацию можно найти в статье Как реализовать предоставление кода авторизации.

Вы можете настроить, нужно ли указывать URL обратного вызова при регистрации приложения, когда добавляете API на портал. Вы можете изменить этот параметр в любое время, как описано в разделе Как управлять URL обратного вызова для API.

При регистрации приложения разработчики должны указать URL обратного вызова для всех API, для которых он требуется, как описано в разделе Регистрация приложений.

Как настроить прокси-сервер API для поддержки функции "Попробовать этот API"

Прежде чем публиковать API с помощью документа OpenAPI, вам нужно настроить прокси API так, чтобы он поддерживал запросы на панели Попробовать API в справочной документации SmartDocs API. Для этого выполните следующие действия:

  • Как добавить поддержку CORS в прокси API, чтобы обеспечить выполнение междоменных запросов на стороне клиента

    CORS – это стандартный механизм, который позволяет вызовам JavaScript XMLHttpRequest (XHR), выполняемым на веб-странице, взаимодействовать с ресурсами из доменов, отличных от источника. CORS – это распространенное решение для правила ограничения источника, которое применяется во всех браузерах.

  • Обновите конфигурацию прокси-сервера API, если вы используете базовую аутентификацию или OAuth2

В таблице ниже приведены требования к конфигурации прокси-сервера API для поддержки панели Попробовать API в справочной документации по API SmartDocs в зависимости от типа доступа для аутентификации.

Доступ к аутентификации Требования к конфигурации правил
Нет или ключ API Добавьте поддержку CORS в прокси-сервер API. Для удобства используйте пример решения CORS, предоставленный на GitHub, или выполните действия, описанные в разделе Добавление поддержки CORS в прокси-сервер API.
Базовая аутентификация Выполните следующие действия:
  1. Добавьте поддержку CORS в прокси-сервер API. Для удобства используйте пример решения CORS, предоставленный на GitHub, или выполните действия, описанные в разделе Добавление поддержки CORS в прокси-сервер API.
  2. В правиле Add CORS AssignMessage убедитесь, что заголовок Access-Control-Allow-Headers содержит атрибут authorization. Пример:
    <Header name="Access-Control-Allow-Headers">
      origin, x-requested-with, accept, content-type, authorization
    </Header>
OAuth2
  1. Добавьте поддержку CORS в прокси-сервер API. Для удобства используйте пример решения CORS, предоставленный на GitHub, или выполните действия, описанные в разделе Добавление поддержки CORS в прокси-сервер API.
  2. В правиле Add CORS AssignMessage убедитесь, что заголовок Access-Control-Allow-Headers содержит атрибут authorization. Пример:
    <Header name="Access-Control-Allow-Headers">
      origin, x-requested-with, accept, content-type, authorization
    </Header>
  3. Исправьте несоответствие RFC в правилах OAuth2. Для удобства используйте пример решения OAuth2, предоставленный на GitHub, или выполните следующие действия:
    • Убедитесь, что элемент <GrantType> в правиле OAuth2 имеет значение request.formparam.grant_type (параметр формы). Дополнительную информацию можно найти в разделе <GrantType>.
    • Убедитесь, что для параметра token_type в правиле OAuth2 задано значение Bearer, а не значение по умолчанию BearerToken.

Как управлять API

Управление API описано в следующих разделах.

Обзор API

Чтобы посмотреть, какие API есть на вашем портале, используйте интерфейс или команду curl.

Интерфейс

Чтобы посмотреть каталог API:

  1. Выберите Опубликовать > Порталы и выберите нужный портал.
  2. На главной странице портала нажмите Каталог API. Также можно выбрать Каталог API в раскрывающемся меню портала на панели навигации вверху.

На вкладке API в каталоге API представлен список API, добавленных на ваш портал.

Вкладка &quot;API&quot;, на которой приводится информация об API, в том числе название, описание, видимость, категории, связанная спецификация и время изменения.

Как показано на предыдущем рисунке, на вкладке API можно:

curl

Чтобы посмотреть список API:

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs" \
    -H "Authorization: Bearer ACCESS_TOKEN"

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • ACCESS_TOKEN с токеном аутентификации, используемым для доступа к Apigee Edge API. Подробнее об аутентификации и токенах…

Инструкции по использованию разбивки на страницы в полезной нагрузке ответа приведены в разделе Примечания о разбиении на страницы.

Полезная нагрузка ответа:

{
  "status": "success",
  "message": "one page of apidocs returned",
  "data": [
    {
      "id": 622759,
      "siteId": "my-org-myportal",
      "title": "Test",
      "description": "",
      "published": false,
      "visibility": false,
      "apiId": "apiproducttest18",
      "apiProductName": "apiproduct_test18",
      "edgeAPIProductName": "apiproduct_test18",
      "specId": null,
      "specContent": null,
      "specTitle": null,
      "snapshotExists": false,
      "snapshotModified": null,
      "modified": 1724144471000,
      "anonAllowed": false,
      "imageUrl": null,
      "snapshotState": null,
      "requireCallbackUrl": false,
      "categoryIds": [],
      "specFormat": null,
      "specModified": null,
      "snapshotOutdated": false,
      "snapshotSourceMissing": false,
      "graphqlSchema": null,
      "graphqlEndpointUrl": null,
      "graphqlSchemaDisplayName": null,
      "grpcFileName": null,
      "grpcZipContent": null
    }
  ],
  "code": null,
  "request_id": "1452867334",
  "error_code": null,
  "next_page_token": ""
}

Где:

  • modified – время последнего изменения элемента каталога в миллисекундах с начала эпохи. Пример: 1698165480000.
  • id – идентификатор товара в каталоге. Пример: 399668.

Примечания к нумерации страниц:

  • Размер страницы. Используйте параметр pageSize, чтобы указать количество элементов списка, которые нужно возвращать на одной странице. Значение по умолчанию – 25, максимальное значение – 100. Если есть дополнительные страницы, в тег nextPageToken добавляется токен:

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs?pageSize=PAGE_SIZE" \
       -H "Authorization: Bearer ACCESS_TOKEN"
    

    Заменить:

    • PAGE_SIZE с количеством элементов списка, которые нужно вернуть на одной странице. Например, 10.

    Полезная нагрузка ответа:

    {
      "status": "success",
      "message": "one page of apidocs returned",
      "data": [
        {
          "id": 638007,
          "siteId": "tsnow-mint-liztest",
          "title": "Testing",
          "description": "",
          "published": false,
          "visibility": false,
          "apiId": "testcatalog",
          "apiProductName": "testcatalog",
          "edgeAPIProductName": "testcatalog",
          "specId": "Petstore",
          "specContent": null,
          "specTitle": null,
          "snapshotExists": true,
          "snapshotModified": 1726508367000,
          "modified": 1728582504000,
          "anonAllowed": false,
          "imageUrl": null,
          "snapshotState": "OK_SUBMITTED",
          "requireCallbackUrl": false,
          "categoryIds": [],
          "specFormat": "YAML",
          "specModified": null,
          "snapshotOutdated": false,
          "snapshotSourceMissing": false,
          "graphqlSchema": null,
          "graphqlEndpointUrl": null,
          "graphqlSchemaDisplayName": null,
          "grpcFileName": null,
          "grpcZipContent": null
        }
      ],
      "code": null,
      "request_id": "1068810934",
      "error_code": null,
      "next_page_token": ""
    }
    

  • Токен страницы. Используйте pageToken, чтобы получить последующие страницы, если их больше одной:

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN" \
          -H "Authorization: Bearer ACCESS_TOKEN"
    

    Заменить:

    • PAGE_SIZE с количеством элементов списка, которые нужно вернуть на одной странице. Например, 10.
    • PAGE_TOKEN со значением nextPageToken. Пример: 7zcqrin9l6xhi4nbrb9.

Как добавить API

Чтобы добавить API на портал, используйте интерфейс или команду curl:

Интерфейс

Чтобы добавить API на портал:

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите + Добавить.

    Откроется диалоговое окно Добавить продукт API в каталог.

  4. Выберите продукт API, который хотите добавить на портал.

  5. Нажмите Далее. Откроется страница Сведения об API.

  6. Настройте контент справочной документации по API и его видимость на портале:

    Поле Описание
    Опубликованные Выберите Опубликовано, чтобы опубликовать API на портале. Снимите флажок, если вы не готовы опубликовать API. Вы можете изменить этот параметр позже, как описано в статье Как опубликовать или отменить публикацию API на портале.
    Отображаемое название Изменить название API, которое показывается в каталоге. По умолчанию используется название продукта API. Вы можете изменить отображаемое название позже, как описано в разделе Как изменить отображаемое название и описание.
    Описание для показа Измените описание API, которое показывается в каталоге. По умолчанию используется описание продукта API. Вы можете изменить описание позже, как описано в разделе Как изменить название и описание.
    Требовать от разработчиков указывать URL обратного вызова Включите, если хотите, чтобы разработчики приложений указывали URL обратного вызова. Вы можете добавить или изменить URL обратного вызова позже, как описано в разделе Как управлять URL обратного вызова для API.
    Документация по API

    Чтобы использовать документ OpenAPI:

    1. Выберите Документ OpenAPI.
    2. Нажмите Выбрать документ.
    3. Выполните одно из следующих действий:
      • Откройте вкладку Мои спецификации и выберите спецификацию в магазине.
      • Нажмите на вкладку Загрузить файл и загрузите файл.
      • Нажмите на вкладку Импортировать из URL и импортируйте спецификацию из URL.
    4. Нажмите Выбрать.

    Как использовать схему GraphQL

    1. Выберите GraphQL Schema (Схема GraphQL).
    2. Нажмите Выбрать документ.
    3. Найдите и выберите схему GraphQL.
    4. Нажмите Выбрать.

    Вы также можете выбрать No documentation (Нет документации) и добавить ее позже, после того как API будет добавлен, как описано в разделе Управление снимком документа.

    Видимость API

    Если вы не зарегистрировались для бета-тестирования функции управления аудиториями, выберите один из следующих вариантов:

    • Анонимные пользователи, чтобы разрешить всем пользователям просматривать API.
    • Прошедшие регистрацию, чтобы разрешить доступ к API только зарегистрированным пользователям.

    Если вы зарегистрировались для участия в бета-тестировании функции управления аудиториями, выберите один из следующих вариантов:

    • Общедоступный, чтобы все пользователи могли просматривать API.
    • Аутентифицированные пользователи, чтобы разрешить доступ к API только зарегистрированным пользователям.
    • Выбранные аудитории, чтобы выбрать определенные аудитории, которым вы хотите предоставить доступ к API.

    Вы можете настроить видимость аудитории позже, как описано в статье Как управлять видимостью API на портале.

    Изображение для показа Чтобы добавить изображение на карточку API на странице API, нажмите Выбрать изображение. В диалоговом окне Выбрать изображение выберите существующее изображение, загрузите новое или укажите URL внешнего изображения и нажмите Выбрать. Посмотрите значок API и нажмите Выбрать. Вы можете добавить изображение позже, как описано в разделе Как управлять изображением для карточки API. Если вы укажете изображение с внешним URL, оно не будет загружено в ваши объекты. Кроме того, загрузка изображения в интегрированном портале будет зависеть от его доступности, которая может быть заблокирована или ограничена правилами безопасности контента.
    Категории

    Добавьте категории, к которым будет относиться API, чтобы разработчики приложений могли находить связанные API на странице API. Чтобы определить категорию:

    • Выберите категорию из раскрывающегося списка.
    • Чтобы добавить новую категорию, введите ее название и нажмите Ввод. Новая категория будет добавлена на страницу "Категории" и станет доступна при добавлении или изменении других API.

  7. Нажмите Сохранить.

curl

Чтобы добавить API на портал :

curl -X POST "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
       "title": "TITLE",
       "description": "DESCRIPTION",
       "anonAllowed": ANON_TRUE_OR_FALSE,
       "imageUrl": "IMAGE_URL",
       "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
       "categoryIds": [
         "CATEGORY_ID1",
         "CATEGORY_ID2"
       ],
       "published": PUBLISHED_TRUE_OR_FALSE,
        "apiProductName": "API_PRODUCT"
    }'

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • ACCESS_TOKEN с токеном аутентификации, используемым для доступа к Apigee Edge API. Подробнее об аутентификации и токенах…
  • TITLE с отображаемым названием. Пример: Hello World 2.
  • DESCRIPTION с описанием дисплея. Пример: Simple hello world example.
  • ANON_TRUE_OR_FALSE с true или false (по умолчанию), где: true означает, что API общедоступен и его можно просматривать анонимно; в противном случае его могут просматривать только зарегистрированные пользователи.
  • IMAGE_URL – URL полученного изображения, используемого для элемента каталога, или путь к графическим файлам, хранящимся на портале, например /files/book-tree.jpg. Если вы укажете URL внешнего изображения, оно не будет загружено в ваши объекты. Кроме того, загрузка изображения в интегрированном портале будет зависеть от его доступности, которая может быть заблокирована или ограничена правилами безопасности контента.
  • CALLBACK_TRUE_OR_FALSE с true или false (по умолчанию), где: true требует, чтобы пользователь портала вводил URL при управлении приложением.
  • CATEGORY_ID с идентификатором категории. Пример:bf6505eb-2a0f-47af-a00a-ded40ac72960. Если идентификаторов несколько, перечислите их через запятую. Получите идентификатор категории с помощью команды list API categories.
  • PUBLISHED_TRUE_OR_FALSE с true или false (по умолчанию), где: true – API общедоступен. После публикации вы можете разрешить доступ всем пользователям, прошедшим аутентификацию, или определенным пользователям.
  • API_PRODUCT с названием продукта API. Пример:Hello World 2.

Полезная нагрузка ответа:

{
  "status": "success",
  "message": "API created",
  "data": {
    "id": 662423,
    "siteId": "my-org-myportal",
    "title": "My Test Catalog 4",
    "description": "",
    "published": false,
    "visibility": false,
    "apiId": "uxb9wjua",
    "apiProductName": "uXB9wJUa",
    "edgeAPIProductName": "uXB9wJUa",
    "specId": null,
    "specContent": null,
    "specTitle": null,
    "snapshotExists": false,
    "snapshotModified": null,
    "modified": 1729635493000,
    "anonAllowed": false,
    "imageUrl": null,
    "snapshotState": null,
    "requireCallbackUrl": false,
    "categoryIds": [],
    "specFormat": null,
    "specModified": null,
    "snapshotOutdated": null,
    "snapshotSourceMissing": false,
    "graphqlSchema": null,
    "graphqlEndpointUrl": null,
    "graphqlSchemaDisplayName": null,
    "grpcFileName": null,
    "grpcZipContent": null
  },
  "code": null,
  "request_id": "893346193",
  "error_code": null
}

Где:

  • modified – время последнего изменения элемента каталога в миллисекундах с начала эпохи. Пример: 1698165480000.
  • id – идентификатор товара в каталоге. Пример: 399668.

Как изменить API

После того как вы добавите API, используйте интерфейс или вызов API, чтобы вносить изменения.

В этом разделе приведен подробный пример того, как изменить существующий API на портале.

Подробные сведения о настройках модификации приведены в следующих разделах.

Интерфейс

Чтобы изменить API:

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите на строку API, который хотите изменить.
  4. Нажмите Значок редактированияИзменить.
  5. В разделе Сведения об API внесите необходимые изменения. Описание вариантов приведено в разделе Как добавить API.
  6. Нажмите Сохранить.

curl

После того как вы добавите API, используйте вызов update, чтобы вносить изменения.

В этом примере показано, как изменить статус опубликованного API на портале с true на false. При необходимости вы можете изменить несколько настроек за один вызов API.

  1. Чтобы найти сгенерированный код id, который уникальным образом идентифицирует каждый API, получите список API на портале, как описано в разделе Как изучать API.
  2. Чтобы получить текущие значения для определенного API:

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
    -H "Authorization: Bearer ACCESS_TOKEN"
    

    Замените следующее:

    • ORG_NAME с названием организации. Пример: my-org.
    • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
    • API_DOC с созданным id документа. Пример:399668. Чтобы найти это значение, используйте команду list API docs.
    • ACCESS_TOKEN с токеном аутентификации, используемым для доступа к Apigee Edge API. Подробнее об аутентификации и токенах…

    Полезная нагрузка ответа:

    {
      "status": "success",
      "message": "apidoc returned",
      "data": {
        "id": 662423,
        "siteId": "my-org-myportal",
        "title": "My Test Catalog 4",
        "description": "",
        "published": false,
        "visibility": false,
        "apiId": "uxb9wjua",
        "apiProductName": "uXB9wJUa",
        "edgeAPIProductName": "uXB9wJUa",
        "specId": null,
        "specContent": null,
        "specTitle": null,
        "snapshotExists": false,
        "snapshotModified": null,
        "modified": 1729635493000,
        "anonAllowed": false,
        "imageUrl": null,
        "snapshotState": null,
        "requireCallbackUrl": false,
        "categoryIds": [],
        "specFormat": null,
        "specModified": null,
        "snapshotOutdated": false,
        "snapshotSourceMissing": false,
        "graphqlSchema": null,
        "graphqlEndpointUrl": null,
        "graphqlSchemaDisplayName": null,
        "grpcFileName": null,
        "grpcZipContent": null
      },
      "code": null,
      "request_id": "601210268",
      "error_code": null
    }
    

  1. Включите изменяемые значения, которые вы хотите сохранить, в вызов update и измените значения, которые нужно поменять. Если вы не укажете строку, будут использоваться настройки по умолчанию. В этом примере измените значение параметра published с false на true:

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
     -H "Authorization: Bearer ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
        "title": "TITLE",
        "anonAllowed": true,
        "published": true
     }'
    

    Замените следующее:

    • TITLE с отображаемым названием. Пример: Hello World 2.

    Полезная нагрузка ответа:

    {
      "status": "success",
      "message": "ApiDoc updated",
      "data": {
        "id": 662423,
        "siteId": "my-org-myportal",
        "title": "My Test Catalog 4",
        "description": "",
        "published": true,
        "visibility": true,
        "apiId": "uxb9wjua",
        "apiProductName": "uXB9wJUa",
        "edgeAPIProductName": "uXB9wJUa",
        "specId": null,
        "specContent": null,
        "specTitle": null,
        "snapshotExists": false,
        "snapshotModified": null,
        "modified": 1729989250000,
        "anonAllowed": true,
        "imageUrl": null,
        "snapshotState": null,
        "requireCallbackUrl": false,
        "categoryIds": [],
        "specFormat": null,
        "specModified": null,
        "snapshotOutdated": null,
        "snapshotSourceMissing": false,
        "graphqlSchema": null,
        "graphqlEndpointUrl": null,
        "graphqlSchemaDisplayName": null,
        "grpcFileName": null,
        "grpcZipContent": null
      },
      "code": null,
      "request_id": "738172002",
      "error_code": null
    }
    

Как управлять сводкой документа

После публикации API вы в любое время можете сделать новый снимок документа OpenAPI или GraphQL, чтобы обновить справочную документацию по API, опубликованную на вашем портале.

Чтобы управлять снимком документа:

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите на строку API, который хотите изменить.
  4. Проверьте статус снимка. Если он устарел, появится следующее сообщение:Значок и сообщение о том, что снимок устарел
  5. Нажмите Значок редактирования.
  6. Выполните одно из следующих действий:
    • Чтобы обновить устаревший снимок документа OpenAPI, нажмите Обновить снимок.
    • Чтобы изменить документ, на основе которого создается документация по API, в разделе "Документация по API" нажмите Выбрать документ и выберите новый документ.
  7. Нажмите Сохранить.

Как опубликовать API на портале или отменить его публикацию

Публикация – это процесс, в результате которого ваши API становятся доступны разработчикам приложений.

Чтобы опубликовать или отменить публикацию API на портале, используйте интерфейс или команду curl.

Интерфейс

Чтобы опубликовать API на портале или отменить его публикацию:

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите на строку API, который хотите изменить.
  4. Нажмите Изменить значок Изменить.
  5. В разделе Сведения об API установите или снимите флажок Опубликовано (в каталоге), чтобы опубликовать или отменить публикацию API на портале.
  6. Нажмите Сохранить.

curl

В вызове обновления укажите один из следующих параметров:

"published": true,    # API is published to your portal
"published": false,   # API is not published in your portal

Чтобы изменить API:

  1. Вернуть текущие значения.

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs" \
    -H "Authorization: Bearer ACCESS_TOKEN"
  2. Чтобы изменить API, используйте вызов update. Укажите изменяемые значения, которые вы хотите сохранить, и измените те, которые нужно поменять. Если вы не укажете изменяемый параметр, он будет перезаписан значением по умолчанию.

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/  ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
     -H "Authorization: Bearer ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
        "title": "TITLE",
        "description": "DESCRIPTION",
        "anonAllowed": ANON_TRUE_OR_FALSE,
        "imageUrl": IMAGE_URL,
        "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
        "categoryIds": [
          "CATEGORY_ID1",
         "CATEGORY_ID2"
        ],
        "published": PUBLISHED_TRUE_OR_FALSE
    }

Подробный пример с описанием шагов, переменных и возвращаемой полезной нагрузки приведен в статье Как управлять версией документа.

Как управлять видимостью API на портале

Вы можете управлять видимостью API на портале, разрешая доступ к нему:

Чтобы управлять видимостью API на портале, используйте интерфейс или команду curl:

Интерфейс

Чтобы управлять видимостью API на портале:

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите на строку API, который хотите изменить.
  4. Нажмите Изменить значок Изменить.
  5. Выберите настройки доступа. Если вы зарегистрировались для участия в бета-тестировании функции аудиторий, выберите один из следующих вариантов:

    • Общедоступно (видно всем), чтобы все пользователи могли просматривать страницу.
    • Аутентифицированные пользователи, чтобы разрешить просмотр страницы только зарегистрированным пользователям.
    • Выбранные аудитории, чтобы выбрать определенные аудитории, которым вы хотите разрешить просматривать страницу. Подробнее о том, как управлять аудиториями для портала…
    В противном случае выберите один из следующих вариантов:
    • Анонимные пользователи, чтобы разрешить всем пользователям просматривать страницу.
    • Зарегистрированные пользователи – страницу смогут просматривать только зарегистрированные пользователи.

  6. Нажмите Отправить.

curl

Если вы зарегистрировались для участия в бета-тестировании функции управления аудиториями, используйте интерфейс для управления аудиториями.

Если вы не включили функцию управления аудиториями, видимость регулируется с помощью anonAllowed.

Включите в вызов update один из следующих параметров:

  # When not enrolled in the beta release of the audience management feature:

  "anonAllowed": true,      # Anonymous users can see the API
  "anonAllowed": false,     # Only registered users can see the API

Чтобы изменить API:

  1. Вернуть текущие значения.

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN"
    
  2. Чтобы изменить API, используйте вызов update. Укажите изменяемые значения, которые нужно сохранить, и измените те, которые нужно поменять. Если вы не укажете изменяемый параметр, будет использовано значение по умолчанию.

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
            "title": "TITLE",
            "description": "DESCRIPTION",
            "anonAllowed": ANON_TRUE_OR_FALSE,
            "imageUrl": IMAGE_URL,
            "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
            "categoryIds": [
              "CATEGORY_ID1",
              "CATEGORY_ID2"
            ],
            "published": PUBLISHED_TRUE_OR_FALSE
         }'

Подробный пример с описанием шагов, переменных и возвращаемой полезной нагрузки приведен в статье Как изменить API.

Как управлять URL обратного вызова для API

Управление URL обратного вызова для API. Подробнее об URL обратного вызова…

Чтобы управлять URL обратного вызова для API, используйте интерфейс или команду curl:

Интерфейс

Чтобы управлять URL обратного вызова для API:

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите на строку API, который хотите изменить.
  4. Нажмите Изменить значок Изменить.
  5. В разделе Сведения об API установите или снимите флажок Требовать от разработчиков указывать URL обратного вызова.
  6. Нажмите Сохранить.

curl

Включите в вызов update один из следующих параметров:

  "requireCallbackUrl": true,    # Portal user is required to input a URL
  "requireCallbackUrl": false,   # Portal user is not required to input a URL

Чтобы изменить API:

  1. Вернуть текущие значения.

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN"
    
  2. Чтобы изменить API, используйте вызов update. Укажите изменяемые значения, которые нужно сохранить, и измените те, которые нужно поменять. Если вы не укажете изменяемый параметр, будет использовано значение по умолчанию.

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
            "title": "TITLE",
            "description": "DESCRIPTION",
            "anonAllowed": ANON_TRUE_OR_FALSE,
            "imageUrl": IMAGE_URL,
            "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
            "categoryIds": [
              "CATEGORY_ID1",
              "CATEGORY_ID2"
            ],
            "published": PUBLISHED_TRUE_OR_FALSE
         }'

Подробный пример с описанием шагов, переменных и возвращаемой полезной нагрузки приведен в статье Как изменить API.

Как управлять изображением на карточке API

Вы можете добавить или изменить изображение, которое показывается на странице API рядом с карточкой API.

Чтобы управлять изображением для карточки API, используйте интерфейс или команду curl:

Интерфейс

Как управлять изображением на карточке API

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите на строку API, который хотите изменить.
  4. Нажмите Изменить значок Изменить.
  5. В разделе API details (Сведения об API):

    • Нажмите Выбрать изображение, чтобы указать или загрузить изображение, если оно не выбрано.
    • Нажмите Изменить изображение, чтобы выбрать или загрузить другое изображение.
    • Нажмите на значок x на изображении, чтобы удалить его.

    При указании изображения выберите либо изображение с внешним URL, используемое для элемента каталога, либо путь к файлам изображений, хранящимся на портале, например /files/book-tree.jpg. Если вы укажете URL внешнего изображения, оно не будет загружено в ваши объекты. Кроме того, загрузка изображения в интегрированном портале будет зависеть от его доступности, которая может быть заблокирована или ограничена правилами безопасности контента.

  6. Нажмите Сохранить.

curl

В вызове update укажите следующие данные:

  # Omit line for no image file

  "imageUrl": "IMAGE_URL"    # URL of the external image or name of the image file

Чтобы изменить API:

  1. Вернуть текущие значения.

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN"
    
  2. Чтобы изменить API, используйте вызов update. Укажите изменяемые значения, которые нужно сохранить, и измените те, которые нужно поменять. Если вы не укажете изменяемый параметр, будет использовано значение по умолчанию.

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
            "title": "TITLE",
            "description": "DESCRIPTION",
            "anonAllowed": ANON_TRUE_OR_FALSE,
            "imageUrl": IMAGE_URL,
            "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
            "categoryIds": [
              "CATEGORY_ID1",
              "CATEGORY_ID2"
            ],
            "published": PUBLISHED_TRUE_OR_FALSE
         }'

Подробный пример с описанием шагов, переменных и возвращаемой полезной нагрузки приведен в статье Как изменить API.

Как добавить тег API с помощью категорий

Категории помогают разработчикам приложений находить связанные API. Также ознакомьтесь с информацией о том, как управлять категориями.

Добавить тег API с помощью категорий можно одним из следующих способов:

  • Управлять категориями, к которым относится API, можно при его редактировании.
  • Управлять API, связанными с категорией, при редактировании категории.

Чтобы добавить тег API с помощью категорий, используйте интерфейс или команду curl:

Интерфейс

Чтобы добавить теги категорий к API при его редактировании:

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите на строку API, который хотите изменить.
  4. Нажмите Изменить значок Изменить.
  5. Нажмите на поле Категории и выполните одно из следующих действий:
    • Выберите категорию из раскрывающегося списка.
    • Чтобы добавить новую категорию, введите ее название и нажмите Ввод. Новая категория будет добавлена на страницу "Категории" и станет доступна при добавлении или изменении других API.
  6. Повторите эти действия, чтобы добавить теги API в другие категории.
  7. Нажмите Сохранить.

curl

В вызове update укажите следующие данные:

  # Omit line for no categories

  "categoryIds": [
      "CATEGORY_ID1",      # A category ID number
      "CATEGORY_ID2"       # A category ID number
    ],

Чтобы получить идентификаторы категорий, используйте команду list categories.

Чтобы изменить API:

  1. Вернуть текущие значения.

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN"
    
  2. Чтобы изменить API, используйте вызов update. Укажите изменяемые значения, которые нужно сохранить, и измените те, которые нужно поменять. Если вы не укажете изменяемый параметр, будет использовано значение по умолчанию.

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
            "title": "TITLE",
            "description": "DESCRIPTION",
            "anonAllowed": ANON_TRUE_OR_FALSE,
            "imageUrl": IMAGE_URL,
            "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
            "categoryIds": [
              "CATEGORY_ID1",
              "CATEGORY_ID2"
            ],
            "published": PUBLISHED_TRUE_OR_FALSE
         }'

Подробный пример с описанием шагов, переменных и возвращаемой полезной нагрузки приведен в статье Как изменить API.

Как изменить название и описание

Чтобы изменить отображаемое название и описание, используйте интерфейс или команду curl:

Интерфейс

Чтобы изменить название и описание, выполните следующие действия:

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите на строку API, который хотите изменить.
  4. Нажмите Изменить значок Изменить.
  5. При необходимости измените поля Отображаемое название и Отображаемое описание.
  6. Нажмите Сохранить.

curl

В вызове update укажите следующие данные:

  "title": "TITLE",    # Display title
  "description": "DESCRIPTION",  # Display description

Чтобы изменить API:

  1. Вернуть текущие значения.

    curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN"
    
  2. Чтобы изменить API, используйте вызов update. Укажите изменяемые значения, которые нужно сохранить, и измените те, которые нужно поменять. Если вы не укажете изменяемый параметр, будет использовано значение по умолчанию.

    curl -X PUT "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
         -H "Authorization: Bearer ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
            "title": "TITLE",
            "description": "DESCRIPTION",
            "anonAllowed": ANON_TRUE_OR_FALSE,
            "imageUrl": IMAGE_URL,
            "requireCallbackUrl": CALLBACK_TRUE_OR_FALSE,
            "categoryIds": [
              "CATEGORY_ID1",
              "CATEGORY_ID2"
            ],
            "published": PUBLISHED_TRUE_OR_FALSE
         }'

Подробный пример с описанием шагов, переменных и возвращаемой полезной нагрузки приведен в статье Как изменить API.

Как удалить API из портала

Чтобы удалить API с портала, используйте интерфейс или команду curl:

Интерфейс

Чтобы удалить API из портала:

  1. Каталог API.
  2. Выберите API, если этот вариант ещё не выбран.
  3. Наведите курсор на API в списке, чтобы открыть меню действий.
  4. Нажмите на значок с тремя точками Удалить значок Удалить.

curl

Чтобы удалить API с портала:

curl -X DELETE "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC" \
    -H "Authorization: Bearer ACCESS_TOKEN"

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • API_DOC с созданным id документа. Пример:399668. Чтобы найти это значение, используйте команду list API docs.
  • ACCESS_TOKEN с токеном аутентификации, используемым для доступа к Apigee Edge API. Подробнее об аутентификации и токенах…

Полезная нагрузка ответа:

{
  "status": "success",
  "message": "Apidoc deleted",
  "data": {
  },
  "code": null,
  "request_id": "1790036484",
  "error_code": null
}

Как управлять документацией по API

В разделах ниже описано, как обновить, скачать или удалить документацию по API.

Обновление документации по API

Чтобы загрузить другую версию документации по API:

Интерфейс

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите на строку API, который хотите изменить.
  4. Проверьте статус снимка. Если он устарел, появится следующее сообщение:Значок и сообщение о том, что снимок устарел
  5. Нажмите Изменить.
  6. Выполните одно из следующих действий:
    • Чтобы обновить устаревший снимок документа OpenAPI, нажмите Обновить снимок.
    • Чтобы изменить документ, на основе которого создается документация по API, в разделе API documentation (Документация по API) нажмите Select Document (Выбрать документ) и выберите новый документ.
  7. На панели Документация по API выберите один из следующих вариантов:
    • Документ OpenAPI
    • Схема GraphQL
  8. Нажмите Выбрать документ и выберите последнюю версию документа.
  9. Для GraphQL укажите URL конечной точки.
  10. Нажмите Сохранить.

Справочная документация по API создается на основе документа и добавляется на страницу "Справочник по API". Статус снимка обновляется до текущего:

Значок и сообщение указывают, что снимок актуален

curl

Чтобы обновить содержимое документации OpenAPI или GraphQL, выполните следующие действия:

OpenAPI

curl -X PATCH "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC/documentation" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"oasDocumentation": {
           "spec":{ "displayName":"DISPLAY_NAME",
                    "contents":"CONTENTS"}
            }
        }'

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • API_DOC с созданным id документа. Пример:399668. Чтобы найти это значение, используйте команду list API docs.
  • DISPLAY_NAME с отображаемым названием документации по API. Пример: Hello World 2.
  • CONTENTS со строкой в кодировке Base64, содержащей документацию по API. В большинстве сред разработки есть утилита для преобразования в формат base64, а также существует множество онлайн-инструментов для конвертации.

Полезная нагрузка ответа:

{
 "status":"success",
 "message":"Api documentation updated",
 "requestId":"645138278"
 "data": {
   "oasDocumentation": {
     "spec": {
        "displayName": "Hello World 2"
      },
     "Format": "YAML"
   }
 }
}

GraphQL

curl -X PATCH "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC/documentation" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"graphqlDocumentation": {
         "schema":{"displayName":"DISPLAY_NAME",
         "contents":"CONTENTS"},
         "endpointUri": "ENDPOINT_URI"
          }
      }'

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • API_DOC с созданным id документа. Пример:399668. Чтобы найти это значение, используйте команду list API docs.
  • DISPLAY_NAME с отображаемым названием документации по API. Пример: Hello World 2.
  • ENDPOINT_URI с доменным именем URI конечной точки. Пример:https://demo.google.com/graphql.
  • CONTENTS со строкой в кодировке Base64, содержащей документацию по API. В большинстве сред разработки есть утилита для преобразования в формат base64, а также существует множество онлайн-инструментов для конвертации.

Полезная нагрузка ответа:

{
"status": "success",
"message": "ApiDocDocumentation updated",
"data": {
  "oasDocumentation": null,
  "graphqlDocumentation": {
    "schema": {
      "displayName": "schema.docs.graphql",
      "contents": ""
    },
    "endpointUri": "https://demo.google.com/graphql"
  }
},
"code": null,
"request_id": "640336173",
"error_code": null
}

Справочная документация по API создается на основе документа и добавляется на страницу API на действующем портале.

Как скачать документацию по API

Чтобы скачать документацию по API:

Интерфейс

curl

Чтобы скачать документацию по API с помощью команды get documentation:

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC/documentation" \
    -H "Authorization: Bearer ACCESS_TOKEN"

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • API_DOC с созданным id документа. Пример:399668. Чтобы найти это значение, используйте команду list API docs.

    Полезная нагрузка ответа:

{
  "status": "success",
  "message": "ApiDocDocumentation returned",
  "data": {
    "oasDocumentation": {
      "spec": {
        "displayName": "mock",
        "contents": "b3BlbmFwaTogMy4wLjAKaW5mbzoKICBkZXNjcmlw ..."
      },
      "format": "YAML"
    },
    "graphqlDocumentation": null
  },
  "code": null,
  "request_id": "269996898",
  "error_code": null
}

Где:

contents – строка в кодировке Base64, содержащая документацию по API.

Как удалить документацию по API

Чтобы удалить документацию по API:

Интерфейс

  1. Каталог API.
  2. Нажмите на вкладку API, если она ещё не выбрана.
  3. Нажмите на строку API, который хотите изменить.
  4. Нажмите Изменить.
  5. На панели API documentation (Документация по API) выберите No documentation (Нет документации).
  6. Нажмите Сохранить.

curl

Чтобы удалить существующий контент, используйте update API:

curl -X PATCH "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apidocs/API_DOC/documentation" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{}'

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • API_DOC с созданным id документа. Пример:399668. Чтобы найти это значение, используйте команду list API docs.

Полезная нагрузка ответа:

{
  "status": "success",
  "message": "ApiDocDocumentation updated",
  "data": {
    "oasDocumentation": null,
    "graphqlDocumentation": null
  },
  "code": null,
  "request_id": "304329676",
  "error_code": null
}

Управление категориями, используемыми для поиска связанных API

Добавьте теги API с помощью категорий, чтобы разработчики приложений могли находить связанные API на странице API на действующем портале. Добавлять категории и управлять ими можно так, как описано в следующих разделах.

Поиск по категориям

Чтобы посмотреть, какие API есть на вашем портале, используйте интерфейс или команду curl.

Интерфейс

Чтобы открыть страницу "Категории":

  1. Выберите Опубликовать > Порталы и выберите нужный портал.
  2. На главной странице портала нажмите Каталог API.

    Также можно выбрать Каталог API в раскрывающемся меню портала на панели навигации вверху.

  3. Нажмите на вкладку Категории.

На вкладке Категории в каталоге API представлен список категорий, определенных для вашего портала.

Вкладка &quot;Категории&quot;, на которой указаны названия категорий, а также названия и общее количество назначенных API.

Как показано на рисунке выше, на странице API можно:

curl

Чтобы посмотреть список категорий:

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apicategories" \
    -H "Authorization: Bearer ACCESS_TOKEN"

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • ACCESS_TOKEN с токеном аутентификации, используемым для доступа к Apigee Edge API. Подробнее об аутентификации и токенах…

Полезная нагрузка ответа:

{
  "status": "success",
  "message": "all ApiCategory items returned",
  "data": [
    {
      "id": "e0518597-ece2-4d7d-ba7c-d1793df0f8db",
      "siteId": "my-org-myportal",
      "name": "My Category"
    },
    {
      "id": "61c1014c-89c9-40e6-be3c-69cca3505620",
      "siteId": "my-org-myportal",
      "name": "test2"
    }
  ],
  "code": null,
  "request_id": "1263510680",
  "error_code": null
}

Где:

  • id – идентификатор элемента категории. Пример: 61c1014c-89c9-40e6-be3c-69cca3505620.

Как добавить категорию

Добавить категорию можно одним из следующих способов:

Новая категория будет добавлена на страницу Категории и станет доступна при добавлении или изменении других API.

Чтобы добавить категорию, используйте интерфейс или команду curl:

Интерфейс

Чтобы добавить категорию вручную:

  1. Как перейти на страницу "Категории"
  2. Нажмите + Добавить.
  3. Введите название новой категории.
  4. При необходимости выберите один или несколько API, которые нужно добавить в категорию.
  5. Нажмите Создать.

curl

Чтобы добавить категорию:

curl -X POST "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apicategories" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"name": "CATEGORY_NAME" }'

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • ACCESS_TOKEN с токеном аутентификации, используемым для доступа к Apigee Edge API. Подробнее об аутентификации и токенах…
  • CATEGORY_NAME с названием категории. Пример: demo-backend.

Полезная нагрузка ответа:

{
  "status": "success",
  "message": "API category created",
  "data": {
    "id": "61de810e-b48b-4cc1-8f22-959038aadcce",
    "siteId": "my-org-myportal",
    "name": "demo-backend"
  },
  "code": null,
  "request_id": "363146927",
  "error_code": null
}

Как изменить категорию

Чтобы изменить категорию, используйте интерфейс или команду curl:

Интерфейс

Чтобы изменить категорию:

  1. Как перейти на страницу "Категории"
  2. Нажмите Изменить.
  3. Изменить название категории.
  4. Добавлять и удалять теги API.
  5. Нажмите Сохранить.

curl

Чтобы изменить категорию:

curl -X PATCH "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apicategories/CATEGORY_ID"  \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"name": "CATEGORY_NAME" }'

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • CATEGORY_ID с идентификатором категории. Пример:bf6505eb-2a0f-47af-a00a-ded40ac72960. Если идентификаторов несколько, перечислите их через запятую. Получите идентификатор категории с помощью команды list API categories.
  • ACCESS_TOKEN с токеном аутентификации, используемым для доступа к Apigee Edge API. Подробнее об аутентификации и токенах…
  • CATEGORY_NAME с названием категории. Пример: demo-backend.

Полезная нагрузка ответа:

{
  "status": "success",
  "message": "ApiCategory updated",
  "data": {
    "id": "61de810e-b48b-4cc1-8f22-959038aadcce",
    "siteId": "my-org-myportal",
    "name": "demo-backend-test"
  },
  "code": null,
  "request_id": "1976875617",
  "error_code": null
}

Как удалить полку

При удалении категории также удаляются все теги API, связанные с ней.

Чтобы удалить категорию, используйте интерфейс или команду curl:

Интерфейс

Чтобы удалить категорию:

  1. Как перейти на страницу "Категории"
  2. Наведите курсор на категорию, которую хотите изменить, чтобы открыть меню действий.
  3. Нажмите на значок с тремя точками Удалить.
  4. Нажмите Удалить, чтобы подтвердить действие.

curl

Чтобы удалить категорию:

curl -X DELETE "https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/sites/SITE_ID/apicategories/CATEGORY_ID" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -H "Content-Type: application/json"

Замените следующее:

  • ORG_NAME с названием организации. Пример: my-org.
  • SITE_ID с названием портала в формате ORG_NAME-PORTAL_NAME, где ORG_NAME – название организации, а PORTAL_NAME – название портала, преобразованное в нижний регистр и без пробелов и дефисов. например my-org-myportal.
  • CATEGORY_ID с идентификатором категории. Пример:bf6505eb-2a0f-47af-a00a-ded40ac72960. Получите идентификатор категории с помощью команды list API categories.
  • ACCESS_TOKEN с токеном аутентификации, используемым для доступа к Apigee Edge API. Подробнее об аутентификации и токенах…

Полезная нагрузка ответа:

{
  "status": "success",
  "message": "ApiCategory deleted",
  "data": {
  },
  "code": null,
  "request_id": "2032819627",
  "error_code": null
}

Как устранять неполадки с опубликованными API

В следующих разделах приведена информация, которая поможет вам устранить определенные ошибки, связанные с опубликованными API.

Ошибка "Не удалось получить ошибку" при использовании функции "Попробовать этот API"

Если при использовании Try this API возвращается ошибка TypeError: Failed to fetch, проверьте следующие возможные причины и решения:

  • Если ошибка связана со смешанным контентом, она может быть вызвана известной проблемой swagger-ui. Один из возможных способов решения проблемы – убедиться, что в определении schemes в документе OpenAPI протокол HTTPS указан раньше HTTP. Пример:

    schemes:
       - https
       - http
    
  • Если возникают ошибки, связанные с ограничениями совместного использования ресурсов между разными источниками (CORS), убедитесь, что CORS поддерживается прокси API. CORS – это стандартный механизм, который позволяет выполнять клиентские междоменные запросы. Подробнее о том, как настроить прокси-сервер API для поддержки функции "Попробовать этот API"…

Ошибка: заголовок Access-Control-Allow-Origin содержит несколько значений "*, *", но допускается только одно

При использовании Try this API может появиться следующее сообщение об ошибке, если заголовок Access-Control-Allow-Origin уже существует:

The Access-Control-Allow-Origin header contains multiple values '*, *', but only one is allowed.

Чтобы исправить эту ошибку, измените правило AssignMessage, чтобы использовать <Set> для настройки заголовков CORS вместо <Add>, как показано в приведенном ниже фрагменте. Подробнее об ошибке CORS : заголовок содержит несколько значений "*, *", но разрешено только одно…

<AssignMessage async="false" continueOnError="false" enabled="true" name="add-cors">
    <DisplayName>Add CORS</DisplayName>
    <FaultRules/>
    <Properties/>
    <Set>
        <Headers>
            <Header name="Access-Control-Allow-Origin">{request.header.origin}</Header>
            <Header name="Access-Control-Allow-Headers">origin, x-requested-with, accept, content-type, authorization</Header>
            <Header name="Access-Control-Max-Age">3628800</Header>
            <Header name="Access-Control-Allow-Methods">GET, PUT, POST, DELETE</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="response"/>
</AssignMessage>

Ошибка: недопустимое поле заголовка запроса

Если при использовании Try this API вы получаете ошибку Request header field not allowed, похожую на приведенную ниже, возможно, вам нужно обновить заголовки, поддерживаемые в правиле CORS. Пример:

Access to XMLHttpRequest ... has been blocked by CORS policy: Request header field
content-type is not allowed by Access-Control-Allow-Headers in preflight response

В этом примере вам нужно добавить заголовок content-type в раздел Access-Control-Allow-Headers в правиле CORS AssignMessage, как описано в статье Как прикрепить правило Add CORS к новому прокси-серверу API.

Ошибка: при вызове прокси-сервера API с помощью OAuth2 отказано в доступе

Правило OAuthV2 Apigee возвращает ответ с токеном, который содержит некоторые свойства, не соответствующие RFC. Например, правило вернет токен со значением BearerToken вместо ожидаемого значения Bearer, соответствующего RFC. Недействительный ответ token_type может привести к ошибке Access denied при использовании Try this API.

Чтобы устранить эту проблему, вы можете создать правило JavaScript или AssignMessage, которое будет преобразовывать выходные данные правила в совместимый формат. Подробнее о поведении, не соответствующем RFC…