• Stars
    star
    146
  • Rank 252,769 (Top 5 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created about 4 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Registry API allows teams to track and manage machine-readable descriptions of APIs.

Go Actions Status Go Report Card codecov In Solidarity

Registry API Core Implementation

This repository contains the core implementation of the Registry API. Please see the wiki for more information.

The Registry API

The Registry API allows teams to upload and share machine-readable descriptions of APIs that are in use and in development. These descriptions include API specifications in standard formats like OpenAPI, the Google API Discovery Service Format, and the Protocol Buffers Language. These API specifications can be used by tools like linters, browsers, documentation generators, test runners, proxies, and API client and server generators. The Registry API itself can be seen as a machine-readable enterprise API catalog designed to back online directories, portals, and workflow managers.

The Registry API is formally described by the Protocol Buffer source files in google/cloud/apigeeregistry/v1. It closely follows the Google API Design Guidelines at aip.dev and presents a developer experience consistent with production Google APIs. Please tell us about your experience if you use it.

The Registry Tool

The Registry Tool (registry) is a command-line tool that simplifies setup and operation of a registry. See cmd/registry and the Registry wiki for more information. The registry tool can be built from sources here or installed with this script on Linux or Darwin:

curl -L https://raw.githubusercontent.com/apigee/registry/main/downloadLatest.sh | sh -

This Implementation

This implementation is a gRPC service written in Go. It can be run locally or deployed in a container using services including Google Cloud Run. It stores data using a configurable relational interface layer that currently supports PostgreSQL and SQLite.

The Registry API service is annotated to support gRPC HTTP/JSON transcoding, which allows it to be automatically published as a JSON REST API using a proxy. Proxies also enable gRPC web, which allows gRPC calls to be directly made from browser-based applications. A configuration for the Envoy proxy is included (deployments/envoy/envoy.yaml).

The Registry API protos also include configuration to support generated API clients (GAPICS), which allow idiomatic API usage from a variety of languages. A Go GAPIC library is generated as part of the build process using gapic-generator-go.

A command-line interface is in cmd/registry and provides a mixture of hand-written high-level features and automatically generated subcommands that call individual RPC methods of the Registry API.

The entry point for the Registry API server itself is cmd/registry-server. For more on running the server, see cmd/registry-server/README.md.

Build Instructions

The following tools are needed to build this software:

  • Go 1.20 (recommended) or later.
  • protoc, the Protocol Buffer Compiler (see tools/PROTOC-VERSION.sh for the currently-used version).
  • make, git, and other elements of common unix build environments.

This repository contains a Makefile that downloads all other dependencies and builds this software (make all). With dependencies downloaded, subsequent builds can be made with go install ./... or make lite.

Quickstart

The easiest way to try the Registry API is to run registry-server locally. By default, the server is configured to use a SQLite database.

registry-server

Next, in a separate terminal, configure your environment to point to this server with the following:

. auth/LOCAL.sh

Now you can check your server and configuration with the registry tool:

registry rpc admin get-status

Next run a suite of tests with make test and see a corresponding walkthrough of API features in tests/demo/walkthrough.sh. For more demonstrations, see the demos directory.

Tests

This repository includes tests that verify registry-server. These server tests focus on correctness at the API level and compliance with the API design guidelines described at aip.dev. Server tests are included in runs of make test and go test ./..., and the server tests can be run by themselves with go test ./server/registry. By default, server tests verify the local code in ./server/registry, but to allow API conformance testing, the tests can be run to verify remote servers using the following options:

  • With the -remote flag, tests are run against a remote server according to the configuration used by the registry tool. This runs the entire suite of tests. WARNING: These tests are destructive and will overwrite everything in the remote server.
  • With the -hosted PROJECT_ID flag, tests are run against a remote server in a hosted environment within a single project that is expected to already exist. The server is identified and authenticated with the configuration used by the registry tool. Only the methods of the Registry service are tested (Admin service methods are excluded). WARNING: These tests are destructive and will overwrite everything in the specified project.

A small set of performance benchmarks is in tests/benchmark. These tests run against remote servers specified by the registry tool configuration and test a single project that is expected to already exist. WARNING: These tests are destructive and will overwrite everything in the specified project. Benchmarks can be run with the following invocation:

go test ./tests/benchmark --bench=. --project_id=$PROJECTID --benchtime=${ITERATIONS}x --timeout=0

All of the test configurations described above are verified in this repository's CI tests.

License

This software is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Disclaimer

This is not an official Google product. Issues filed on GitHub are not subject to service level agreements (SLAs) and responses should be assumed to be on an ad-hoc volunteer basis.

Contributing

Contributions are welcome! Please see CONTRIBUTING for notes on how to contribute to this project.

More Repositories

1

api-platform-samples

Working samples for the Apigee API Platform
JavaScript
498
star
2

trireme

Embed Node.js inside a Java Virtual Machine
JavaScript
479
star
3

apib

A simple, fast HTTP and API benchmarking tool
C++
294
star
4

apijam

GitHub repo for API Jam Workshop
HTML
278
star
5

devrel

Common solutions and tools developed for Apigee
Shell
187
star
6

openbank

An Open Banking Reference Implementation with Apigee
JavaScript
130
star
7

henchman

Orchestration and Automation tool
Python
109
star
8

apigeelint

Static code analysis for Apigee proxy bundles to encourage API developers to use best practices and avoid anti-patterns.
JavaScript
93
star
9

apigeetool-node

"apigeetool" implementation in Node.js for managing Apigee Edge apps and proxies
JavaScript
90
star
10

apigee-deploy-maven-plugin

Java
80
star
11

apigee-management-api-postman

Official repo of Apigee Management API Postman collection
68
star
12

apigee-config-maven-plugin

apigee-config-maven-plugin
Java
55
star
13

terraform-modules

Terraform modules and ready to use end-to-end examples for Apigee.
HCL
54
star
14

apigeecli

This is a tool to interact with Apigee APIs. The tool lets you manage (create, del, get, list) environments, proxies, etc.
Go
54
star
15

istio-mixer-adapter

Apigee's Istio Mixer Adapter
Go
52
star
16

usergrid-sample-html5-messagee

JavaScript
48
star
17

consumer-data-standards-au

Consumer Data Standards Australia - Open Banking Reference Implementation
JavaScript
37
star
18

microgateway-core

Microgateway server core, executes main port forwarding logic when fed config and plugins
JavaScript
36
star
19

graphql-authz

JavaScript
32
star
20

apigee-ios-sdk

The iOS SDK for everything Apigee.
Objective-C
32
star
21

apigee-edge-drupal

The Apigee Edge module enables you to integrate a Drupal 9 or 8 site with Apigee.
PHP
32
star
22

usergrid-ios-sdk

Objective-C
30
star
23

microgateway-plugins

Plugins for microgateway, oauth, analytics, spike arrest, etc...
JavaScript
30
star
24

iloveapis2015-jwt-jwe-jws

Java
30
star
25

apigee-client-php

Client library to make API calls to Apigee Edge Management API
PHP
27
star
26

apigee-remote-service-envoy

Apigee Remote Service adapter for Envoy
Go
27
star
27

apigee-devportal-kickstart-drupal

A fast demo and starting point for Apigee Developer Portals for Drupal
CSS
26
star
28

usergrid-sample-ios-messagee

Objective-C
24
star
29

wsdl2apigee

Generates Apigee Proxy bundles from WSDL
Java
23
star
30

node-samples

Sample apps for the Node JS beta
JavaScript
21
star
31

IgniteEngine-iOS

A platform for rapidly building native mobile applications using declarative JSON.
Objective-C
21
star
32

ansible-opdk-accelerator

This project is an Ansible playbook repository that will accelerate the installation, configuration and maintenance of Apigee Edge.
HCL
21
star
33

usergrid-sample-android-messagee

Java
20
star
34

apigee-remote-service-cli

Apigee Remote Service CLI
Go
20
star
35

opencommerce

opencommerce
PHP
20
star
36

grass

Apigee Edge Identity Solution
JavaScript
20
star
37

edge-gcp

This project allows you to install apigee in Google Cloud Platform using GCP's deployment manager
HTML
19
star
38

apigee-okta

JavaScript
19
star
39

maven-jenkins-ci-demo

JavaScript
18
star
40

docker-apigee-drupal-kickstart

Apigee Drupal Kickstarter in a Docker container
Shell
18
star
41

apigee-partner-se-bootcamp

Apigee Partner SE Bootcamp
JavaScript
18
star
42

openbanking-br

Reference implementation of Open Banking for Brazil
JavaScript
18
star
43

usergrid-android-sdk

Java
17
star
44

ahr

Shell
17
star
45

apigee-api-catalog-drupal

Manage your API catalog within Drupal's content management approach
PHP
17
star
46

rowboat

Rowboat is like Trireme
JavaScript
15
star
47

api-platform-tools

Tools for the Apigee API Platform
Python
15
star
48

edge-php-sdk

SDK for the Apigee Management API
PHP
15
star
49

flame

PHP
14
star
50

cloud-foundry-apigee

Apigee Service Broker for Cloud Foundry
JavaScript
14
star
51

apigee-m10n-drupal

Add monetization features to a Drupal developer portal
PHP
13
star
52

Sweetlime

Sweetlime
Python
13
star
53

ansible-install

Python
12
star
54

apigee-android-sdk

Consolidated Apigee Android SDK with Usergrid and APM.
Java
12
star
55

apigee-smartdocs-maven-plugin

Java
11
star
56

devportal-kickstart-project-composer

Composer project template for the Apigee Developer Portal Drupal distribution
11
star
57

microgateway-edgeauth

JavaScript
11
star
58

edge-launchpad

A deployment tool for apigee solutions. Helps orchestrating the deployement of any solution comprising of apps, products, developer, proxy, baas data etc
JavaScript
11
star
59

iloveapis2015-hmac-httpsignature

Java
11
star
60

apigee-templater

TypeScript
10
star
61

proxy-dependency-maven-plugin

Java
10
star
62

drupal7-drops

For integration into Pantheon hosting
PHP
10
star
63

microsoft

Assets related to Apigee Products in Microsoft ecosystem
Shell
9
star
64

openapi2apigee

JavaScript
9
star
65

apigee-proxy-coverage

apigee-proxy-coverage
Java
9
star
66

trireme-jdbc

JavaScript
9
star
67

apigee-remote-service-golib

A Go language library for Apigee Remote Service functions
Go
9
star
68

pivotal-cf-apigee

This repository has moved to https://github.com/apigee/cloud-foundry-apigee
JavaScript
8
star
69

smartdocs-templates

JavaScript
8
star
70

ApigeeEdge-Node-SDK

ApigeeEdge-Node-SDK
JavaScript
8
star
71

ansible

7
star
72

apigee-hybrid-install

Shell
7
star
73

microgateway-config

config repo for edge microgateway
JavaScript
7
star
74

ansible-apigee-hybrid-accelerator

Accelerate your Apigee Hybrid management with Ansible & Helm
Python
7
star
75

apigee-access

The "apigee-extensions" module for Node.js, which lets Node.js apps access Apigee-specific information
JavaScript
6
star
76

a127-lambda-petstore-sample

Demo of using AWS Lambda with Apigee-127 with credential storage in the Apigee Vault
JavaScript
6
star
77

appservices-phonegap-android-push-example

Examples for sending Push Notifications with AppServices using PhoneGap for Android
JavaScript
6
star
78

ui-framework

Web UI framework, Apigee style: a set of common styles and (eventually) widgets for web apps and static pages.
CSS
6
star
79

lembos

Lembos a Java-based library that provides an ecosystem allowing you to write your MapReduce jobs using Node.js and have them run natively within Hadoop as if written using Java.
Java
6
star
80

yaml2

YAML to JavaScript and annotated AST
JavaScript
5
star
81

usergrid-java-sdk

SDK for usergrid for Java clients
Java
5
star
82

devportal-kickstart-drupal-ansible-installer

Ansible playbook for installing Apigee Kickstart developer portal for Drupal.
Shell
5
star
83

insights-samples

Example code and applications illustrating Apigee Insights, a platform for analyzing big data.
Perl
5
star
84

apigee-deploy-now

Deploy Now button for Apigee Edge API Proxy samples
HTML
5
star
85

appservices-rest-template

Example curl calls sequence showing you how to work with the App Services RESTful API!
Shell
5
star
86

registry-viewer

The Registry Viewer is a graphical interface to the Registry API.
Dart
5
star
87

appservices-phonegap-push-plugin

Examples for sending Push Notifications with AppServices using PhoneGap
Objective-C
4
star
88

appservices-android-template

A simple blank template app with everything you need to get started with App Services in Android!
Java
4
star
89

Virtual-DevJam

Repository for hosting Virtual/Remote DevJam Labs.
4
star
90

apigee-go-gen

Go
4
star
91

3mv4d

Explain a specific capability in less than 3 minutes where the developer does not need to have context of any other setup/policy.
XSLT
4
star
92

apigee-registry-maven-plugin

Java
3
star
93

external-callout

Java
3
star
94

conversational-ai-reference-implementations

3
star
95

apigee-mock-client-php

A mock client library to replace calls to Apigee Edge with mock calls for testing.
PHP
3
star
96

appservices-ios-template

A simple blank template app with everything you need to get started with App Services in iOS / iPhone / iPad!
Objective-C
3
star
97

appservices-html5-template

A simple blank template app with everything you need to get started with App Services in HTML5!
JavaScript
3
star
98

registry-experimental

Experimental code associated with the Registry API.
JavaScript
3
star
99

analytics-pack

3
star
100

apigee-phonegap-push-plugin

The Apigee powered Push Notification plugin for PhoneGap
JavaScript
3
star