GSA Per Diem (Independent Publisher) (#3094)

* GSA Per Diem

* updated readme for comment response

* spelling
This commit is contained in:
Rick Wilson 2024-01-30 05:15:16 -05:00 коммит произвёл GitHub
Родитель d2d6bd2a0b
Коммит f7798656bb
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
3 изменённых файлов: 904 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,71 @@
# GSA Per Diem
Provides access to the U.S. General Services Administration's per diem rate data, which includes lodging, meal, and incidental expense rates for federal travelers. This connector for Power Automate enables users to integrate these per diem rates into their workflows and applications. For a detailed understanding of how the GSA Per Diem API works, and for additional endpoint details, refer to the official [GSA Per Diem API documentation](https://open.gsa.gov/api/perdiem/).
## Publisher: Richard Wilson
## Prerequisites
Before you can start using the GSA Per Diem API, you'll need to obtain a free API key. This key will be used to authenticate your requests to the API. Obtaining the key is a straightforward process, which can be done through the GSA Per Diem API website. Once you have the key, you'll be able to make API requests to access the per diem rate data.
## Supported Operations
### Get Per Diem Rates by City, State, and Year
Retrieves specific per diem rates based on the city, state, and fiscal year.
- **Inputs**:
- `City`: The name of the city.
- `State Abbreviation`: The two-letter abbreviation of the state.
- `Year`: The fiscal year for which rates are requested.
- **Outputs**:
- `Rates`: Detailed per diem rate information for the specified location and year.
- `Errors`: Any errors encountered during the request.
### Get Per Diem Rates for All Counties
Provides comprehensive per diem rates across all counties and cities within a specified state for a given fiscal year.
- **Inputs**:
- `State Abbreviation`: The two-letter abbreviation of the state.
- `Year`: The fiscal year for which rates are requested.
- **Outputs**:
- `Rates`: An array of per diem rate information for all counties and cities within the specified state and year.
- `Errors`: Any errors encountered during the request.
### Get Per Diem Rates by ZIP Code and Year
Fetches per diem rates for a specific geographic area identified by ZIP code for a given fiscal year.
- **Inputs**:
- `Zip`: ZIP code of the area.
- `Year`: The fiscal year for which rates are requested.
- **Outputs**:
- `Rates`: Per diem rate information based on the specified ZIP code and fiscal year.
- `Errors`: Any errors encountered during the request.
### Lodging Rates for the Continental US by Year
Offers detailed lodging rate information for various locations within the Continental United States for the specified fiscal year.
- **Inputs**:
- `Year`: The fiscal year for which rates are requested.
- **Outputs**:
- An array of lodging rates for each month, along with overall meal rates, city, state, and county details.
### Mapping of ZIP Code to Destination-IDs and State Locations
Provides a mapping of ZIP codes to their corresponding Destination-IDs and state locations for a given fiscal year.
- **Inputs**:
- `Year`: The fiscal year for which the mapping is requested.
- **Outputs**:
- A list of ZIP codes with their corresponding Destination-IDs and state locations for the specified fiscal year.
## Obtaining Credentials
To access the GSA Per Diem API, an API key is required. You can obtain this key from the [GSA Per Diem API website](https://open.gsa.gov/api/perdiem/).
## Known Issues and Limitations
Currently, no known issues or limitations exist. Always refer to this section for updated information.

Просмотреть файл

@ -0,0 +1,810 @@
{
"swagger": "2.0",
"info": {
"version": "2.0.0",
"title": "GSA Per Diem",
"description": "Per diem rates are the allowed reimbursement rates for hotel stays and meals for federal travelers. Rates are set for each of the federal government's fiscal years (October 1st to September 30th) GSA is responsible for setting the rates in the continental United States. Many businesses and other organizations adopt these rates as well. This API provides access to the current rate information.",
"contact": {
"name": "Richard Wilson",
"email": "richard.a.wilson@microsoft.com",
"url": "https://www.richardawilson.com/"
}
},
"host": "api.gsa.gov",
"basePath": "/travel/perdiem",
"schemes": [
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"paths": {
"/v2/rates/city/{city}/state/{state}/year/{year}": {
"get": {
"description": "Retrieves per diem rates for a specified city, state, and fiscal year. This endpoint is ideal for users who need detailed per diem rate information for specific city and state combinations.",
"summary": "Get per diem rates by city, state, and year",
"operationId": "GetPerDiemRatesByCityStateAndYear",
"deprecated": false,
"produces": [
"application/json"
],
"parameters": [
{
"name": "city",
"in": "path",
"required": true,
"type": "string",
"description": "Enter the city to filter by.",
"x-ms-visibility": "important",
"x-ms-summary": "City",
"x-ms-url-encoding": "single"
},
{
"name": "state",
"in": "path",
"required": true,
"type": "string",
"description": "Enter the two-letter abbreviation of the state.",
"x-ms-visibility": "important",
"x-ms-summary": "State Abbreviation",
"x-ms-url-encoding": "single"
},
{
"name": "year",
"in": "path",
"required": true,
"type": "string",
"description": "Enter the fiscal year to filter by.",
"x-ms-visibility": "important",
"x-ms-summary": "Year",
"x-ms-url-encoding": "single"
}
],
"responses": {
"200": {
"description": "Successful. Data will be returned in JSON format.",
"headers": {
"Content-Type": {
"description": "Content-Type",
"type": "string"
}
},
"schema": {
"type": "object",
"properties": {
"request": {
"type": "string",
"x-ms-summary": "Request",
"description": "Identifies the request made to the API."
},
"errors": {
"type": "string",
"x-ms-summary": "Errors",
"description": "Contains any errors encountered during the request."
},
"rates": {
"type": "array",
"x-ms-summary": "Rates",
"description": "An array of per diem rate information for the specified location and year.",
"items": {
"type": "object",
"properties": {
"oconusInfo": {
"type": "string",
"x-ms-summary": "Oconus Info",
"description": "Provides information specific to Outside Continental United States locations."
},
"rate": {
"type": "array",
"x-ms-summary": "Rate",
"description": "Contains detailed rate information for each month.",
"items": {
"type": "object",
"properties": {
"months": {
"type": "object",
"x-ms-summary": "Months",
"description": "Details of monthly rates throughout the year.",
"properties": {
"month": {
"type": "array",
"x-ms-summary": "Month",
"description": "Lists individual months with corresponding rate details.",
"items": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Value",
"description": "The numerical value representing the month."
},
"number": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Number",
"description": "The numerical order of the month in the year."
},
"short": {
"type": "string",
"x-ms-summary": "Short",
"description": "Short form representation of the month's name."
},
"long": {
"type": "string",
"x-ms-summary": "Long",
"description": "Full name of the month."
}
}
}
}
}
},
"meals": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Meals",
"description": "The per diem meal rate."
},
"zip": {
"type": "string",
"x-ms-summary": "Zip",
"description": "The ZIP code for the location."
},
"county": {
"type": "string",
"x-ms-summary": "County",
"description": "The county name of the location."
},
"city": {
"type": "string",
"x-ms-summary": "City",
"description": "The city name of the location."
},
"standardRate": {
"type": "string",
"x-ms-summary": "Standard Rate",
"description": "The standard lodging rate for the location."
}
}
}
},
"state": {
"type": "string",
"x-ms-summary": "State",
"description": "The state name corresponding to the rates."
},
"year": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Year",
"description": "The fiscal year for which rates are applicable."
},
"isOconus": {
"type": "string",
"x-ms-summary": "Is Oconus",
"description": "Indicates if the location is outside the Continental United States."
}
}
}
},
"version": {
"type": "string",
"x-ms-summary": "Version",
"description": "Indicates the API version for the returned data."
}
}
}
},
"400": {
"description": "Bad request. Verify the query string parameters that were provided.",
"headers": {}
},
"403": {
"description": "API key is not correct or was not provided.",
"headers": {}
}
},
"x-ms-openai-data": {
"openai-enabled": false,
"operations": [
{
"operationId": "GetPerDiemRatesByCityStateAndYear",
"x-ms-require-user-confirmation": false
}
]
}
}
},
"/v2/rates/state/{state}/year/{year}": {
"get": {
"description": "Provides per diem rates for all counties and cities within a specified state for a given fiscal year. This is useful for users requiring a comprehensive view of rates across an entire state.",
"summary": "Get per diem rates for all counties and cities, by state and year",
"operationId": "GetPerDiemRatesForAllCounties",
"deprecated": false,
"produces": [
"application/json"
],
"parameters": [
{
"name": "state",
"in": "path",
"required": true,
"type": "string",
"description": "Enter two-letter abbreviation of the state.",
"x-ms-visibility": "important",
"x-ms-summary": "State Abbreviation",
"x-ms-url-encoding": "single"
},
{
"name": "year",
"in": "path",
"required": true,
"type": "string",
"description": "Enter the fiscal year to filter by.",
"x-ms-visibility": "important",
"x-ms-summary": "Year",
"x-ms-url-encoding": "single"
}
],
"responses": {
"200": {
"description": "Successful. Data will be returned in JSON format.",
"headers": {
"Content-Type": {
"description": "Content-Type",
"type": "string"
}
},
"schema": {
"type": "object",
"properties": {
"request": {
"type": "string",
"x-ms-summary": "Request",
"description": "Identifies the request made to the API."
},
"errors": {
"type": "string",
"x-ms-summary": "Errors",
"description": "Contains any errors encountered during the request."
},
"rates": {
"type": "array",
"x-ms-summary": "Rates",
"description": "An array of per diem rate information for all counties and cities within the specified state and year.",
"items": {
"type": "object",
"properties": {
"oconusInfo": {
"type": "string",
"x-ms-summary": "Oconus Info",
"description": "Provides information specific to Outside Continental United States locations."
},
"rate": {
"type": "array",
"x-ms-summary": "Rate",
"description": "Contains detailed rate information for each month.",
"items": {
"type": "object",
"properties": {
"months": {
"type": "object",
"x-ms-summary": "Months",
"description": "Details of monthly rates throughout the year.",
"properties": {
"month": {
"type": "array",
"x-ms-summary": "Month",
"description": "Lists individual months with corresponding rate details.",
"items": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Value",
"description": "The numerical value representing the month."
},
"number": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Number",
"description": "The numerical order of the month in the year."
},
"short": {
"type": "string",
"x-ms-summary": "Short",
"description": "Short form representation of the month's name."
},
"long": {
"type": "string",
"x-ms-summary": "Long",
"description": "Full name of the month."
}
}
}
}
}
},
"meals": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Meals",
"description": "The per diem meal rate."
},
"zip": {
"type": "string",
"x-ms-summary": "Zip",
"description": "The ZIP code for the location."
},
"county": {
"type": "string",
"x-ms-summary": "County",
"description": "The county name of the location."
},
"city": {
"type": "string",
"x-ms-summary": "City",
"description": "The city name of the location."
},
"standardRate": {
"type": "string",
"x-ms-summary": "Standard Rate",
"description": "The standard lodging rate for the location."
}
}
}
},
"state": {
"type": "string",
"x-ms-summary": "State",
"description": "The state name corresponding to the rates."
},
"year": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Year",
"description": "The fiscal year for which rates are applicable."
},
"isOconus": {
"type": "string",
"x-ms-summary": "Is Oconus",
"description": "Indicates if the location is outside the Continental United States."
}
}
}
},
"version": {
"type": "string",
"x-ms-summary": "Version",
"description": "Indicates the API version for the returned data."
}
}
}
},
"400": {
"description": "Bad request. Verify the query string parameters that were provided.",
"headers": {}
},
"403": {
"description": "API key is not correct or was not provided.",
"headers": {}
}
}
}
},
"/v2/rates/zip/{zip}/year/{year}": {
"get": {
"description": "Fetches per diem rates based on ZIP code and fiscal year. This endpoint is particularly useful for users who want to quickly find rates in a specific geographic area identified by ZIP code.",
"summary": "Get per diem rates by ZIP code and year",
"operationId": "GetPerDiemRatesByZipCodeAndYear",
"deprecated": false,
"produces": [
"application/json"
],
"parameters": [
{
"name": "zip",
"in": "path",
"required": true,
"type": "integer",
"format": "int32",
"description": "Enter the ZIP code to filter by.",
"x-ms-visibility": "important",
"x-ms-summary": "Zip",
"x-ms-url-encoding": "single"
},
{
"name": "year",
"in": "path",
"required": true,
"type": "string",
"description": "Enter the fiscal year to filter by.",
"x-ms-visibility": "important",
"x-ms-summary": "Year",
"x-ms-url-encoding": "single"
}
],
"responses": {
"200": {
"description": "Successful. Data will be returned in JSON format.",
"headers": {
"Content-Type": {
"description": "Content-Type",
"type": "string"
}
},
"schema": {
"type": "object",
"properties": {
"request": {
"type": "string",
"x-ms-summary": "Request",
"description": "Identifies the request made to the API."
},
"errors": {
"type": "string",
"x-ms-summary": "Errors",
"description": "Contains any errors encountered during the request."
},
"rates": {
"type": "array",
"x-ms-summary": "Rates",
"description": "An array of per diem rate information based on the specified ZIP code and fiscal year.",
"items": {
"type": "object",
"properties": {
"oconusInfo": {
"type": "string",
"x-ms-summary": "Oconus Info",
"description": "Provides information specific to Outside Continental United States locations."
},
"rate": {
"type": "array",
"x-ms-summary": "Rate",
"description": "Contains detailed rate information for each month.",
"items": {
"type": "object",
"properties": {
"months": {
"type": "object",
"x-ms-summary": "Months",
"description": "Details of monthly rates throughout the year.",
"properties": {
"month": {
"type": "array",
"x-ms-summary": "Month",
"description": "Lists individual months with corresponding rate details.",
"items": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Value",
"description": "The numerical value representing the month."
},
"number": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Number",
"description": "The numerical order of the month in the year."
},
"short": {
"type": "string",
"x-ms-summary": "Short",
"description": "Short form representation of the month's name."
},
"long": {
"type": "string",
"x-ms-summary": "Long",
"description": "Full name of the month."
}
}
}
}
}
},
"meals": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Meals",
"description": "The per diem meal rate."
},
"zip": {
"type": "string",
"x-ms-summary": "Zip",
"description": "The ZIP code for the location."
},
"county": {
"type": "string",
"x-ms-summary": "County",
"description": "The county name of the location."
},
"city": {
"type": "string",
"x-ms-summary": "City",
"description": "The city name of the location."
},
"standardRate": {
"type": "string",
"x-ms-summary": "Standard Rate",
"description": "The standard lodging rate for the location."
}
}
}
},
"state": {
"type": "string",
"x-ms-summary": "State",
"description": "The state name corresponding to the rates."
},
"year": {
"type": "integer",
"format": "int32",
"x-ms-summary": "Year",
"description": "The fiscal year for which rates are applicable."
},
"isOconus": {
"type": "string",
"x-ms-summary": "Is Oconus",
"description": "Indicates if the location is outside the Continental United States."
}
}
}
},
"version": {
"type": "string",
"x-ms-summary": "Version",
"description": "Indicates the API version for the returned data."
}
}
}
},
"400": {
"description": "Bad request. Verify the query string parameters that were provided.",
"headers": {}
},
"403": {
"description": "API key is not correct or was not provided.",
"headers": {}
}
}
}
},
"/v2/rates/conus/lodging/{year}": {
"get": {
"description": "Offers detailed lodging rate information for various locations within the Continental United States for the specified fiscal year.",
"summary": "Lodging rates for the Continental US by year",
"operationId": "LodgingRatesForTheContinentalUsByYear",
"deprecated": false,
"produces": [
"application/json"
],
"parameters": [
{
"name": "year",
"in": "path",
"required": true,
"type": "string",
"description": "Enter the fiscal year to filter by.",
"x-ms-visibility": "important",
"x-ms-summary": "Year",
"x-ms-url-encoding": "single"
}
],
"responses": {
"200": {
"description": "Successful. Data will be returned in JSON format.",
"headers": {
"Content-Type": {
"description": "Content-Type",
"type": "string"
}
},
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Jan": {
"type": "string",
"x-ms-summary": "January",
"description": "Lodging rates for January."
},
"Feb": {
"type": "string",
"x-ms-summary": "February",
"description": "Lodging rates for February."
},
"Mar": {
"type": "string",
"x-ms-summary": "March",
"description": "Lodging rates for March."
},
"Apr": {
"type": "string",
"x-ms-summary": "April",
"description": "Lodging rates for April."
},
"May": {
"type": "string",
"x-ms-summary": "May",
"description": "Lodging rates for May."
},
"Jun": {
"type": "string",
"x-ms-summary": "June",
"description": "Lodging rates for June."
},
"Jul": {
"type": "string",
"x-ms-summary": "July",
"description": "Lodging rates for July."
},
"Aug": {
"type": "string",
"x-ms-summary": "August",
"description": "Lodging rates for August."
},
"Sep": {
"type": "string",
"x-ms-summary": "September",
"description": "Lodging rates for September."
},
"Oct": {
"type": "string",
"x-ms-summary": "October",
"description": "Lodging rates for October."
},
"Nov": {
"type": "string",
"x-ms-summary": "November",
"description": "Lodging rates for November."
},
"Dec": {
"type": "string",
"x-ms-summary": "December",
"description": "Lodging rates for December."
},
"Meals": {
"type": "string",
"x-ms-summary": "Meals",
"description": "Per diem meal rates for the entire year."
},
"City": {
"type": "string",
"x-ms-summary": "City",
"description": "The city for which the rates are applicable."
},
"State": {
"type": "string",
"x-ms-summary": "State",
"description": "The state corresponding to the lodging rates."
},
"County": {
"type": "string",
"x-ms-summary": "County",
"description": "The county corresponding to the lodging rates."
},
"DID": {
"type": "string",
"x-ms-summary": "Destination ID",
"description": "The destination ID for the location."
}
}
}
}
},
"400": {
"description": "Bad request. Verify the query string parameters that were provided.",
"headers": {}
},
"403": {
"description": "API key is not correct or was not provided.",
"headers": {}
}
}
}
},
"/v2/rates/conus/zipcodes/{year}": {
"get": {
"description": "Provides a mapping of ZIP codes to their corresponding Destination-IDs and state locations for a given fiscal year.",
"summary": "Mapping of ZIP code to Destination-IDs and state locations",
"operationId": "MappingOfZIPCodeToLocations",
"deprecated": false,
"produces": [
"application/json"
],
"parameters": [
{
"name": "year",
"in": "path",
"required": true,
"type": "string",
"description": "Enter the fiscal year to filter by.",
"x-ms-visibility": "important",
"x-ms-summary": "Year",
"x-ms-url-encoding": "single"
}
],
"responses": {
"200": {
"description": "Successful. Data will be returned in JSON format.",
"headers": {
"Content-Type": {
"description": "Content-Type",
"type": "string"
}
},
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Zip": {
"type": "string",
"x-ms-summary": "Zip",
"description": "The ZIP code associated with the destination ID and state."
},
"DID": {
"type": "string",
"x-ms-summary": "Destination ID",
"description": "The destination ID corresponding to the ZIP code."
},
"ST": {
"type": "string",
"x-ms-summary": "State",
"description": "The state abbreviation associated with the ZIP code."
}
}
}
}
},
"400": {
"description": "Bad request. Verify the query string parameters that were provided.",
"headers": {}
},
"403": {
"description": "API key is not correct or was not provided.",
"headers": {}
}
}
}
}
},
"definitions": {},
"parameters": {},
"responses": {},
"securityDefinitions": {
"API Key": {
"type": "apiKey",
"in": "header",
"name": "X-API-KEY"
}
},
"security": [
{
"API Key": []
}
],
"tags": [],
"x-ms-connector-metadata": [
{
"propertyName": "Website",
"propertyValue": "https://open.gsa.gov/api/perdiem/"
},
{
"propertyName": "Privacy policy",
"propertyValue": "https://www.gsa.gov/technology/government-it-initiatives/digital-strategy/terms-of-service-for-developer-resources"
},
{
"propertyName": "Categories",
"propertyValue": "Commerce;Finance"
}
]
}

Просмотреть файл

@ -0,0 +1,23 @@
{
"properties": {
"connectionParameters": {
"api_key": {
"type": "securestring",
"uiDefinition": {
"displayName": "GSA API Key",
"description": "The GSA API key which can be obtained from https://open.gsa.gov/api/perdiem",
"tooltip": "Provide your GSA API Key",
"constraints": {
"tabIndex": 2,
"clearText": false,
"required": "true"
}
}
}
},
"iconBrandColor": "#da3b01",
"capabilities": [],
"publisher": "Richard Wilson",
"stackOwner": "General Services Administration"
}
}