Data Science API
DS API - Family Promise 0.38.02
How to Use the DS API
Main URL: http://family-promise-dev.us-east-1.elasticbeanstalk.com
/vizmap
endpoint
/vizmap
endpointPerform SQL query of database according to filters implemented by user. Only pick out the following columns, and include those in a single JSON object that will be sent to DS API:
service_type_name
fromservice_types
table.
Plus:
address
address_line2
city
state
zip
country
from locations
table.
*zip codes are pulled from github repo link and added to a dataframe based on pulled zip
/veteran_counts
endpoint
/veteran_counts
endpointA JSON object containing:
recipient_id
recipient_veteran_status
from recipients
table.
/age_metric
endpoint
/age_metric
endpointA JSON object containing:
recipient_id
recipient_date_of_birth
from recipients
table.
/eligibility
endpoint
/eligibility
endpointAccepts a string containing a household_id from the households table.
Returns a JSON object containing:
resident_assistance_eligibility: bool
reduced_bus_fare_eligiblity: bool
/total_served
endpoint
/total_served
endpointReturns an integer representing the total number of recipients recorded in the database.
/families_served
endpoint
/families_served
endpointReturns an integer representing the total number of families recorded in the database.
/children_served
endpoint
/children_served
endpointReturns an integer representing the total number of children recorded in the database.
/genders_served
endpoint
/genders_served
endpointReturns an list displaying the total number of recipients of each gender in the database.
/races_served
endpoint
/races_served
endpointReturns a list displaying the total number of recipients of each race in the database.
/ethnicities_served
endpoint
/ethnicities_served
endpointReturns a list displaying the total number of recipients of each ethnicity in the database.
/program_enrollment
endpoint
/program_enrollment
endpointReturns a list displaying the total number of services done that fall under each program.
/services_given
endpoint
/services_given
endpointReturns a list displaying the total number of each service done.
/locations_of_service
endpoint
/locations_of_service
endpointReturns a list displaying the total number of services given at each type of location in the database.
Running the DS application
Create the .env file in the folder.
Add
DATABASE_URL = postgresql://docker:****@localhost:5400/api-dev
to the .env file.That is only for spinning up the local instance for the DS API
Make sure the .env file matches the .env file that is in the non public documentation.
run:
pipenv install --dev
to download all the dependencies.run:
pipenv shell
to start the pipenv environment.run:
uvicorn app.main:app --reload
to start running the fast api.
Running the DS application with Apple M1
When you
pipenv install --dev
on the M1 you will most likely run into issues where the Pipfile will fail to lock due to issues with psycopg2. Psyocopg2 specifically has issues pip installing on the M1. After figuring out past issues with the M1, this is a work around until there is further bug fixing on compatibility.Install Homebrew.
Install miniforge for arm64(Apple Silicone M1).
This will not work with Anaconda.
run:
conda create --name NAME python=3.8
: creates a conda environment.run:
conda activate NAME
: activates the conda environment.The conda environment needs to running in order for the application to run.
run:
conda install -c conda-forge -y psycopg2 numpy pandas
: install necessary dependencies.Create the .env file in the folder and continue following the instructions in the section above.
Updating the Elastic Beanstalk environment
Do a normal push to GitHub repo and wait for the changes to be approved and pushed to the main branch.
run:
git pull
to make sure code is perfect to deploy to Elastic Beanstalk.run:
git add --all
to get all the changes to the api that has been made.Change the version number in the
main.py
file. Example:0.37.01
run:
git commit -m 'Depoying version 0.XX.XX to AWS'
to get all the changes add.When you start to deploy the new changes to Elastic Beanstalk it will take latest commit you made.
run:
eb init --region us-east-1 family-promise
to create the Elastic Beanstalk files in the application.This step will only be required if you have not deployed to the Elastic Beanstalk environment.
run:
eb deploy --region us-east-1 family-promise-dev
.Follow instruction that will given to you.
You may have to grab your security credentials from AWS.
Do a final push to add the final version number to the GitHub repo.
Contributors
Data Science Team (September, 2021)
DS API - Family Promise 0.38.02 OAS3
To use these interactive docs:
Click on an endpoint below
Click the Try it out button
Edit the Request body or any parameters
Click the Execute button
Scroll down to see the Server response Code & Details
GET​/infoGet Url
Verify we can connect to the database, and return the database URL in this format: dialect://user:password@host/dbname The password will be hidden with ***
Parameters
Cancel
No parametersExecute
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
POST​/vizmap​/{query_json}VisualPOST​/veteran_counts​/{query_json}Veteran CountsPOST​/age_metric​/{query_json}Age Metric
POST​/eligibility​/{household_id}Check Eligibility
GET​/total_servedGet Total Served
Returns the total number of recipients TODO: Return recipients relavent to user
Returns
int total_served
Parameters
Try it out
No parameters
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
GET​/families_servedGet Families Served
Returns the total number of families TODO: Return only those relavent to the user
Returns
int families_served
Parameters
Try it out
No parameters
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
GET​/children_servedGet Children Served
Returns the number of recipients under 18, not inclusive.
Returns
int children_served
Parameters
Try it out
No parameters
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
GET​/genders_servedGet Genders Served
Returns the count of each gender served.
Returns
list genders_served
Parameters
Try it out
No parameters
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
GET​/races_servedGet Races Served
Returns the count of each race served.
Returns
list races_served
Parameters
Try it out
No parameters
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
GET​/ethnicities_servedGet Ethnicities Served
Returns the count of each ethnicity served.
Returns
list ethnicities_served
Parameters
Try it out
No parameters
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
GET​/program_enrollmentGet Program Enrollment
Returns the count of services done for each program.
Returns
list program_enrollment
Parameters
Try it out
No parameters
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
GET​/services_givenGet Services Given
Returns the count of each service provided.
Returns
list services_given
Parameters
Try it out
No parameters
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
GET​/locations_of_serviceGet Locations
Returns the count of services at each type of location.
Returns
list locations_of_service
Parameters
Try it out
No parameters
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
POST​/geocode​/Get Latitude Longitude
Please post an address as a JSON object with this exact format: { "address": "123 Gilman Dr W", "address_line2": "", "city": "Seattle", "state": "WA", "zip": "98119", "country": "United States" }
All values should be a string if there is no address_line2, the value should still be an empty string
The output will be a JSON object with the following format: {"latitude": , "longitude": }
Parameters
Try it out
No parameters
Responses
Code | Description | Links |
---|---|---|
200 | Successful ResponseMedia typeapplication/jsonControls
| No links |
Schemas
HTTPValidationErrorValidationError
Last updated