vets-api

API powering VA.gov

Github星跟蹤圖

Vets API

Build Status
Yard Docs
Maintainability
Test Coverage
License: CC0-1.0

This project provides common APIs for applications that live on VA.gov (formerly vets.gov APIs).

For frontend, see vets-website and vets-content repos.

Base setup

Developers who work with vets-api daily tend to prefer the native setup because they don't have to deal with the abstraction of docker-compose while those who would to spend less time on getting started prefer the docker setup. Docker is also useful when it's necessary to have a setup as close to production as possible.

  1. Setup key & cert for localhost authentication to ID.me:

    • Create a folder in your vets-api directory: mkdir config/certs
    • Create an empty key and cert:
    touch config/certs/vetsgov-localhost.crt
    touch config/certs/vetsgov-localhost.key
    
  2. Disable signed authentication requests:

    # settings.local.yml
    saml:
      authn_requests_signed: false
    
  3. If have access to the va.gov-team-sensitive repo install the sidekiq enterprise license

Sidekiq Enterprise is used for worker rate limiting and additional reliability in production and requires a license be configured on your development machine. If you do not have a license configured, the open source version of Sidekiq will be installed instead. This is not an issue unless you are specifically developing features that need Sidekiq Enterprise.

DO NOT commit local Gemfile modifications that remove the sidekiq-ent and sidekiq-pro gems.

Running the app with Docker

docker instructions
native instructions

Configuration

Vets API is configured with Config. The
default configuration is contained in settings.yml. To
customize your setup, you can create a config/settings.local.yml file with
configuration specific to your needs. For example, to configure Redis and
PostgreSQL (PostGIS is required), place something like this in that file:

database_url: postgis://pg_host:9999/custom_db

redis:
  host: redis_host
  port: 9999

This is also where you will place any other customizations, such as API tokens
or certificate paths.

Config settings that vary in value depending on the deployment environment will also need
to be set appropriately for each environment in the relevant
devops (Private Repo) configurations (dev-, staging-, and prod-settings.local.yml.j2).

Some examples of configuration that will need to be added to these files are:

  • API keys/tokens
  • 3rd party service hostnames, ports, and certificates/keys.
  • Betamocks settings

Optional application configuration

The following features require additional configuration, click for details.

To mock one or more of the above services see Betamocks

Vets API will still run in a limited capacity without configuring any of these
features, and will run the unit tests successfully.

Deployment instructions

Jenkins deploys vets-api upon each merge to master:

http://jenkins.vfs.va.gov/job/testing/job/vets-api/job/master/

Each deploy is available here:

https://dev-api.va.gov/v0/status

API request key formatting

When sending HTTP requests use the X-Key-Inflection request header to specify
which case your client wants to use. Valid cases are camel, dash, and
snake. For example if you set X-Key-Inflection: camel then you can use
camelCase keys in your JSON request body and you will get back data with
camelCase keys in the response body. If the header is not provided then the
server will expect snake_case keys in the request body and output snake_case in
the response.

Versions

The version of Ruby and gem dependencies (including Rails) used are defined in the included Gemfile. The currently used versions of gems are maintained with Bundler and stored in the Gemfile.lock.

Version Policy

The goal is to have vets-api use supported versions of gems and Ruby, which is often the latest. However the versions are generally updated as need or availability arise. If you need a newer version of a gem, please submit a pull-request marked as draft with just the gem updated and passing tests.

主要指標

概覽
名稱與所有者department-of-veterans-affairs/vets-api
主編程語言Ruby
編程語言Ruby (語言數: 8)
平台
許可證Other
所有者活动
創建於2016-07-01 17:33:19
推送於2025-04-21 13:59:11
最后一次提交2025-04-21 09:59:09
發布數6485
最新版本名稱0.2.2178 (發布於 )
第一版名稱deploy_prod_plat_201610122013 (發布於 )
用户参与
星數219
關注者數199
派生數69
提交數19.4k
已啟用問題?
問題數555
打開的問題數25
拉請求數18033
打開的拉請求數93
關閉的拉請求數2929
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?