This API is utilized by USAspending.gov to obtain all federal spending data which is open source and provided to the public as part of the DATA Act.
Ensure the following dependencies are installed and working prior to continuing:
PostgreSQL
10.x (with a dedicateddata_store_api
database)direnv
- For Mac OSX, be sure to put the hook in your
~/.bash_profile
, not~/.bashrc
- For Mac OSX, be sure to put the hook in your
Bash
or another Unix Shell equivalent- Bash is available on Windows as Windows Subsystem for Linux
- Command line package manager
- Windows' WSL bash uses
apt-get
- OSX users will use
Homebrew
- Windows' WSL bash uses
Now, navigate to the base file directory where you will store the USAspending repositories
$ mkdir -p usaspending && cd usaspending
$ git clone https://github.com/fedspendingtransparency/usaspending-api.git
$ cd usaspending-api
There are two options for how you want to setup your database in order to run the API. You can:
1. Use your own local postgres database for the API to use.
2. Create an empty directory on your localhost where all the database files will persist and use the docker-compose file to bring up a containerized postgres database
Create a Local postgres database called 'data_store_api' and either create a new username and password for the database or use all the defaults. For help, consult:
Make sure to grant whatever user you created for the data_store api database superuser permissions or some scripts will not work:
postgres=# ALTER ROLE <<role/user you created>> WITH SUPERUSER;
See below for basic setup instructions. For help with Docker Compose:
-
None of these commands will rebuild a Docker image! Use
--build
if you make changes to the code or want to rebuild the image before running theup
steps. -
If you run a local database, set
POSTGRES_HOST
in.env
tohost.docker.internal
.POSTGRES_PORT
should be changed if it isn't 5432.-
docker-compose up usaspending-db
will create and run a Postgres database in thePOSTGRES_CLUSTER_DIR
specified in the.env
configuration file. We recommend using a folder outside of the usaspending-api project directory so it does not get copied to other containers in subsequent steps. -
docker-compose up usaspending-db-migrate
will run Django migrations: https://docs.djangoproject.com/en/2.2/topics/migrations/. -
docker-compose up usaspending-ref-data
will load essential reference data (agencies, program activity codes, CFDA program data, country codes, and others). -
docker-compose up usaspending-db-sql
, thendocker-compose up usaspending-db-init
will provision the custom materialized views which are required by certain API endpoints.
-
docker-compose.yaml
contains the shell commands necessary to set up the database manually, if you prefer to have a more custom environment.
docker-compose up usaspending-api
- You can update environment variables in
settings.py
(buckets, elasticsearch, local paths) and they will be mounted and used when you run this.
The application will now be available at http://localhost:8000
.
In your local development environment, available API endpoints may be found at http://localhost:8000/docs/endpoints
Deployed production API endpoints and docs are found by following links here: https://api.usaspending.gov
Note: it is possible to run ad-hoc commands out of a Docker container once you get the hang of it, see the comments in the Dockerfile.
For details on loading reference data, DATA Act Broker submissions, and current USAspending data into the API, see loading_data.md.
For details on how our data loaders modify incoming data, see data_changes.md.
This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.
All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest. got