API for va.gov
API powering VA.gov
Nothing special found.
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.
vets-api
repo: git clone https://github.com/department-of-veterans-affairs/vets-api.git
Create a folder in your vets-api directory:
mkdir config/certs
touch config/certs/vetsgov-localhost.crt
touch config/certs/vetsgov-localhost.key
Copy example configuration file:
cp config/settings.local.yml.example config/settings.local.yml
Edit config/settings.local.yml
to disable signed authentication requests:
# settings.local.yml
saml:
authn_requests_signed: false
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.
Vets API is configured with Config. The
default configuration is contained in [settings.yml](config/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:
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.
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
Additional deployment details can be found here:
[additional deployment details](docs/deployment/information.md)
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.
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.
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.