├── .gitignore ├── LICENSE ├── README.md ├── query.md ├── v1.0 ├── apis.yaml └── openapi.yaml ├── v1.1 └── openapi.yaml ├── v1.2 ├── openapi-hsda-bulk.yaml ├── openapi-hsda-management.yaml ├── openapi-hsda-meta.yaml ├── openapi-hsda-orchestration.yaml ├── openapi-hsda-search.yaml ├── openapi-hsda-taxonomy.yaml ├── openapi-hsda-utility.yaml └── openapi-hsda.yaml └── v2.0 ├── openapi-hsda-meta.yaml ├── openapi-hsda-search.yaml ├── openapi-hsda-taxonomy.yaml └── openapi-hsda.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.com 4 | *.class 5 | *.dll 6 | *.exe 7 | *.o 8 | *.so 9 | 10 | # Packages # 11 | ############ 12 | # it's better to unpack these files and commit the raw source 13 | # git has its own built in compression methods 14 | *.7z 15 | *.dmg 16 | *.gz 17 | *.iso 18 | *.jar 19 | *.rar 20 | *.tar 21 | *.zip 22 | 23 | # Logs and databases # 24 | ###################### 25 | *.log 26 | *.sql 27 | *.sqlite 28 | 29 | # OS generated files # 30 | ###################### 31 | .DS_Store 32 | .DS_Store? 33 | ._* 34 | .Spotlight-V100 35 | .Trashes 36 | ehthumbs.db 37 | Thumbs.db 38 | 39 | # Laneworks 40 | config.php 41 | 42 | # Jekyll 43 | Gemfile.lock 44 | /_site/ 45 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The Humanitarian Services Data API Suite Specifications and associated documentation are licensed under the Creative Commons Attribution Share-Alike 4.0 license. 2 | 3 | A summary of this license is available at https://creativecommons.org/licenses/by-sa/4.0/ 4 | 5 | Unless otherwise stated, contributions are copyright of the Open Referral project. 6 | 7 | Our preferred form of attribution is "Humanitarian Service Data Specification: an Open Referral resource (https://openreferral.org/)" 8 | 9 | The Open Referral project is stewarded by Greg Bloom, and is working towards a formal legal structure. 10 | 11 | Creative Commons Attribution-ShareAlike 4.0 International Public License 12 | ============================================================= 13 | 14 | By exercising the Licensed Rights (defined below), You accept and agree 15 | to be bound by the terms and conditions of this Creative Commons 16 | Attribution-ShareAlike 4.0 International Public License ("Public 17 | License"). To the extent this Public License may be interpreted as a 18 | contract, You are granted the Licensed Rights in consideration of Your 19 | acceptance of these terms and conditions, and the Licensor grants You 20 | such rights in consideration of benefits the Licensor receives from 21 | making the Licensed Material available under these terms and 22 | conditions. 23 | 24 | 25 | Section 1 -- Definitions. 26 | 27 | a. Adapted Material means material subject to Copyright and Similar 28 | Rights that is derived from or based upon the Licensed Material 29 | and in which the Licensed Material is translated, altered, 30 | arranged, transformed, or otherwise modified in a manner requiring 31 | permission under the Copyright and Similar Rights held by the 32 | Licensor. For purposes of this Public License, where the Licensed 33 | Material is a musical work, performance, or sound recording, 34 | Adapted Material is always produced where the Licensed Material is 35 | synched in timed relation with a moving image. 36 | 37 | b. Adapter's License means the license You apply to Your Copyright 38 | and Similar Rights in Your contributions to Adapted Material in 39 | accordance with the terms and conditions of this Public License. 40 | 41 | c. BY-SA Compatible License means a license listed at 42 | creativecommons.org/compatiblelicenses, approved by Creative 43 | Commons as essentially the equivalent of this Public License. 44 | 45 | d. Copyright and Similar Rights means copyright and/or similar rights 46 | closely related to copyright including, without limitation, 47 | performance, broadcast, sound recording, and Sui Generis Database 48 | Rights, without regard to how the rights are labeled or 49 | categorized. For purposes of this Public License, the rights 50 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 51 | Rights. 52 | 53 | e. Effective Technological Measures means those measures that, in the 54 | absence of proper authority, may not be circumvented under laws 55 | fulfilling obligations under Article 11 of the WIPO Copyright 56 | Treaty adopted on December 20, 1996, and/or similar international 57 | agreements. 58 | 59 | f. Exceptions and Limitations means fair use, fair dealing, and/or 60 | any other exception or limitation to Copyright and Similar Rights 61 | that applies to Your use of the Licensed Material. 62 | 63 | g. License Elements means the license attributes listed in the name 64 | of a Creative Commons Public License. The License Elements of this 65 | Public License are Attribution and ShareAlike. 66 | 67 | h. Licensed Material means the artistic or literary work, database, 68 | or other material to which the Licensor applied this Public 69 | License. 70 | 71 | i. Licensed Rights means the rights granted to You subject to the 72 | terms and conditions of this Public License, which are limited to 73 | all Copyright and Similar Rights that apply to Your use of the 74 | Licensed Material and that the Licensor has authority to license. 75 | 76 | j. Licensor means the individual(s) or entity(ies) granting rights 77 | under this Public License. 78 | 79 | k. Share means to provide material to the public by any means or 80 | process that requires permission under the Licensed Rights, such 81 | as reproduction, public display, public performance, distribution, 82 | dissemination, communication, or importation, and to make material 83 | available to the public including in ways that members of the 84 | public may access the material from a place and at a time 85 | individually chosen by them. 86 | 87 | l. Sui Generis Database Rights means rights other than copyright 88 | resulting from Directive 96/9/EC of the European Parliament and of 89 | the Council of 11 March 1996 on the legal protection of databases, 90 | as amended and/or succeeded, as well as other essentially 91 | equivalent rights anywhere in the world. 92 | 93 | m. You means the individual or entity exercising the Licensed Rights 94 | under this Public License. Your has a corresponding meaning. 95 | 96 | 97 | Section 2 -- Scope. 98 | 99 | a. License grant. 100 | 101 | 1. Subject to the terms and conditions of this Public License, 102 | the Licensor hereby grants You a worldwide, royalty-free, 103 | non-sublicensable, non-exclusive, irrevocable license to 104 | exercise the Licensed Rights in the Licensed Material to: 105 | 106 | a. reproduce and Share the Licensed Material, in whole or 107 | in part; and 108 | 109 | b. produce, reproduce, and Share Adapted Material. 110 | 111 | 2. Exceptions and Limitations. For the avoidance of doubt, where 112 | Exceptions and Limitations apply to Your use, this Public 113 | License does not apply, and You do not need to comply with 114 | its terms and conditions. 115 | 116 | 3. Term. The term of this Public License is specified in Section 117 | 6(a). 118 | 119 | 4. Media and formats; technical modifications allowed. The 120 | Licensor authorizes You to exercise the Licensed Rights in 121 | all media and formats whether now known or hereafter created, 122 | and to make technical modifications necessary to do so. The 123 | Licensor waives and/or agrees not to assert any right or 124 | authority to forbid You from making technical modifications 125 | necessary to exercise the Licensed Rights, including 126 | technical modifications necessary to circumvent Effective 127 | Technological Measures. For purposes of this Public License, 128 | simply making modifications authorized by this Section 2(a) 129 | (4) never produces Adapted Material. 130 | 131 | 5. Downstream recipients. 132 | 133 | a. Offer from the Licensor -- Licensed Material. Every 134 | recipient of the Licensed Material automatically 135 | receives an offer from the Licensor to exercise the 136 | Licensed Rights under the terms and conditions of this 137 | Public License. 138 | 139 | b. Additional offer from the Licensor -- Adapted Material. 140 | Every recipient of Adapted Material from You 141 | automatically receives an offer from the Licensor to 142 | exercise the Licensed Rights in the Adapted Material 143 | under the conditions of the Adapter's License You apply. 144 | 145 | c. No downstream restrictions. You may not offer or impose 146 | any additional or different terms or conditions on, or 147 | apply any Effective Technological Measures to, the 148 | Licensed Material if doing so restricts exercise of the 149 | Licensed Rights by any recipient of the Licensed 150 | Material. 151 | 152 | 6. No endorsement. Nothing in this Public License constitutes or 153 | may be construed as permission to assert or imply that You 154 | are, or that Your use of the Licensed Material is, connected 155 | with, or sponsored, endorsed, or granted official status by, 156 | the Licensor or others designated to receive attribution as 157 | provided in Section 3(a)(1)(A)(i). 158 | 159 | b. Other rights. 160 | 161 | 1. Moral rights, such as the right of integrity, are not 162 | licensed under this Public License, nor are publicity, 163 | privacy, and/or other similar personality rights; however, to 164 | the extent possible, the Licensor waives and/or agrees not to 165 | assert any such rights held by the Licensor to the limited 166 | extent necessary to allow You to exercise the Licensed 167 | Rights, but not otherwise. 168 | 169 | 2. Patent and trademark rights are not licensed under this 170 | Public License. 171 | 172 | 3. To the extent possible, the Licensor waives any right to 173 | collect royalties from You for the exercise of the Licensed 174 | Rights, whether directly or through a collecting society 175 | under any voluntary or waivable statutory or compulsory 176 | licensing scheme. In all other cases the Licensor expressly 177 | reserves any right to collect such royalties. 178 | 179 | 180 | Section 3 -- License Conditions. 181 | 182 | Your exercise of the Licensed Rights is expressly made subject to the 183 | following conditions. 184 | 185 | a. Attribution. 186 | 187 | 1. If You Share the Licensed Material (including in modified 188 | form), You must: 189 | 190 | a. retain the following if it is supplied by the Licensor 191 | with the Licensed Material: 192 | 193 | i. identification of the creator(s) of the Licensed 194 | Material and any others designated to receive 195 | attribution, in any reasonable manner requested by 196 | the Licensor (including by pseudonym if 197 | designated); 198 | 199 | ii. a copyright notice; 200 | 201 | iii. a notice that refers to this Public License; 202 | 203 | iv. a notice that refers to the disclaimer of 204 | warranties; 205 | 206 | v. a URI or hyperlink to the Licensed Material to the 207 | extent reasonably practicable; 208 | 209 | b. indicate if You modified the Licensed Material and 210 | retain an indication of any previous modifications; and 211 | 212 | c. indicate the Licensed Material is licensed under this 213 | Public License, and include the text of, or the URI or 214 | hyperlink to, this Public License. 215 | 216 | 2. You may satisfy the conditions in Section 3(a)(1) in any 217 | reasonable manner based on the medium, means, and context in 218 | which You Share the Licensed Material. For example, it may be 219 | reasonable to satisfy the conditions by providing a URI or 220 | hyperlink to a resource that includes the required 221 | information. 222 | 223 | 3. If requested by the Licensor, You must remove any of the 224 | information required by Section 3(a)(1)(A) to the extent 225 | reasonably practicable. 226 | 227 | b. ShareAlike. 228 | 229 | In addition to the conditions in Section 3(a), if You Share 230 | Adapted Material You produce, the following conditions also apply. 231 | 232 | 1. The Adapter's License You apply must be a Creative Commons 233 | license with the same License Elements, this version or 234 | later, or a BY-SA Compatible License. 235 | 236 | 2. You must include the text of, or the URI or hyperlink to, the 237 | Adapter's License You apply. You may satisfy this condition 238 | in any reasonable manner based on the medium, means, and 239 | context in which You Share Adapted Material. 240 | 241 | 3. You may not offer or impose any additional or different terms 242 | or conditions on, or apply any Effective Technological 243 | Measures to, Adapted Material that restrict exercise of the 244 | rights granted under the Adapter's License You apply. 245 | 246 | 247 | Section 4 -- Sui Generis Database Rights. 248 | 249 | Where the Licensed Rights include Sui Generis Database Rights that 250 | apply to Your use of the Licensed Material: 251 | 252 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 253 | to extract, reuse, reproduce, and Share all or a substantial 254 | portion of the contents of the database; 255 | 256 | b. if You include all or a substantial portion of the database 257 | contents in a database in which You have Sui Generis Database 258 | Rights, then the database in which You have Sui Generis Database 259 | Rights (but not its individual contents) is Adapted Material, 260 | 261 | including for purposes of Section 3(b); and 262 | c. You must comply with the conditions in Section 3(a) if You Share 263 | all or a substantial portion of the contents of the database. 264 | 265 | For the avoidance of doubt, this Section 4 supplements and does not 266 | replace Your obligations under this Public License where the Licensed 267 | Rights include other Copyright and Similar Rights. 268 | 269 | 270 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 271 | 272 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 273 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 274 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 275 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 276 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 277 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 278 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 279 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 280 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 281 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 282 | 283 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 284 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 285 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 286 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 287 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 288 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 289 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 290 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 291 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 292 | 293 | c. The disclaimer of warranties and limitation of liability provided 294 | above shall be interpreted in a manner that, to the extent 295 | possible, most closely approximates an absolute disclaimer and 296 | waiver of all liability. 297 | 298 | 299 | Section 6 -- Term and Termination. 300 | 301 | a. This Public License applies for the term of the Copyright and 302 | Similar Rights licensed here. However, if You fail to comply with 303 | this Public License, then Your rights under this Public License 304 | terminate automatically. 305 | 306 | b. Where Your right to use the Licensed Material has terminated under 307 | Section 6(a), it reinstates: 308 | 309 | 1. automatically as of the date the violation is cured, provided 310 | it is cured within 30 days of Your discovery of the 311 | violation; or 312 | 313 | 2. upon express reinstatement by the Licensor. 314 | 315 | For the avoidance of doubt, this Section 6(b) does not affect any 316 | right the Licensor may have to seek remedies for Your violations 317 | of this Public License. 318 | 319 | c. For the avoidance of doubt, the Licensor may also offer the 320 | Licensed Material under separate terms or conditions or stop 321 | distributing the Licensed Material at any time; however, doing so 322 | will not terminate this Public License. 323 | 324 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 325 | License. 326 | 327 | 328 | Section 7 -- Other Terms and Conditions. 329 | 330 | a. The Licensor shall not be bound by any additional or different 331 | terms or conditions communicated by You unless expressly agreed. 332 | 333 | b. Any arrangements, understandings, or agreements regarding the 334 | Licensed Material not stated herein are separate from and 335 | independent of the terms and conditions of this Public License. 336 | 337 | 338 | Section 8 -- Interpretation. 339 | 340 | a. For the avoidance of doubt, this Public License does not, and 341 | shall not be interpreted to, reduce, limit, restrict, or impose 342 | conditions on any use of the Licensed Material that could lawfully 343 | be made without permission under this Public License. 344 | 345 | b. To the extent possible, if any provision of this Public License is 346 | deemed unenforceable, it shall be automatically reformed to the 347 | minimum extent necessary to make it enforceable. If the provision 348 | cannot be reformed, it shall be severed from this Public License 349 | without affecting the enforceability of the remaining terms and 350 | conditions. 351 | 352 | c. No term or condition of this Public License will be waived and no 353 | failure to comply consented to unless expressly agreed to by the 354 | Licensor. 355 | 356 | d. Nothing in this Public License constitutes or may be interpreted 357 | as a limitation upon, or waiver of, any privileges and immunities 358 | that apply to the Licensor or You, including from the legal 359 | processes of any jurisdiction or authority. 360 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ⚠️ **This repo has been archived, and is no longer maintained** ⚠️ 2 | 3 | HSDS 3.0 introduces an API specification which replaces this one, and is versioned as part of the HSDS standard. Please check for and raise issues on the [HSDS Specification Issue tracker](https://github.com/openreferral/specification/issues). 4 | 5 | Old issues on this repository have been closed if they were addressed as part of HSDS 3.0. Issues that remain open have been documented and will be linked to from appropriate places e.g. new issues in the HSDS Specification repository, or in community forums. If you wish to explicitly restart an existing discussion from an Issue in this repo, please open a new issue in the HSDS Specification repository and link back to the issue you want to continue. 6 | 7 | ## Open Referral Human Services Data API (HSDA) 8 | This is the repository for managing the Open Referral Human Services Data API (HSDA), providing a common interface for accessing organizations, locations, services, and contacts for 211 human services information. 9 | 10 | ### Key Links 11 | 12 | - [Open Referral Website](https://openreferral.org/) 13 | - [HSDS Documentation](http://docs.openreferral.org/en/latest/hsds/) 14 | - [HSDA Documentation](http://docs.openreferral.org/en/latest/hsda/) 15 | 16 | ### HSDA v2.0 OpenAPIs 17 | HSDA uses the [OpenAPI specification](http://spec.openapis.org/oas/v3.0.3) to describe the surface area of the API, providing a machine readable definition for all of HSDA. 18 | 19 | - **HSDA** ([OpenAPI on GitHub](https://github.com/openreferral/api-specification/blob/master/v2.0/openapi-hsda.yaml)) ([OpenAPI in Workspace](https://www.postman.com/api-evangelist/workspace/human-services-data-api-hsda/api/1a7abc09-be01-45fa-932c-7ed3d11e43ea?version=2c338c6f-4da0-452c-bb5d-ef834c1ce7cc&tab=overview)) ([Collection in Workspace](https://www.postman.com/api-evangelist/workspace/human-services-data-api-hsda/documentation/35240-b0c2834a-60ac-4076-87a9-aac143874f20)) 20 | - **HSDA Search** ([OpenAPI on GitHub](https://github.com/openreferral/api-specification/blob/master/v2.0/openapi-hsda-search.yaml)) ([OpenAPI in Workspace](https://www.postman.com/api-evangelist/workspace/human-services-data-api-hsda/api/eae721cd-11f6-4c46-824d-2775f5328561?version=5ad8f4f2-29af-4379-9c50-f8ecf2ba6e4b&tab=overview)) ([Collection Docs in Workspace](https://www.postman.com/api-evangelist/workspace/human-services-data-api-hsda/documentation/35240-e8cdaa8c-5444-4722-a6fd-181f120d49f3)) 21 | - **HSDA Meta** ([OpenAPI on GitHub](https://github.com/openreferral/api-specification/blob/master/v2.0/openapi-hsda-meta.yaml)) ([OpenAPI in Workspace](https://www.postman.com/api-evangelist/workspace/human-services-data-api-hsda/api/55b2862e-39c1-48e8-987f-e6c38df0323d?version=632b6e4c-f36c-473a-ad24-4b4e34cf410a&tab=overview)) ([Collection Docs in Workspace](https://www.postman.com/api-evangelist/workspace/human-services-data-api-hsda/documentation/35240-60e93ec1-23e9-4691-8a86-2d833dc2b896)) 22 | - **HSDA Taxonomy** ([OpenAPI on GitHub](https://github.com/openreferral/api-specification/blob/master/v2.0/openapi-hsda-taxonomy.yaml)) ([OpenAPI in Workspace](https://www.postman.com/api-evangelist/workspace/human-services-data-api-hsda/api/6fb08211-ff92-4923-a2fe-e000d9a86df9?version=2a3ed87a-1e53-460d-aec1-a5583910d2f1&tab=overview)) ([Collection Docs in Workspace](https://www.postman.com/api-evangelist/workspace/human-services-data-api-hsda/documentation/35240-fe401428-96ce-43c8-99a2-ca13929e71a5)) 23 | 24 | Drafts for v2.0 are currently being finalized and open for comments--here is how you can provide feedback: 25 | 26 | - [GitHub Issues](https://github.com/openreferral/api-specification/issues) - You can submit a Github issue with your feedback or OpenAPI reference. 27 | - [Postman API Comments](https://www.postman.com/api-evangelist/workspace/human-services-data-api-hsda/overview) - You can comment on each of the OpenAPI as well as each individual part of the API. 28 | 29 | Using OpenAPI helps ground the conversation around each of the APIs being evolved here. It significantly helps to submit the OpenAPI snippet with suggested changes, or highlight and common on the portion of the OpenAPI you wish to provide feedback on. Feel free to all submit pull requests on OpenAPIs via Github, or collections via Postman. 30 | 31 | You can follow along with work in [the public workspace for the HSDA APIs](https://www.postman.com/api-evangelist/workspace/human-services-data-api-hsda/overview) as we work to finalize and standardize the OpenAPIs for HSDA. Your feedback is appreciated. 32 | 33 | ### HSDA v2.0 Major Changes 34 | Here are the highlights of the HSDA v2.0 update, with the focus being on HSDS upgrade, but using the opportunity to clean up some other areas of the HSDA specification. 35 | 36 | - **HSDS v2.0 Update** - All of the schema were brought up to date with [version 2.0 of HSDS](https://docs.openreferral.org/en/latest/hsds/reference/). 37 | - **Standardized Querying** - We standardized the search across contacts, locations, organizations, and services, as well as for search--[the query standard is outline here](https://github.com/openreferral/api-specification/blob/master/query.md). 38 | - **Header Pagination** - A set of headers were added to each of the root level resources, showing you the details of pagination for each query. 39 | - **Status Codes** - Status codes were standardized across all responses, providing a consistent set of HTTP status codes for all API paths. 40 | - **RFC 7807 for Errors** - We standardized the error responses for 4xx and 5xx errors, providing a common approach to reporting problems using [RFC 7807 - Problem Details for HTTP APIs](https://tools.ietf.org/html/rfc7807). 41 | 42 | The new standardized query structure dealt with a number of the issues that were submitted, while allowing for basic keyword search, as well as a much more complex approach that allows querying by any field, while also having full control over what gets returned. 43 | -------------------------------------------------------------------------------- /query.md: -------------------------------------------------------------------------------- 1 | ## Query Design 2 | We are suggesting the adoption of [the GitHub API query design](https://docs.github.com/en/free-pro-team@latest/rest/reference/search) with some modifications. The approach strikes a nice balance between simple and complex querying which is especially important for ensuring HSDA is consumable by the widest possible audience. 3 | 4 | ## Query Parameters 5 | On all top level resources there will be the following query parameters available. 6 | 7 | - query 8 | - fields 9 | - resources 10 | - page 11 | - per_page 12 | - sort_by 13 | - order 14 | - format 15 | 16 | This keeps the querying of organizations, locations, services, and contacts easily queryable by any level of user simply by adjusting the query parameters. However, if you are an advanced user, you can pass in complete queries using the following patterns--I am not entirely sure how to document this, so I am going to articulate with examples: 17 | 18 | ### Basics 19 | You can articulate multiple query parameters using any field available in the HSDA schema. The only difference is you use a colon instead of equals, with transportation=bus in this statement: 20 | 21 | - query=transportation:bus 22 | 23 | You can also use a like, with this showing any url that is "like" .gov. 24 | 25 | - query=url like:.gov 26 | 27 | You can also do greater than or less than like in this example with date: 28 | 29 | - valid_from:>2019-01-01 30 | - valid_from:>=2019-01-01 31 | - valid_from:<2019-01-01 32 | - valid_from:<=2019-01-01 33 | 34 | You can also to between ranges on a field like with this example: 35 | 36 | valid_from:2019-01-01..2019-12-31 37 | 38 | I am still working to document and add some of the other approaches used by Github. 39 | 40 | ## Work to be Done 41 | 42 | - NOT - They have the ability to do NOT in two ways by explicitly saying it, or adding a - before property -- still trying to decide on simplest approach. 43 | - Operators - I don't fully understand or agree with Github's approach to operators, and probably will use a SQL like pattern of AND / OR with usage of parenthesis. 44 | -------------------------------------------------------------------------------- /v1.0/apis.yaml: -------------------------------------------------------------------------------- 1 | - name: "Human Services Data Specification (HSDS) (v1.0)" 2 | description: "The Human Services Data Specification (Open Referral) is an exchange format for publishing machine readable data about health, human, and social services, their locations, and the organizations that provide them. For the purposes of this specification, human services are broadly defined, ranging from food assistance to job training and health care. This is the current v1.0 definition for the specification." 3 | image: "https://s3.amazonaws.com/kinlane-productions/bw-icons/bw-family.png" 4 | tags: 5 | - "API" 6 | - "Schema" 7 | - "Data" 8 | - "Human Services" 9 | created: "2016-04-09" 10 | modified: "2017-04-10" 11 | url: "http://spec.open.referral.adopta.agency/" 12 | specificationVersion: "0.14" 13 | apis: 14 | - name: "Human Services Data Specification (HSDS)" 15 | description: "The Human Services Data Specification (Open Referral) is an exchange format for publishing machine readable data about health, human, and social services, their locations, and the organizations that provide them. For the purposes of this specification, human services are broadly defined, ranging from food assistance to job training and health care." 16 | image: "https://s3.amazonaws.com/kinlane-productions/bw-icons/bw-family.png" 17 | humanURL: "https://example.com" 18 | baseURL: "https://api.example.com" 19 | tags: 20 | - "API" 21 | - "Schema" 22 | - "Data" 23 | - "Human Services" 24 | properties: 25 | - type: "x-openapi-spec" 26 | url: "v10/openapi.yaml" 27 | - type: "x-json-schema" 28 | url: "v10/schema.yaml" 29 | x-common: [] 30 | include: [] 31 | maintainers: 32 | - FN: "Kin Lane" 33 | x-twitter: "apievangelist" 34 | email: "info@apievangelist.com" 35 | -------------------------------------------------------------------------------- /v1.0/openapi.yaml: -------------------------------------------------------------------------------- 1 | swagger: '2.0' 2 | info: 3 | title: "Open Referral API" 4 | description: "This is a specification describing the Open Referral API, using the Human Services Specification. This has been extracted from the Ohana API deployment, but will be standardized to refer to the universal standard that will apply to any Open Referral compliant API." 5 | termsOfService: "https://openreferral.org/documentation/" 6 | contact: 7 | name: Open Referral 8 | url: https://openreferral.org/ 9 | email: info@openreferral.org 10 | license: 11 | name: Open Data Commons Public Domain 12 | url: http://opendatacommons.org/licenses/pddl/ 13 | version: v1.0 14 | host: api.example.com 15 | basePath: "/" 16 | schemes: 17 | - https 18 | produces: 19 | - application/json 20 | paths: 21 | "/locations/": 22 | get: 23 | summary: Locations 24 | description: Retrieve all of the locations available. 25 | operationId: retrieveLocations 26 | parameters: 27 | - name: Accept 28 | in: header 29 | type: string 30 | required: true 31 | default: 'application/vnd.ohanapi+json; version=1' 32 | - name: page 33 | in: query 34 | type: string 35 | required: false 36 | - name: per_page 37 | in: query 38 | type: string 39 | required: false 40 | responses: 41 | '200': 42 | description: Successful response 43 | schema: 44 | type: array 45 | items: 46 | "$ref": "#/definitions/location" 47 | tags: 48 | - Locations 49 | post: 50 | summary: Locations 51 | description: Creates a new location in the system. 52 | operationId: createLocations 53 | parameters: 54 | - name: body 55 | in: body 56 | schema: 57 | type: array 58 | items: 59 | "$ref": "#/definitions/location" 60 | responses: 61 | '200': 62 | description: Successful response 63 | schema: 64 | type: array 65 | items: 66 | "$ref": "#/definitions/location" 67 | tags: 68 | - Locations 69 | "/locations/{location_id}/": 70 | get: 71 | summary: Location 72 | description: Retrieve all of the locations available in this database. 73 | operationId: retrieveLocation 74 | parameters: 75 | - name: Accept 76 | in: header 77 | type: string 78 | required: true 79 | default: 'application/vnd.ohanapi+json; version=1' 80 | - name: location_id 81 | in: path 82 | type: string 83 | required: true 84 | responses: 85 | '200': 86 | description: Successful response 87 | schema: 88 | type: array 89 | items: 90 | "$ref": "#/definitions/location" 91 | tags: 92 | - Locations 93 | patch: 94 | summary: Locations 95 | description: Updates an existing location in the system. 96 | operationId: updateLocation 97 | parameters: 98 | - name: location_id 99 | in: path 100 | type: string 101 | required: true 102 | - name: body 103 | in: body 104 | schema: 105 | type: array 106 | items: 107 | "$ref": "#/definitions/location" 108 | responses: 109 | '200': 110 | description: Successful response 111 | schema: 112 | type: array 113 | items: 114 | "$ref": "#/definitions/location" 115 | tags: 116 | - Locations 117 | delete: 118 | summary: Delete Location 119 | description: Deletes an existing location in the system. 120 | operationId: deleteLocation 121 | parameters: 122 | - name: location_id 123 | in: path 124 | type: string 125 | required: true 126 | responses: 127 | '200': 128 | description: Successful response 129 | schema: 130 | type: array 131 | items: 132 | "$ref": "#/definitions/location" 133 | tags: 134 | - Locations 135 | "/locations/{location_id}/nearby/": 136 | get: 137 | summary: Find Nearby Locations 138 | description: This endpoint retrieves all locations that are near the specified location. 139 | operationId: findNearbyLocations 140 | parameters: 141 | - name: Accept 142 | in: header 143 | type: string 144 | required: true 145 | default: 'application/vnd.ohanapi+json; version=1' 146 | - name: location_id 147 | in: path 148 | type: string 149 | required: true 150 | - in: query 151 | name: radius 152 | description: Default in miles is 0.5, minimum is 0.1. 153 | type: string 154 | - in: query 155 | name: page 156 | description: The particular page of results. Default is 1. 157 | type: string 158 | - in: query 159 | name: per_page 160 | description: Amount of locations to return per page. 161 | type: string 162 | responses: 163 | '200': 164 | description: Successful response 165 | schema: 166 | type: array 167 | items: 168 | "$ref": "#/definitions/location" 169 | tags: 170 | - Locations 171 | "/locations/{location_id}/address/": 172 | post: 173 | summary: Location Address 174 | description: Creates a new address for a location 175 | operationId: createLocationAddress 176 | parameters: 177 | - name: location_id 178 | in: path 179 | type: string 180 | required: true 181 | - name: body 182 | in: body 183 | schema: 184 | type: array 185 | items: 186 | "$ref": "#/definitions/address" 187 | responses: 188 | '200': 189 | description: Successful response 190 | schema: 191 | type: array 192 | items: 193 | "$ref": "#/definitions/address" 194 | tags: 195 | - Locations 196 | "/locations/{location_id}/address/{address_id}/": 197 | patch: 198 | summary: Update Location Address 199 | description: Updates an existing address for a location in the system. 200 | operationId: updateLocationAddress 201 | parameters: 202 | - name: location_id 203 | in: path 204 | type: string 205 | required: true 206 | - name: address_id 207 | in: path 208 | type: string 209 | required: true 210 | - name: body 211 | in: body 212 | schema: 213 | type: array 214 | items: 215 | "$ref": "#/definitions/location" 216 | responses: 217 | '200': 218 | description: Successful response 219 | schema: 220 | type: array 221 | items: 222 | "$ref": "#/definitions/address" 223 | tags: 224 | - Locations 225 | delete: 226 | summary: Delete Location Address 227 | description: Deletes an existing address for a location in the system. 228 | operationId: deleteLocationAddress 229 | parameters: 230 | - name: location_id 231 | in: path 232 | type: string 233 | required: true 234 | - name: address_id 235 | in: path 236 | type: string 237 | required: true 238 | responses: 239 | '200': 240 | description: Successful response 241 | schema: 242 | type: array 243 | items: 244 | "$ref": "#/definitions/address" 245 | tags: 246 | - Locations 247 | "/locations/{location_id}/mail_address/": 248 | post: 249 | summary: Location Mailing Address 250 | description: Creates a new mailing address for a location 251 | operationId: createLocationMailingAddress 252 | parameters: 253 | - name: location_id 254 | in: path 255 | type: string 256 | required: true 257 | - name: body 258 | in: body 259 | schema: 260 | type: array 261 | items: 262 | "$ref": "#/definitions/mailing_address" 263 | responses: 264 | '200': 265 | description: Successful response 266 | schema: 267 | type: array 268 | items: 269 | "$ref": "#/definitions/mailing_address" 270 | tags: 271 | - Locations 272 | "/locations/{location_id}/mail_address/{mail_address_id}/": 273 | patch: 274 | summary: Update Location Mailing Address 275 | description: Updates an existing mailing address for a location in the system. 276 | operationId: updateLocationMailingAddress 277 | parameters: 278 | - name: location_id 279 | in: path 280 | type: string 281 | required: true 282 | - name: mail_address_id 283 | in: path 284 | type: string 285 | required: true 286 | - name: body 287 | in: body 288 | schema: 289 | type: array 290 | items: 291 | "$ref": "#/definitions/mailing_address" 292 | responses: 293 | '200': 294 | description: Successful response 295 | schema: 296 | type: array 297 | items: 298 | "$ref": "#/definitions/mailing_address" 299 | tags: 300 | - Locations 301 | delete: 302 | summary: Delete Location Mailing Address 303 | description: Deletes an existing mailing address for a location in the system. 304 | operationId: deleteLocationMailingAddress 305 | parameters: 306 | - name: location_id 307 | in: path 308 | type: string 309 | required: true 310 | - name: mail_address_id 311 | in: path 312 | type: string 313 | required: true 314 | responses: 315 | '200': 316 | description: Successful response 317 | schema: 318 | type: array 319 | items: 320 | "$ref": "#/definitions/mailing_address" 321 | tags: 322 | - Locations 323 | "/locations/{location_id}/contacts/": 324 | get: 325 | summary: Get Location Contacts 326 | description: Retrieve all of the contacts for a location 327 | operationId: retrieveLocationContacts 328 | parameters: 329 | - name: location_id 330 | in: path 331 | type: string 332 | required: true 333 | - name: page 334 | in: query 335 | type: string 336 | required: false 337 | - name: per_page 338 | in: query 339 | type: string 340 | required: false 341 | responses: 342 | '200': 343 | description: Successful response 344 | schema: 345 | type: array 346 | items: 347 | "$ref": "#/definitions/contact" 348 | tags: 349 | - Locations 350 | post: 351 | summary: Create Location Contacts 352 | description: Creates a new contact for a location 353 | operationId: createLocationContact 354 | parameters: 355 | - name: body 356 | in: body 357 | schema: 358 | type: array 359 | items: 360 | "$ref": "#/definitions/contact" 361 | responses: 362 | '200': 363 | description: Successful response 364 | schema: 365 | type: array 366 | items: 367 | "$ref": "#/definitions/contact" 368 | tags: 369 | - Locations 370 | "/locations/{location_id}/contacts/{contact_id}/": 371 | patch: 372 | summary: Update Location Contact 373 | description: Updates an existing contact for a location. 374 | operationId: updateLocationContact 375 | parameters: 376 | - name: location_id 377 | in: path 378 | type: string 379 | required: true 380 | - name: contact_id 381 | in: path 382 | type: string 383 | required: true 384 | - name: body 385 | in: body 386 | schema: 387 | type: array 388 | items: 389 | "$ref": "#/definitions/contact" 390 | responses: 391 | '200': 392 | description: Successful response 393 | schema: 394 | type: array 395 | items: 396 | "$ref": "#/definitions/contact" 397 | tags: 398 | - Locations 399 | delete: 400 | summary: Delete Location Contact 401 | description: Deletes an existing contact for a location. 402 | operationId: deleteLocationContact 403 | parameters: 404 | - name: location_id 405 | in: path 406 | type: string 407 | required: true 408 | - name: contact_id 409 | in: path 410 | type: string 411 | required: true 412 | responses: 413 | '200': 414 | description: Successful response 415 | schema: 416 | type: array 417 | items: 418 | "$ref": "#/definitions/contact" 419 | tags: 420 | - Locations 421 | "/locations/{location_id}/phones/": 422 | post: 423 | summary: Create Location Phone 424 | description: Creates a new phone for a location 425 | operationId: createLocationPhone 426 | parameters: 427 | - name: location_id 428 | in: path 429 | type: string 430 | required: true 431 | - name: body 432 | in: body 433 | schema: 434 | type: array 435 | items: 436 | "$ref": "#/definitions/phone" 437 | responses: 438 | '200': 439 | description: Successful response 440 | schema: 441 | type: array 442 | items: 443 | "$ref": "#/definitions/phone" 444 | tags: 445 | - Locations 446 | "/locations/{location_id}/phones/{phone_id}/": 447 | patch: 448 | summary: Update Location Phone 449 | description: Updates an existing phone for a location. 450 | operationId: updateLocationPhone 451 | parameters: 452 | - name: location_id 453 | in: path 454 | type: string 455 | required: true 456 | - name: phone_id 457 | in: path 458 | type: string 459 | required: true 460 | - name: body 461 | in: body 462 | schema: 463 | type: array 464 | items: 465 | "$ref": "#/definitions/phone" 466 | responses: 467 | '200': 468 | description: Successful response 469 | schema: 470 | type: array 471 | items: 472 | "$ref": "#/definitions/phone" 473 | tags: 474 | - Locations 475 | delete: 476 | summary: Delete Location Phone 477 | description: Deletes an existing phone for a location. 478 | operationId: deleteLocationPhone 479 | parameters: 480 | - name: location_id 481 | in: path 482 | type: string 483 | required: true 484 | - name: phone_id 485 | in: path 486 | type: string 487 | required: true 488 | responses: 489 | '200': 490 | description: Successful response 491 | schema: 492 | type: array 493 | items: 494 | "$ref": "#/definitions/phone" 495 | tags: 496 | - Locations 497 | "/locations/{location_id}/services/": 498 | get: 499 | summary: Services 500 | description: Retrieve all services for this location 501 | operationId: retrieveLocationServices 502 | parameters: 503 | - name: Accept 504 | in: header 505 | type: string 506 | required: true 507 | default: 'application/vnd.ohanapi+json; version=1' 508 | - name: location_id 509 | in: path 510 | type: string 511 | required: true 512 | responses: 513 | '200': 514 | description: Successful response 515 | schema: 516 | type: array 517 | items: 518 | "$ref": "#/definitions/service" 519 | tags: 520 | - Locations 521 | post: 522 | summary: Create Location Service 523 | description: Creates a new service for a location 524 | operationId: createLocationService 525 | parameters: 526 | - name: location_id 527 | in: path 528 | type: string 529 | required: true 530 | - name: body 531 | in: body 532 | schema: 533 | type: array 534 | items: 535 | "$ref": "#/definitions/phone" 536 | responses: 537 | '200': 538 | description: Successful response 539 | schema: 540 | type: array 541 | items: 542 | "$ref": "#/definitions/phone" 543 | tags: 544 | - Locations 545 | "/locations/{location_id}/services/{service_id}/": 546 | patch: 547 | summary: Update Location Service 548 | description: Updates an existing service for a location. 549 | operationId: updateLocationService 550 | parameters: 551 | - name: location_id 552 | in: path 553 | type: string 554 | required: true 555 | - name: service_id 556 | in: path 557 | type: string 558 | required: true 559 | - name: body 560 | in: body 561 | schema: 562 | type: array 563 | items: 564 | "$ref": "#/definitions/service" 565 | responses: 566 | '200': 567 | description: Successful response 568 | schema: 569 | type: array 570 | items: 571 | "$ref": "#/definitions/service" 572 | tags: 573 | - Locations 574 | delete: 575 | summary: Delete Location Service 576 | description: Deletes an existing service for a location. 577 | operationId: deleteLocationService 578 | parameters: 579 | - name: location_id 580 | in: path 581 | type: string 582 | required: true 583 | - name: service_id 584 | in: path 585 | type: string 586 | required: true 587 | responses: 588 | '200': 589 | description: Successful response 590 | schema: 591 | type: array 592 | items: 593 | "$ref": "#/definitions/service" 594 | tags: 595 | - Locations 596 | "/organizations/": 597 | get: 598 | summary: Organizations 599 | description: Retrieve all of the organizations available in this database. 600 | operationId: retrieveLOrganizations 601 | parameters: 602 | - name: Accept 603 | in: header 604 | type: string 605 | required: true 606 | default: 'application/vnd.ohanapi+json; version=1' 607 | - name: page 608 | in: query 609 | type: string 610 | required: false 611 | - name: per_page 612 | in: query 613 | type: string 614 | required: false 615 | responses: 616 | '200': 617 | description: Successful response 618 | schema: 619 | type: array 620 | items: 621 | "$ref": "#/definitions/organization" 622 | tags: 623 | - Organizations 624 | post: 625 | summary: Organizations 626 | description: Creates a new organization in the system. 627 | operationId: createOrganizations 628 | parameters: 629 | - name: body 630 | in: body 631 | schema: 632 | type: array 633 | items: 634 | "$ref": "#/definitions/organization" 635 | responses: 636 | '200': 637 | description: Successful response 638 | schema: 639 | type: array 640 | items: 641 | "$ref": "#/definitions/organization" 642 | tags: 643 | - Organizations 644 | "/organizations/{organization_id}/": 645 | get: 646 | summary: Organizations 647 | description: Retrieve all of the organizations available in this database. 648 | operationId: retrieveLOrganization 649 | parameters: 650 | - name: organization_id 651 | in: path 652 | type: string 653 | required: true 654 | responses: 655 | '200': 656 | description: Successful response 657 | schema: 658 | type: array 659 | items: 660 | "$ref": "#/definitions/organization" 661 | tags: 662 | - Organizations 663 | patch: 664 | summary: Organizations 665 | description: Updates an existing organization in the system. 666 | operationId: updateOrganization 667 | parameters: 668 | - name: organization_id 669 | in: path 670 | type: string 671 | required: true 672 | - name: body 673 | in: body 674 | schema: 675 | type: array 676 | items: 677 | "$ref": "#/definitions/organization" 678 | responses: 679 | '200': 680 | description: Successful response 681 | schema: 682 | type: array 683 | items: 684 | "$ref": "#/definitions/organization" 685 | tags: 686 | - Organizations 687 | delete: 688 | summary: Organizations 689 | description: Deletes an existing organization in the system. 690 | operationId: deleteOrganization 691 | parameters: 692 | - name: organization_id 693 | in: path 694 | type: string 695 | required: true 696 | responses: 697 | '200': 698 | description: Successful response 699 | schema: 700 | type: array 701 | items: 702 | "$ref": "#/definitions/organization" 703 | tags: 704 | - Organizations 705 | "/organizations/{organization_id}/locations/": 706 | get: 707 | summary: Organization Locations 708 | description: This endpoint retrieves all locations that belong to a particular 709 | organization. 710 | operationId: retrieveLOrganizationLocations 711 | parameters: 712 | - name: Accept 713 | in: header 714 | type: string 715 | required: true 716 | default: 'application/vnd.ohanapi+json; version=1' 717 | - name: organization_id 718 | in: path 719 | type: string 720 | required: true 721 | responses: 722 | '200': 723 | description: Successful response 724 | schema: 725 | type: array 726 | items: 727 | "$ref": "#/definitions/location" 728 | tags: 729 | - Organizations 730 | "/search/": 731 | get: 732 | summary: Search 733 | description: This endpoint retrieves all locations that match the criteria based on the parameters below. Multiple parameters can be used at the same time, separated by an ampersand (&). 734 | operationId: searchLocations 735 | parameters: 736 | - name: Accept 737 | in: header 738 | type: string 739 | required: true 740 | default: 'application/vnd.ohanapi+json; version=1' 741 | - in: query 742 | name: category 743 | type: string 744 | - in: query 745 | name: email 746 | type: string 747 | - in: query 748 | name: keyword 749 | type: string 750 | - in: query 751 | name: language 752 | type: string 753 | - in: query 754 | name: lat_lng 755 | type: string 756 | - in: query 757 | name: location 758 | type: string 759 | - in: query 760 | name: org_name 761 | type: string 762 | - in: query 763 | name: radius 764 | type: string 765 | - in: query 766 | name: service_area 767 | type: string 768 | - in: query 769 | name: status 770 | type: string 771 | - in: query 772 | name: page 773 | type: string 774 | - in: query 775 | name: per_page 776 | type: string 777 | responses: 778 | '200': 779 | description: Successful response 780 | schema: 781 | type: array 782 | items: 783 | "$ref": "#/definitions/location" 784 | tags: 785 | - Search 786 | definitions: 787 | location: 788 | properties: 789 | id: 790 | description: 'Each location must have a unique identifier.' 791 | type: string 792 | organization_id: 793 | description: 'Each location must belong to a single organization. The identifier of the organization should be given here.' 794 | type: string 795 | name: 796 | description: 'The name of the location.' 797 | type: string 798 | alternate_name: 799 | description: 'An alternative name for the location.' 800 | type: string 801 | description: 802 | description: 'A description of this location.' 803 | type: string 804 | transportation: 805 | description: 'A description of the access to public or private transportation to and from the location.' 806 | type: string 807 | latitude: 808 | description: 'Y coordinate of location expressed in decimal degrees in WGS84 datum.' 809 | type: string 810 | longitude: 811 | description: 'X coordinate of location expressed in decimal degrees in WGS84 datum.' 812 | type: string 813 | organization: 814 | properties: 815 | id: 816 | description: 'Each organization must have a unique identifier.' 817 | type: string 818 | name: 819 | description: 'The official or public name of the organization.' 820 | type: string 821 | alternate_name: 822 | description: 'Alternative or commonly used name for the organization.' 823 | type: string 824 | description: 825 | description: 'A brief summary about the organization. It can contain markup such as HTML or Markdown.' 826 | type: string 827 | email: 828 | description: 'The contact e-mail address for the organization.' 829 | type: string 830 | url: 831 | description: 'The URL (website address) of the organization.' 832 | type: string 833 | tax_status: 834 | description: 'Government assigned tax designation for for tax-exempt organizations.' 835 | type: string 836 | tax_id: 837 | description: 'A government issued identifier used for the purpose of tax administration.' 838 | type: string 839 | year_incorporated: 840 | description: 'The year in which the organization was legally formed.' 841 | type: string 842 | legal_status: 843 | description: 'The legal status defines the conditions that an organization is operating under; e.g. non-profit, private corporation or a government organization.' 844 | type: string 845 | address: 846 | properties: 847 | id: 848 | description: 'Each physical address must have a unique identifier.' 849 | type: string 850 | location_id: 851 | description: 'The identifier of the location for which this is the address.' 852 | type: string 853 | attention: 854 | description: 'The person or entity whose attention should be sought at the location.' 855 | type: string 856 | address_1: 857 | description: 'The first line of the address.' 858 | type: string 859 | address_2: 860 | description: 'The second line of the address.' 861 | type: string 862 | address_3: 863 | description: 'The third line of the address.' 864 | type: string 865 | address_4: 866 | description: 'The fourth line of the address.' 867 | type: string 868 | city: 869 | description: 'The city in which the address is located.' 870 | type: string 871 | state_province: 872 | description: 'The state or province in which the address is located.' 873 | type: string 874 | postal_code: 875 | description: 'The postal code for the address.' 876 | type: string 877 | country: 878 | description: 'The country in which the address is located. This should be given as an ISO 3361-1 country code (two letter abbreviation).' 879 | type: string 880 | mailing_address: 881 | properties: 882 | id: 883 | description: 'Each postal address must have a unique identifier.' 884 | type: string 885 | location_id: 886 | description: 'The identifier of the location for which this is the postal address.' 887 | type: string 888 | attention: 889 | description: 'The person or entity for whose attention mail should be marked.' 890 | type: string 891 | address_1: 892 | description: 'The first line of the address.' 893 | type: string 894 | address_2: 895 | description: 'The second line of the address.' 896 | type: string 897 | address_3: 898 | description: 'The third line of the address.' 899 | type: string 900 | address_4: 901 | description: 'The fourth line of the address.' 902 | type: string 903 | city: 904 | description: 'The city in which the address is located.' 905 | type: string 906 | state_province: 907 | description: 'The state or province in which the address is located.' 908 | type: string 909 | postal_code: 910 | description: 'The postal code for the address.' 911 | type: string 912 | country: 913 | description: 'The country in which the address is located.' 914 | type: string 915 | service: 916 | properties: 917 | id: 918 | description: 'Each service must have a unique identifier.' 919 | type: string 920 | organization_id: 921 | description: 'The identifier of the organization that provides this service.' 922 | type: string 923 | program_id: 924 | description: 'The identifier of the program this service is delivered under.' 925 | type: string 926 | location_id: 927 | description: 'The identifier of the location where this service is delivered.' 928 | type: string 929 | name: 930 | description: 'The official or public name of the service.' 931 | type: string 932 | alternate_name: 933 | description: 'Alternative or commonly used name for a service.' 934 | type: string 935 | description: 936 | description: 'A description of the service.' 937 | type: string 938 | url: 939 | description: 'URL of the service.' 940 | type: string 941 | email: 942 | description: 'Email address for the service.' 943 | type: string 944 | status: 945 | description: 'The current status of the service.' 946 | type: string 947 | application_process: 948 | description: 'The steps needed to access the service.' 949 | type: string 950 | wait_time: 951 | description: 'Time a client may expect to wait before receiving a service.' 952 | type: string 953 | taxonomy_ids: 954 | description: 'A comma separated list of identifiers from the taxonomy table.' 955 | type: string 956 | phone: 957 | properties: 958 | id: 959 | description: 'Each entry must have a unique identifier.' 960 | type: string 961 | location_id: 962 | description: 'The identifier of the location where this phone number is located.' 963 | type: string 964 | service_id: 965 | description: 'The identifier of the service for which this is the phone number.' 966 | type: string 967 | organization_id: 968 | description: 'The identifier of the organisation for which this is the phone number.' 969 | type: string 970 | contact_id: 971 | description: 'The identifier of the contact for which this is the phone number.' 972 | type: string 973 | number: 974 | description: 'The phone number.' 975 | type: string 976 | extension: 977 | description: 'The extension of the phone number.' 978 | type: number 979 | type: 980 | description: 'Whether the phone number relates to a fixed or cellular phone.' 981 | type: string 982 | department: 983 | description: 'The department for which this is the phone number.' 984 | type: string 985 | contact: 986 | properties: 987 | id: 988 | description: 'Each contact must have a unique identifier.' 989 | type: string 990 | organization_id: 991 | description: 'The identifier of the organization for which this is a contact.' 992 | type: string 993 | service_id: 994 | description: 'The identifier of the service for which this is a contact.' 995 | type: string 996 | name: 997 | description: 'The name of the person.' 998 | type: string 999 | title: 1000 | description: 'The job title of the person.' 1001 | type: string 1002 | department: 1003 | description: 'The department that the person is part of.' 1004 | type: string 1005 | email: 1006 | description: 'The email address of the person.' 1007 | type: string -------------------------------------------------------------------------------- /v1.2/openapi-hsda-bulk.yaml: -------------------------------------------------------------------------------- 1 | swagger: '2.0' 2 | info: 3 | title: "Human Services Data Bulk API" 4 | description: "This is a specification describing the Human Services Data API, using the Human Services Data Specification (HSDS). This is a service for handling bulk loading of data into any HSDA service, allowing each POST and PUT to be queued up as a job, and be run on schedule, or based upon other events." 5 | termsOfService: "https://openreferral.org/documentation/" 6 | contact: 7 | name: Open Referral 8 | url: https://openreferral.org/ 9 | email: info@openreferral.org 10 | license: 11 | name: Creative Commons Attribution Share-Alike 4.0 12 | url: https://creativecommons.org/licenses/by-sa/4.0/ 13 | version: v1.0 14 | host: hsda.buapi.adopta.agency 15 | basePath: / 16 | schemes: 17 | - http 18 | produces: 19 | - application/json 20 | paths: 21 | /contacts/: 22 | post: 23 | summary: Submit Bulk Contact 24 | description: Submit Bulk Contact 25 | operationId: submitBulkContacts 26 | parameters: 27 | - in: body 28 | name: body 29 | schema: 30 | $ref: '#/definitions/contact' 31 | security: 32 | - appid: [] 33 | - appkey: [] 34 | responses: 35 | '200': 36 | description: Contact Response 37 | schema: 38 | type: array 39 | items: 40 | $ref: "#/definitions/contact" 41 | tags: 42 | - Contacts 43 | /locations/: 44 | post: 45 | summary: Submit Bulk Location 46 | description: Submit Bulk Location 47 | operationId: SubmitBulkLocations 48 | parameters: 49 | - in: body 50 | name: body 51 | schema: 52 | $ref: '#/definitions/location' 53 | security: 54 | - appid: [] 55 | - appkey: [] 56 | responses: 57 | '200': 58 | description: Location Response 59 | schema: 60 | type: array 61 | items: 62 | $ref: "#/definitions/location" 63 | tags: 64 | - Locations 65 | /organizations/: 66 | post: 67 | summary: Submit Bulk Organizations 68 | description: Submit Bulk Organizations 69 | operationId: submitBulkOrganizations 70 | parameters: 71 | - in: body 72 | name: body 73 | schema: 74 | $ref: '#/definitions/organization' 75 | security: 76 | - appid: [] 77 | - appkey: [] 78 | responses: 79 | '200': 80 | description: Organization Response 81 | schema: 82 | type: array 83 | items: 84 | $ref: "#/definitions/organization" 85 | tags: 86 | - Organizations 87 | /services/: 88 | post: 89 | summary: Submit Bulk Service 90 | description: Submit Bulk Service 91 | operationId: submitBulkServices 92 | parameters: 93 | - in: body 94 | name: body 95 | schema: 96 | $ref: '#/definitions/service' 97 | security: 98 | - appid: [] 99 | - appkey: [] 100 | responses: 101 | '200': 102 | description: Service Response 103 | schema: 104 | type: array 105 | items: 106 | $ref: "#/definitions/service" 107 | tags: 108 | - Services 109 | /jobs/: 110 | get: 111 | summary: Get Jobs 112 | description: Get Jobs 113 | operationId: listJobs 114 | parameters: 115 | - in: query 116 | type: string 117 | name: query 118 | description: A query to filter list by (up to provider to determine what to search) 119 | - in: query 120 | type: string 121 | name: queries 122 | description: A comma separate list of queries with specific fields. 123 | - in: query 124 | type: number 125 | name: page 126 | default: 0 127 | description: The particular page of results. 128 | - in: query 129 | type: number 130 | name: per_page 131 | default: 25 132 | description: Number of records to return per page, up to 100. 133 | - in: query 134 | type: string 135 | name: sort_by 136 | default: name 137 | description: Which field to sort by. 138 | - in: query 139 | type: string 140 | name: order 141 | default: asc 142 | description: Which order to sort by (asc,desc). 143 | responses: 144 | '200': 145 | description: Job Response 146 | schema: 147 | type: array 148 | items: 149 | $ref: "#/definitions/job" 150 | '500': 151 | description: Error Response 152 | schema: 153 | type: array 154 | items: 155 | $ref: "#/definitions/error_response" 156 | tags: 157 | - Jobs 158 | /jobs/{job_id}/run/: 159 | get: 160 | summary: Run Job 161 | description: Run a specific job 162 | operationId: runJob 163 | parameters: 164 | - in: path 165 | type: string 166 | name: job_id 167 | required: true 168 | description: The unique id of the job to run. 169 | responses: 170 | '200': 171 | description: Job Complete Response 172 | schema: 173 | type: array 174 | items: 175 | $ref: "#/definitions/job" 176 | '500': 177 | description: Error Response 178 | schema: 179 | type: array 180 | items: 181 | $ref: "#/definitions/error_response" 182 | tags: 183 | - Jobs 184 | securityDefinitions: 185 | appid: 186 | type: apiKey 187 | in: header 188 | name: x-appid 189 | appkey: 190 | type: apiKey 191 | in: header 192 | name: x-appkey 193 | definitions: 194 | accessibility_for_disabilities: 195 | properties: 196 | id: 197 | description: 'Each entry must have a unique identifier.' 198 | type: string 199 | location_id: 200 | description: 'The identifier of the location for which the entry describes the accessibility provision.' 201 | type: string 202 | accessibility: 203 | description: 'Description of assistance or infrastructure that facilitate access to clients with 204 | disabilities.' 205 | type: string 206 | details: 207 | description: 'Any further details relating to the relevant accessibility arrangements at this location. E.g. whether advance notice is required to use an accessibility facility.' 208 | type: string 209 | required: 210 | - id 211 | contact: 212 | properties: 213 | id: 214 | description: 'Each contact must have a unique identifier.' 215 | type: string 216 | organization_id: 217 | description: 'The identifier of the organization for which this is a contact.' 218 | type: string 219 | service_id: 220 | description: 'The identifier of the service for which this is a contact.' 221 | type: string 222 | service_at_location_id: 223 | description: 'The identifier of the ‘service at location’ table entry, when this contact is specific to a service in a particular location.' 224 | type: string 225 | name: 226 | description: 'The name of the person.' 227 | type: string 228 | title: 229 | description: 'The job title of the person.' 230 | type: string 231 | department: 232 | description: 'The department that the person is part of.' 233 | type: string 234 | email: 235 | description: 'The email address of the person.' 236 | type: string 237 | phones: 238 | type: "array" 239 | items: 240 | $ref: "#/definitions/phone" 241 | required: 242 | - id 243 | eligibility: 244 | properties: 245 | id: 246 | description: 'Each entry must have a unique identifier.' 247 | type: string 248 | service_id: 249 | description: 'The identifier of the service for which this entry describes the eligibility criteria.' 250 | type: string 251 | eligibility: 252 | description: 'The rules or guidelines that determine who can receive the service.' 253 | type: string 254 | required: 255 | - id 256 | fee: 257 | properties: 258 | id: 259 | description: 'Each entry must have a unique identifier.' 260 | type: string 261 | service_id: 262 | description: 'The identifier of the service for which this entry describes the costs of service.' 263 | type: string 264 | fee: 265 | description: 'A listing of the costs of services, including free ones.' 266 | type: string 267 | required: 268 | - id 269 | funding: 270 | properties: 271 | id: 272 | description: 'Each entry must have a unique identifier.' 273 | type: string 274 | organization_id: 275 | description: 'The identifier of the organization for which this entry describes the source of funding.' 276 | type: string 277 | service_id: 278 | description: 'The identifier of the service for which this entry describes the source of funding.' 279 | type: string 280 | source: 281 | description: 'Source of funds for organization or service.' 282 | type: string 283 | required: 284 | - id 285 | holiday_schedule: 286 | properties: 287 | id: 288 | description: 'Each entry must have a unique identifier.' 289 | type: string 290 | service_id: 291 | description: 'The identifier of the service for which this is the holiday schedule.' 292 | type: string 293 | location_id: 294 | description: 'The identifier of the location for which this is the holiday schedule.' 295 | type: string 296 | service_at_location_id: 297 | description: 'The identifier of the ‘service at location’ table entry, when this schedule is specific to a service in a particular location.' 298 | type: string 299 | closed: 300 | description: 'Indicates if a service or location is closed during a public holiday.' 301 | type: boolean 302 | opens_at: 303 | description: 'The time when a service or location opens. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 304 | type: string 305 | closes_at: 306 | description: 'The time when a service or location closes. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 307 | type: string 308 | start_date: 309 | description: 'The first day that a service or location is closed during a public or private holiday.' 310 | type: string 311 | end_date: 312 | description: 'The last day that a service or location is closed during a public or private holiday.' 313 | type: string 314 | required: 315 | - id 316 | - closed 317 | - start_date 318 | - end_date 319 | interpretation_services: 320 | properties: 321 | id: 322 | description: 'Each service must have a unique identifier.' 323 | type: string 324 | service_id: 325 | description: 'The identifier of the services for which the entry describes the interpretation services available.' 326 | type: string 327 | language: 328 | description: 'Languages, other than English, for which interpretation is available. Languages are listed as ISO639-1 codes.' 329 | type: string 330 | required: 331 | - id 332 | language: 333 | properties: 334 | id: 335 | description: 'Each language must have a unique identifier.' 336 | type: string 337 | service_id: 338 | description: 'The identifier of the service for which the entry describes the languages in which services are delivered.' 339 | type: string 340 | location_id: 341 | description: 'The identifier of the location for which the entry describes the languages in which services are delivered.' 342 | type: string 343 | language: 344 | description: 'Languages, other than English, in which the service is delivered. Languages are listed as ISO639-1 codes..' 345 | type: string 346 | required: 347 | - id 348 | location: 349 | properties: 350 | id: 351 | description: 'Each location must have a unique identifier.' 352 | type: string 353 | organization_id: 354 | description: 'Each location must belong to a single organization. The identifier of the organization should be given here.' 355 | type: string 356 | name: 357 | description: 'The name of the location.' 358 | type: string 359 | alternate_name: 360 | description: 'An alternative name for the location.' 361 | type: string 362 | description: 363 | description: 'A description of this location.' 364 | type: string 365 | transportation: 366 | description: 'A description of the access to public or private transportation to and from the location.' 367 | type: string 368 | latitude: 369 | description: 'Y coordinate of location expressed in decimal degrees in WGS84 datum.' 370 | type: string 371 | longitude: 372 | description: 'X coordinate of location expressed in decimal degrees in WGS84 datum.' 373 | type: string 374 | regular_schedule: 375 | type: "array" 376 | items: 377 | $ref: "#/definitions/regular_schedule" 378 | holiday_schedule: 379 | type: "array" 380 | items: 381 | $ref: "#/definitions/holiday_schedule" 382 | languages: 383 | type: "array" 384 | items: 385 | $ref: "#/definitions/language" 386 | postal_address: 387 | type: "array" 388 | items: 389 | $ref: "#/definitions/postal_address" 390 | physical_address: 391 | type: "array" 392 | items: 393 | $ref: "#/definitions/physical_address" 394 | phones: 395 | type: "array" 396 | items: 397 | $ref: "#/definitions/phone" 398 | service: 399 | type: "array" 400 | items: 401 | $ref: "#/definitions/service" 402 | accessibility_for_disabilities: 403 | type: "array" 404 | items: 405 | $ref: "#/definitions/accessibility_for_disabilities" 406 | required: 407 | - id 408 | organization: 409 | properties: 410 | id: 411 | description: 'Each organization must have a unique identifier.' 412 | type: string 413 | name: 414 | description: 'The official or public name of the organization.' 415 | type: string 416 | alternate_name: 417 | description: 'Alternative or commonly used name for the organization.' 418 | type: string 419 | description: 420 | description: 'A brief summary about the organization. It can contain markup such as HTML or Markdow.' 421 | type: string 422 | email: 423 | description: 'The contact e-mail address for the organization.' 424 | type: string 425 | url: 426 | description: 'The URL (website address) of the organization.' 427 | type: string 428 | tax_status: 429 | description: 'Government assigned tax designation for for tax-exempt organizations.' 430 | type: string 431 | tax_id: 432 | description: 'A government issued identifier used for the purpose of tax administration.' 433 | type: string 434 | year_incorporated: 435 | description: 'The year in which the organization was legally formed.' 436 | type: string 437 | legal_status: 438 | description: 'The legal status defines the conditions that an organization is operating under; e.g. non-profit, private corporation or a government organization.' 439 | type: string 440 | contacts: 441 | type: "array" 442 | items: 443 | $ref: "#/definitions/contact" 444 | funding: 445 | type: "array" 446 | items: 447 | $ref: "#/definitions/funding" 448 | locations: 449 | type: "array" 450 | items: 451 | $ref: "#/definitions/location" 452 | programs: 453 | type: "array" 454 | items: 455 | $ref: "#/definitions/program" 456 | services: 457 | type: "array" 458 | items: 459 | $ref: "#/definitions/service" 460 | required: 461 | - id 462 | - description 463 | payment_accepted: 464 | properties: 465 | id: 466 | description: 'Each entry must have a unique identifier.' 467 | type: string 468 | service_id: 469 | description: 'The identifier of the services for which the entry describes the accepted payment methods.' 470 | type: string 471 | payment: 472 | description: 'The methods of payment accepted for the service.' 473 | type: string 474 | required: 475 | - id 476 | phone: 477 | properties: 478 | id: 479 | description: 'Each entry must have a unique identifier.' 480 | type: string 481 | location_id: 482 | description: 'The identifier of the location where this phone number is located.' 483 | type: string 484 | service_id: 485 | description: 'The identifier of the service for which this is the phone number.' 486 | type: string 487 | organization_id: 488 | description: 'The identifier of the organisation for which this is the phone number.' 489 | type: string 490 | contact_id: 491 | description: 'The identifier of the contact for which this is the phone number.' 492 | type: string 493 | service_at_location_id: 494 | description: 'The identifier of the ‘service at location’ table entry, when this phone number is specific to a service in a particular location.' 495 | type: string 496 | number: 497 | description: 'The phone number.' 498 | type: string 499 | extension: 500 | description: 'The extension of the phone number.' 501 | type: string 502 | type: 503 | description: 'Whether the phone number relates to a fixed or cellular phone.' 504 | type: string 505 | department: 506 | description: 'The department for which this is the phone number.' 507 | type: string 508 | language: 509 | description: 'A comma separated list of ISO 639-1, or ISO 639-2 [language codes](available at http://www.loc.gov/standards/iso639-2/php/code_list.php) to represent the languages available from this phone service. The three-letter codes from ISO 639-2 provide greater accuracy when describing variants of languages, which may be relevant to particular communities.' 510 | type: string 511 | description: 512 | description: 'A description providing extra information about the phone service (e.g. any special arrangements for accessing, or details of availability at particular times.' 513 | type: string 514 | required: 515 | - id 516 | - number 517 | physical_address: 518 | properties: 519 | id: 520 | description: 'Each physical address must have a unique identifier.' 521 | type: string 522 | location_id: 523 | description: 'The identifier of the location for which this is the address.' 524 | type: string 525 | attention: 526 | description: 'The person or entity whose attention should be sought at the location.' 527 | type: string 528 | address_1: 529 | description: 'The first line of the address.' 530 | type: string 531 | address_2: 532 | description: 'The second line of the address.' 533 | type: string 534 | address_3: 535 | description: 'The third line of the address.' 536 | type: string 537 | address_4: 538 | description: 'The fourth line of the address.' 539 | type: string 540 | city: 541 | description: 'The city in which the address is located.' 542 | type: string 543 | region: 544 | description: 'The region in which the address is located (optional).' 545 | type: string 546 | state_province: 547 | description: 'The state or province in which the address is located.' 548 | type: string 549 | postal_code: 550 | description: 'The postal code for the address.' 551 | type: string 552 | country: 553 | description: 'The country in which the address is located. This should be given as an ISO 3361-1 country code (two letter abbreviation).' 554 | type: string 555 | required: 556 | - id 557 | - address_1 558 | - city 559 | - state_province 560 | - postal_code 561 | - country 562 | postal_address: 563 | properties: 564 | id: 565 | description: 'Each postal address must have a unique identifier.' 566 | type: string 567 | location_id: 568 | description: 'The identifier of the location for which this is the postal address.' 569 | type: string 570 | attention: 571 | description: 'The person or entity for whose attention mail should be marked.' 572 | type: string 573 | address_1: 574 | description: 'The first line of the address.' 575 | type: string 576 | address_2: 577 | description: 'The second line of the address.' 578 | type: string 579 | address_3: 580 | description: 'The third line of the address.' 581 | type: string 582 | address_4: 583 | description: 'The fourth line of the address.' 584 | type: string 585 | city: 586 | description: 'The city in which the address is located.' 587 | type: string 588 | region: 589 | description: 'The region in which the address is located (optional).' 590 | type: string 591 | state_province: 592 | description: 'The state or province in which the address is located.' 593 | type: string 594 | postal_code: 595 | description: 'The postal code for the address.' 596 | type: string 597 | country: 598 | description: 'The country in which the address is located.' 599 | type: string 600 | required: 601 | - id 602 | program: 603 | properties: 604 | id: 605 | description: 'Each program must have a unique identifier.' 606 | type: string 607 | organization_id: 608 | description: 'Each program must belong to a single organization. The identifier of the organization should be given here.' 609 | type: string 610 | name: 611 | description: 'The name of the program.' 612 | type: string 613 | alternate_name: 614 | description: 'NeAn alternative name for the program.' 615 | type: string 616 | required: 617 | - id 618 | - organization_id 619 | - name 620 | regular_schedule: 621 | properties: 622 | id: 623 | description: 'Each entry must have a unique identifier.' 624 | type: string 625 | service_id: 626 | description: 'The identifier of the service for which this is the regular schedule.' 627 | type: string 628 | location_id: 629 | description: 'The identifier of the location for which this is the regular schedule.' 630 | type: string 631 | service_at_location_id: 632 | description: 'The identifier of the ‘service at location’ table entry, when this schedule is specific to a service in a particular location.' 633 | type: string 634 | weekday: 635 | description: 'The day of the week that this entry relates to.' 636 | type: string 637 | opens_at: 638 | description: 'The time when a service or location opens. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 639 | type: string 640 | closes_at: 641 | description: 'The time when a service or location opens. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 642 | type: string 643 | required: 644 | - id 645 | - weekday 646 | required_document: 647 | properties: 648 | id: 649 | description: 'Each document must have a unique identifier.' 650 | type: string 651 | service_id: 652 | description: 'The identifier of the service for which this entry describes the required document.' 653 | type: string 654 | document: 655 | description: 'The document required to apply for or receive the service. e.g. Government-issued ID, EU Passport.' 656 | type: string 657 | required: 658 | - id 659 | service: 660 | properties: 661 | id: 662 | description: 'Each service must have a unique identifier.' 663 | type: string 664 | organization_id: 665 | description: 'The identifier of the organization that provides this service.' 666 | type: string 667 | program_id: 668 | description: 'The identifier of the program this service is delivered under.' 669 | type: string 670 | location_id: 671 | description: 'The identifier of the location where this service is delivered.' 672 | type: string 673 | name: 674 | description: 'The official or public name of the service.' 675 | type: string 676 | alternate_name: 677 | description: 'Alternative or commonly used name for a service.' 678 | type: string 679 | description: 680 | description: 'A description of the service.' 681 | type: string 682 | url: 683 | description: 'URL of the service.' 684 | type: string 685 | email: 686 | description: 'Email address for the service.' 687 | type: string 688 | status: 689 | description: 'The current status of the service.' 690 | type: string 691 | interpretation_services: 692 | description: 'A description of any interpretation services available for accessing this service.' 693 | type: string 694 | application_process: 695 | description: 'The steps needed to access the service.' 696 | type: string 697 | wait_time: 698 | description: 'Time a client may expect to wait before receiving a service.' 699 | type: string 700 | accreditations: 701 | description: 'Details of any accreditations. Accreditation is the formal evaluation of an organization or program against best practice standards set by an accrediting organization.' 702 | type: string 703 | licenses: 704 | description: 'An organization may have a license issued by a government entity to operate legally. A list of any such licenses can be provided here.' 705 | type: string 706 | contacts: 707 | type: "array" 708 | items: 709 | $ref: "#/definitions/contact" 710 | eligibility: 711 | type: "array" 712 | items: 713 | $ref: "#/definitions/eligibility" 714 | fees: 715 | type: "array" 716 | items: 717 | $ref: "#/definitions/fee" 718 | funding: 719 | type: "array" 720 | items: 721 | $ref: "#/definitions/funding" 722 | regular_schedule: 723 | type: "array" 724 | items: 725 | $ref: "#/definitions/regular_schedule" 726 | holiday_schedule: 727 | type: "array" 728 | items: 729 | $ref: "#/definitions/holiday_schedule" 730 | languages: 731 | type: "array" 732 | items: 733 | $ref: "#/definitions/language" 734 | payment_accepted: 735 | type: "array" 736 | items: 737 | $ref: "#/definitions/payment_accepted" 738 | phones: 739 | type: "array" 740 | items: 741 | $ref: "#/definitions/phone" 742 | required_documents: 743 | type: "array" 744 | items: 745 | $ref: "#/definitions/required_document" 746 | service_area: 747 | type: "array" 748 | items: 749 | $ref: "#/definitions/service_area" 750 | required: 751 | - id 752 | - organization_id 753 | - name 754 | - status 755 | service_area: 756 | properties: 757 | id: 758 | description: 'Each service area must have a unique identifier.' 759 | type: string 760 | service_id: 761 | description: 'The identifier of the service for which this entry describes the service area.' 762 | type: string 763 | service_area: 764 | description: 'The geographic area where a service is available. This is a free-text description, and so may be precise or indefinite as necessary.' 765 | type: string 766 | description: 767 | description: 'A more detailed description of this service area. Used to provide any additional information that cannot be communicated using the structured area and geometry fields.' 768 | type: string 769 | required: 770 | - id 771 | job: 772 | properties: 773 | id: 774 | description: 'The unique id of the job' 775 | type: string 776 | path: 777 | description: 'The path the job is being run against.' 778 | type: string 779 | verb: 780 | description: 'The verb the job is being run against.' 781 | type: string 782 | status: 783 | description: 'The status of the job.' 784 | type: string 785 | complete: 786 | description: 'The date the job was completed.' 787 | type: string 788 | format: date 789 | error_response: 790 | properties: 791 | code: 792 | description: 'Repeat the HTTP status code' 793 | type: integer 794 | message: 795 | description: 'A plain language message explaining the error' 796 | type: integer 797 | -------------------------------------------------------------------------------- /v1.2/openapi-hsda-management.yaml: -------------------------------------------------------------------------------- 1 | swagger: '2.0' 2 | info: 3 | title: "Human Services Data Management API" 4 | description: "This is a complimentary API to the HSDA API focusing just on management." 5 | termsOfService: "https://openreferral.org/documentation/" 6 | contact: 7 | name: Open Referral 8 | url: https://openreferral.org/ 9 | email: info@openreferral.org 10 | license: 11 | name: Creative Commons Attribution Share-Alike 4.0 12 | url: https://creativecommons.org/licenses/by-sa/4.0/ 13 | version: v1.0 14 | host: hsda.management.api.adopta.agency 15 | basePath: / 16 | schemes: 17 | - http 18 | produces: 19 | - application/json 20 | paths: 21 | /users/: 22 | get: 23 | summary: Get Users 24 | description: Get Users 25 | operationId: listUsers 26 | parameters: 27 | - in: query 28 | type: string 29 | name: query 30 | description: A query to filter list by (up to provider to determine what to search) 31 | - in: query 32 | type: string 33 | name: queries 34 | description: A comma separate list of queries with specific fields. 35 | - in: query 36 | type: number 37 | name: page 38 | default: 0 39 | description: The particular page of results. 40 | - in: query 41 | type: number 42 | name: per_page 43 | default: 25 44 | description: Number of records to return per page, up to 100. 45 | - in: query 46 | type: string 47 | name: sortby 48 | default: name 49 | description: Which field to sort by. 50 | - in: query 51 | type: string 52 | name: order 53 | default: asc 54 | description: Which order to sort by (asc,desc). 55 | security: 56 | - appid: [] 57 | - appkey: [] 58 | responses: 59 | '200': 60 | description: Item Response 61 | schema: 62 | type: array 63 | items: 64 | $ref: "#/definitions/user" 65 | '403': 66 | description: No Access Response 67 | schema: 68 | type: array 69 | items: 70 | $ref: "#/definitions/error_response" 71 | '500': 72 | description: Error Response 73 | schema: 74 | type: array 75 | items: 76 | $ref: "#/definitions/error_response" 77 | tags: 78 | - Users 79 | post: 80 | summary: Add User 81 | description: Add User 82 | operationId: addUser 83 | parameters: 84 | - in: body 85 | name: body 86 | schema: 87 | $ref: '#/definitions/user' 88 | security: 89 | - appid: [] 90 | - appkey: [] 91 | responses: 92 | '200': 93 | description: User Response 94 | schema: 95 | type: array 96 | items: 97 | $ref: "#/definitions/user" 98 | '403': 99 | description: No Access Response 100 | schema: 101 | type: array 102 | items: 103 | $ref: "#/definitions/error_response" 104 | '500': 105 | description: Error Response 106 | schema: 107 | type: array 108 | items: 109 | $ref: "#/definitions/error_response" 110 | tags: 111 | - Users 112 | /users/auth/: 113 | get: 114 | summary: Auth Users 115 | description: Auth Users 116 | operationId: authUser 117 | parameters: 118 | - in: query 119 | type: string 120 | name: login 121 | description: A users login 122 | - in: query 123 | type: string 124 | name: code 125 | description: A uses code 126 | security: 127 | - appid: [] 128 | - appkey: [] 129 | responses: 130 | '200': 131 | description: Auth Response 132 | schema: 133 | type: array 134 | items: 135 | $ref: "#/definitions/service" 136 | '403': 137 | description: No Access Response 138 | schema: 139 | type: array 140 | items: 141 | $ref: "#/definitions/error_response" 142 | '500': 143 | description: Error Response 144 | schema: 145 | type: array 146 | items: 147 | $ref: "#/definitions/error_response" 148 | tags: 149 | - Users 150 | /users/{user_id}/: 151 | get: 152 | summary: Get User 153 | description: Get User 154 | operationId: getUser 155 | parameters: 156 | - in: path 157 | required: true 158 | type: string 159 | name: user_id 160 | description: 'The user id.' 161 | security: 162 | - appid: [] 163 | - appkey: [] 164 | responses: 165 | '200': 166 | description: User Response 167 | schema: 168 | type: array 169 | items: 170 | $ref: "#/definitions/user" 171 | '403': 172 | description: No Access Response 173 | schema: 174 | type: array 175 | items: 176 | $ref: "#/definitions/error_response" 177 | '500': 178 | description: Error Response 179 | schema: 180 | type: array 181 | items: 182 | $ref: "#/definitions/error_response" 183 | tags: 184 | - Users 185 | put: 186 | summary: Update User 187 | description: Update an existing user. 188 | operationId: updateUser 189 | parameters: 190 | - in: path 191 | required: true 192 | type: string 193 | name: user_id 194 | description: 'The user id.' 195 | - in: body 196 | name: body 197 | schema: 198 | $ref: '#/definitions/user' 199 | security: 200 | - appid: [] 201 | - appkey: [] 202 | responses: 203 | '200': 204 | description: User Response 205 | schema: 206 | type: array 207 | items: 208 | $ref: "#/definitions/user" 209 | '403': 210 | description: No Access Response 211 | schema: 212 | type: array 213 | items: 214 | $ref: "#/definitions/error_response" 215 | '500': 216 | description: Error Response 217 | schema: 218 | type: array 219 | items: 220 | $ref: "#/definitions/error_response" 221 | tags: 222 | - Users 223 | delete: 224 | summary: Delete User 225 | description: Delete User 226 | operationId: deleteUser 227 | parameters: 228 | - in: path 229 | required: true 230 | type: string 231 | name: user_id 232 | description: 'The user id.' 233 | tags: 234 | - Users 235 | security: 236 | - appid: [] 237 | - appkey: [] 238 | responses: 239 | '200': 240 | description: User Response 241 | schema: 242 | type: array 243 | items: 244 | $ref: "#/definitions/user" 245 | '403': 246 | description: No Access Response 247 | schema: 248 | type: array 249 | items: 250 | $ref: "#/definitions/error_response" 251 | '500': 252 | description: Error Response 253 | schema: 254 | type: array 255 | items: 256 | $ref: "#/definitions/error_response" 257 | /services/: 258 | get: 259 | summary: Get Services 260 | description: Get Services 261 | operationId: listServices 262 | parameters: 263 | - in: query 264 | type: string 265 | name: query 266 | description: A query to filter list by (up to provider to determine what to search) 267 | - in: query 268 | type: string 269 | name: queries 270 | description: A comma separate list of queries with specific fields. 271 | - in: query 272 | type: number 273 | name: page 274 | default: 0 275 | description: The particular page of results. 276 | - in: query 277 | type: number 278 | name: per_page 279 | default: 25 280 | description: Number of records to return per page, up to 100. 281 | - in: query 282 | type: string 283 | name: sortby 284 | default: name 285 | description: Which field to sort by. 286 | - in: query 287 | type: string 288 | name: order 289 | default: asc 290 | description: Which order to sort by (asc,desc). 291 | security: 292 | - appid: [] 293 | - appkey: [] 294 | responses: 295 | '200': 296 | description: Item Response 297 | schema: 298 | type: array 299 | items: 300 | $ref: "#/definitions/service" 301 | '403': 302 | description: No Access Response 303 | schema: 304 | type: array 305 | items: 306 | $ref: "#/definitions/error_response" 307 | '500': 308 | description: Error Response 309 | schema: 310 | type: array 311 | items: 312 | $ref: "#/definitions/error_response" 313 | tags: 314 | - Services 315 | post: 316 | summary: Add Service 317 | description: Add Service 318 | operationId: addService 319 | parameters: 320 | - in: body 321 | name: body 322 | schema: 323 | $ref: '#/definitions/service' 324 | security: 325 | - appid: [] 326 | - appkey: [] 327 | responses: 328 | '200': 329 | description: Service Response 330 | schema: 331 | type: array 332 | items: 333 | $ref: "#/definitions/service" 334 | '403': 335 | description: No Access Response 336 | schema: 337 | type: array 338 | items: 339 | $ref: "#/definitions/error_response" 340 | '500': 341 | description: Error Response 342 | schema: 343 | type: array 344 | items: 345 | $ref: "#/definitions/error_response" 346 | tags: 347 | - Services 348 | /services/{service_id}/: 349 | get: 350 | summary: Get Service 351 | description: Get Service 352 | operationId: getService 353 | parameters: 354 | - in: path 355 | required: true 356 | type: string 357 | name: service_id 358 | description: 'The service id.' 359 | security: 360 | - appid: [] 361 | - appkey: [] 362 | responses: 363 | '200': 364 | description: Service Response 365 | schema: 366 | type: array 367 | items: 368 | $ref: "#/definitions/service" 369 | '403': 370 | description: No Access Response 371 | schema: 372 | type: array 373 | items: 374 | $ref: "#/definitions/error_response" 375 | '500': 376 | description: Error Response 377 | schema: 378 | type: array 379 | items: 380 | $ref: "#/definitions/error_response" 381 | tags: 382 | - Services 383 | put: 384 | summary: Update Service 385 | description: Update an existing service. 386 | operationId: updateService 387 | parameters: 388 | - in: path 389 | required: true 390 | type: string 391 | name: service_id 392 | description: 'The service id.' 393 | - in: body 394 | name: body 395 | schema: 396 | $ref: '#/definitions/service' 397 | security: 398 | - appid: [] 399 | - appkey: [] 400 | responses: 401 | '200': 402 | description: Service Response 403 | schema: 404 | type: array 405 | items: 406 | $ref: "#/definitions/service" 407 | '403': 408 | description: No Access Response 409 | schema: 410 | type: array 411 | items: 412 | $ref: "#/definitions/error_response" 413 | '500': 414 | description: Error Response 415 | schema: 416 | type: array 417 | items: 418 | $ref: "#/definitions/error_response" 419 | tags: 420 | - Services 421 | delete: 422 | summary: Delete Service 423 | description: Delete Service 424 | operationId: deleteService 425 | parameters: 426 | - in: path 427 | required: true 428 | type: string 429 | name: service_id 430 | description: 'The service id.' 431 | tags: 432 | - Services 433 | security: 434 | - appid: [] 435 | - appkey: [] 436 | responses: 437 | '200': 438 | description: Service Response 439 | schema: 440 | type: array 441 | items: 442 | $ref: "#/definitions/service" 443 | '403': 444 | description: No Access Response 445 | schema: 446 | type: array 447 | items: 448 | $ref: "#/definitions/error_response" 449 | '500': 450 | description: Error Response 451 | schema: 452 | type: array 453 | items: 454 | $ref: "#/definitions/error_response" 455 | securityDefinitions: 456 | appid: 457 | type: apiKey 458 | in: header 459 | name: x-appid 460 | appkey: 461 | type: apiKey 462 | in: header 463 | name: x-appkey 464 | definitions: 465 | user: 466 | properties: 467 | id: 468 | description: 'Each entry must have a unique identifier.' 469 | type: string 470 | login : 471 | description: 'The login for a user.' 472 | type: string 473 | name: 474 | description: 'The name for a user.' 475 | type: string 476 | email: 477 | description: 'The email for a user.' 478 | type: string 479 | code: 480 | description: 'The unique code for user (Github Token)' 481 | type: string 482 | required: 483 | - id 484 | - login 485 | - name 486 | - email 487 | - code 488 | service: 489 | properties: 490 | id: 491 | description: 'Each entry must have a unique identifier.' 492 | type: string 493 | user_id : 494 | description: 'The id for the user.' 495 | type: string 496 | name: 497 | description: 'The name of the service the user has access to.' 498 | type: string 499 | path: 500 | description: 'The path user has access to.' 501 | type: string 502 | verb: 503 | description: 'The verb user has access to.' 504 | type: string 505 | required: 506 | - id 507 | - user_id 508 | - path 509 | - verb 510 | error_response: 511 | properties: 512 | code: 513 | description: 'Repeat the HTTP status code' 514 | type: integer 515 | message: 516 | description: 'A plain language message explaining the error' 517 | type: integer 518 | -------------------------------------------------------------------------------- /v1.2/openapi-hsda-meta.yaml: -------------------------------------------------------------------------------- 1 | swagger: '2.0' 2 | info: 3 | title: "Human Services Data Meta API" 4 | description: "This is a complimentary API to the HSDA API focusing just on meta information." 5 | termsOfService: "https://openreferral.org/documentation/" 6 | contact: 7 | name: Open Referral 8 | url: https://openreferral.org/ 9 | email: info@openreferral.org 10 | license: 11 | name: Open Data Commons Public Domain 12 | url: https://creativecommons.org/licenses/by-sa/4.0/ 13 | version: v1.0 14 | host: hsda.meta.api.adopta.agency 15 | basePath: / 16 | schemes: 17 | - http 18 | produces: 19 | - application/json 20 | paths: 21 | /meta/: 22 | get: 23 | summary: Get Meta 24 | description: Get Meta 25 | operationId: listMeta 26 | security: 27 | - appid: [] 28 | - appkey: [] 29 | responses: 30 | '200': 31 | description: Item Response 32 | schema: 33 | type: array 34 | items: 35 | $ref: "#/definitions/meta" 36 | '403': 37 | description: No Access Response 38 | schema: 39 | type: array 40 | items: 41 | $ref: "#/definitions/error_response" 42 | '500': 43 | description: Error Response 44 | schema: 45 | type: array 46 | items: 47 | $ref: "#/definitions/error_response" 48 | tags: 49 | - Meta 50 | post: 51 | summary: Add Meta 52 | description: Add Meta 53 | operationId: addMeta 54 | parameters: 55 | - in: body 56 | name: body 57 | schema: 58 | $ref: '#/definitions/meta' 59 | security: 60 | - appid: [] 61 | - appkey: [] 62 | responses: 63 | '200': 64 | description: Meta Response 65 | schema: 66 | type: array 67 | items: 68 | $ref: "#/definitions/meta" 69 | '403': 70 | description: No Access Response 71 | schema: 72 | type: array 73 | items: 74 | $ref: "#/definitions/error_response" 75 | '500': 76 | description: Error Response 77 | schema: 78 | type: array 79 | items: 80 | $ref: "#/definitions/error_response" 81 | tags: 82 | - Meta 83 | /meta/{meta_id}/: 84 | get: 85 | summary: Get Meta 86 | description: Get Meta 87 | operationId: getMeta 88 | parameters: 89 | - in: path 90 | required: true 91 | type: string 92 | name: meta_id 93 | description: 'The meta id.' 94 | security: 95 | - appid: [] 96 | - appkey: [] 97 | responses: 98 | '200': 99 | description: Meta Response 100 | schema: 101 | type: array 102 | items: 103 | $ref: "#/definitions/meta" 104 | '403': 105 | description: No Access Response 106 | schema: 107 | type: array 108 | items: 109 | $ref: "#/definitions/error_response" 110 | '500': 111 | description: Error Response 112 | schema: 113 | type: array 114 | items: 115 | $ref: "#/definitions/error_response" 116 | tags: 117 | - Meta 118 | put: 119 | summary: Update Meta 120 | description: Update an existing meta entry. 121 | operationId: updateMeta 122 | parameters: 123 | - in: path 124 | required: true 125 | type: string 126 | name: meta_id 127 | description: 'The meta id.' 128 | - in: body 129 | name: body 130 | schema: 131 | $ref: '#/definitions/meta' 132 | security: 133 | - appid: [] 134 | - appkey: [] 135 | responses: 136 | '200': 137 | description: Meta Response 138 | schema: 139 | type: array 140 | items: 141 | $ref: "#/definitions/meta" 142 | '403': 143 | description: No Access Response 144 | schema: 145 | type: array 146 | items: 147 | $ref: "#/definitions/error_response" 148 | '500': 149 | description: Error Response 150 | schema: 151 | type: array 152 | items: 153 | $ref: "#/definitions/error_response" 154 | tags: 155 | - Meta 156 | securityDefinitions: 157 | appid: 158 | type: apiKey 159 | in: header 160 | name: x-appid 161 | appkey: 162 | type: apiKey 163 | in: header 164 | name: x-appkey 165 | definitions: 166 | meta: 167 | properties: 168 | id: 169 | description: 'Each entry must have a unique identifier.' 170 | type: string 171 | timestamp: 172 | description: 'The timestamp for entry (yyyy-mm-dd)' 173 | type: string 174 | appid: 175 | description: 'The appid for entry.' 176 | type: string 177 | system: 178 | description: 'The system for entry.' 179 | type: string 180 | path: 181 | description: 'The path for entry.' 182 | type: string 183 | verb: 184 | description: 'The verb for entry.' 185 | type: string 186 | request_parameters: 187 | description: 'The parameters for entry.' 188 | type: string 189 | request_headers: 190 | description: 'The header for entry.' 191 | type: string 192 | request_body: 193 | description: 'The body for entry.' 194 | type: string 195 | response_body: 196 | description: 'The body for entry.' 197 | type: string 198 | status: 199 | description: 'The status of this entry (Complete, Waiting)' 200 | type: string 201 | required: 202 | - id 203 | rollback: 204 | properties: 205 | id: 206 | description: 'The id for the rollback.' 207 | type: string 208 | rollforward: 209 | properties: 210 | id: 211 | description: 'The id for the roll foward.' 212 | type: string 213 | errors: 214 | properties: 215 | id: 216 | description: 'The id for the errors.' 217 | type: string 218 | weblogs: 219 | properties: 220 | id: 221 | description: 'The id for the web logs.' 222 | type: string 223 | error_response: 224 | properties: 225 | code: 226 | description: 'Repeat the HTTP status code' 227 | type: integer 228 | message: 229 | description: 'A plain language message explaining the error' 230 | type: integer 231 | -------------------------------------------------------------------------------- /v1.2/openapi-hsda-orchestration.yaml: -------------------------------------------------------------------------------- 1 | swagger: '2.0' 2 | info: 3 | title: "Human Services Data Orchestration API" 4 | description: "This is a complimentary API to the HSDA API focusing just on orchestration." 5 | termsOfService: "https://openreferral.org/documentation/" 6 | contact: 7 | name: Open Referral 8 | url: https://openreferral.org/ 9 | email: info@openreferral.org 10 | license: 11 | name: Open Data Commons Public Domain 12 | url: https://creativecommons.org/licenses/by-sa/4.0/ 13 | version: v1.0 14 | host: hsda.orchestation.api.adopta.agency 15 | basePath: / 16 | schemes: 17 | - http 18 | produces: 19 | - application/json 20 | paths: 21 | /services/: 22 | get: 23 | summary: Services 24 | description: The services being used across ochestration. 25 | operationId: getServices 26 | security: 27 | - appid: [] 28 | - appkey: [] 29 | responses: 30 | '200': 31 | description: Service Response 32 | schema: 33 | type: array 34 | items: 35 | $ref: "#/definitions/service" 36 | '500': 37 | description: Error Response 38 | schema: 39 | type: array 40 | items: 41 | $ref: "#/definitions/error_response" 42 | tags: 43 | - Services 44 | post: 45 | summary: Add Service 46 | description: Add Service 47 | operationId: addService 48 | parameters: 49 | - in: body 50 | name: body 51 | schema: 52 | $ref: '#/definitions/service' 53 | security: 54 | - appid: [] 55 | - appkey: [] 56 | responses: 57 | '200': 58 | description: Service Response 59 | schema: 60 | type: array 61 | items: 62 | $ref: "#/definitions/service" 63 | '403': 64 | description: No Access Response 65 | schema: 66 | type: array 67 | items: 68 | $ref: "#/definitions/error_response" 69 | '500': 70 | description: Error Response 71 | schema: 72 | type: array 73 | items: 74 | $ref: "#/definitions/error_response" 75 | tags: 76 | - Services 77 | /services/{service_id}/: 78 | get: 79 | summary: Get Service 80 | description: Get Service 81 | operationId: getService 82 | parameters: 83 | - in: path 84 | required: true 85 | type: string 86 | name: service_id 87 | description: 'The service id.' 88 | responses: 89 | '200': 90 | description: Service Response 91 | schema: 92 | type: array 93 | items: 94 | $ref: "#/definitions/service" 95 | '500': 96 | description: Error Response 97 | schema: 98 | type: array 99 | items: 100 | $ref: "#/definitions/error_response" 101 | tags: 102 | - Services 103 | put: 104 | summary: Update Service 105 | description: Update an existing service. 106 | operationId: updateService 107 | parameters: 108 | - in: path 109 | required: true 110 | type: string 111 | name: service_id 112 | description: 'The service id.' 113 | - in: body 114 | name: body 115 | schema: 116 | $ref: '#/definitions/service' 117 | security: 118 | - appid: [] 119 | - appkey: [] 120 | responses: 121 | '200': 122 | description: Service Response 123 | schema: 124 | type: array 125 | items: 126 | $ref: "#/definitions/service" 127 | '403': 128 | description: No Access Response 129 | schema: 130 | type: array 131 | items: 132 | $ref: "#/definitions/error_response" 133 | '500': 134 | description: Error Response 135 | schema: 136 | type: array 137 | items: 138 | $ref: "#/definitions/error_response" 139 | tags: 140 | - Services 141 | delete: 142 | summary: Delete Service 143 | description: Delete Service 144 | operationId: deleteServiceComplete 145 | parameters: 146 | - in: path 147 | required: true 148 | type: string 149 | name: service_id 150 | description: 'The service id.' 151 | tags: 152 | - Services 153 | security: 154 | - appid: [] 155 | - appkey: [] 156 | responses: 157 | '200': 158 | description: Service Response 159 | schema: 160 | type: array 161 | items: 162 | $ref: "#/definitions/service" 163 | '403': 164 | description: No Access Response 165 | schema: 166 | type: array 167 | items: 168 | $ref: "#/definitions/error_response" 169 | '500': 170 | description: Error Response 171 | schema: 172 | type: array 173 | items: 174 | $ref: "#/definitions/error_response" 175 | /events/: 176 | get: 177 | summary: Events 178 | description: The are the events that can occur. 179 | operationId: getEvents 180 | security: 181 | - appid: [] 182 | - appkey: [] 183 | responses: 184 | '200': 185 | description: Event Response 186 | schema: 187 | type: array 188 | items: 189 | $ref: "#/definitions/event" 190 | '500': 191 | description: Error Response 192 | schema: 193 | type: array 194 | items: 195 | $ref: "#/definitions/error_response" 196 | tags: 197 | - Events 198 | post: 199 | summary: Add Event 200 | description: Add Event 201 | operationId: addEvent 202 | parameters: 203 | - in: body 204 | name: body 205 | schema: 206 | $ref: '#/definitions/event' 207 | security: 208 | - appid: [] 209 | - appkey: [] 210 | responses: 211 | '200': 212 | description: Event Response 213 | schema: 214 | type: array 215 | items: 216 | $ref: "#/definitions/event" 217 | '403': 218 | description: No Access Response 219 | schema: 220 | type: array 221 | items: 222 | $ref: "#/definitions/error_response" 223 | '500': 224 | description: Error Response 225 | schema: 226 | type: array 227 | items: 228 | $ref: "#/definitions/error_response" 229 | tags: 230 | - Events 231 | /events/{event_id}/: 232 | get: 233 | summary: Get Event 234 | description: Get Event 235 | operationId: getEvent 236 | parameters: 237 | - in: path 238 | required: true 239 | type: string 240 | name: event_id 241 | description: 'The event id.' 242 | responses: 243 | '200': 244 | description: Event Response 245 | schema: 246 | type: array 247 | items: 248 | $ref: "#/definitions/event" 249 | '500': 250 | description: Error Response 251 | schema: 252 | type: array 253 | items: 254 | $ref: "#/definitions/error_response" 255 | tags: 256 | - Events 257 | put: 258 | summary: Update Event 259 | description: Update an existing event. 260 | operationId: updateEvent 261 | parameters: 262 | - in: path 263 | required: true 264 | type: string 265 | name: event_id 266 | description: 'The event id.' 267 | - in: body 268 | name: body 269 | schema: 270 | $ref: '#/definitions/event' 271 | security: 272 | - appid: [] 273 | - appkey: [] 274 | responses: 275 | '200': 276 | description: Event Response 277 | schema: 278 | type: array 279 | items: 280 | $ref: "#/definitions/event" 281 | '403': 282 | description: No Access Response 283 | schema: 284 | type: array 285 | items: 286 | $ref: "#/definitions/error_response" 287 | '500': 288 | description: Error Response 289 | schema: 290 | type: array 291 | items: 292 | $ref: "#/definitions/error_response" 293 | tags: 294 | - Events 295 | delete: 296 | summary: Delete Event 297 | description: Delete Event 298 | operationId: deleteEventComplete 299 | parameters: 300 | - in: path 301 | required: true 302 | type: string 303 | name: event_id 304 | description: 'The event id.' 305 | tags: 306 | - Events 307 | security: 308 | - appid: [] 309 | - appkey: [] 310 | responses: 311 | '200': 312 | description: Event Response 313 | schema: 314 | type: array 315 | items: 316 | $ref: "#/definitions/event" 317 | '403': 318 | description: No Access Response 319 | schema: 320 | type: array 321 | items: 322 | $ref: "#/definitions/error_response" 323 | '500': 324 | description: Error Response 325 | schema: 326 | type: array 327 | items: 328 | $ref: "#/definitions/error_response" 329 | /webhooks/: 330 | get: 331 | summary: Webhooks 332 | description: The webhooks currently in operation. 333 | operationId: getWebhooks 334 | security: 335 | - appid: [] 336 | - appkey: [] 337 | responses: 338 | '200': 339 | description: Webhook Response 340 | schema: 341 | type: array 342 | items: 343 | $ref: "#/definitions/webhook" 344 | '500': 345 | description: Error Response 346 | schema: 347 | type: array 348 | items: 349 | $ref: "#/definitions/error_response" 350 | tags: 351 | - Webhooks 352 | post: 353 | summary: Add Webhook 354 | description: Add Webhook 355 | operationId: addWebhook 356 | parameters: 357 | - in: body 358 | name: body 359 | schema: 360 | $ref: '#/definitions/webhook' 361 | security: 362 | - appid: [] 363 | - appkey: [] 364 | responses: 365 | '200': 366 | description: Webhook Response 367 | schema: 368 | type: array 369 | items: 370 | $ref: "#/definitions/webhook" 371 | '403': 372 | description: No Access Response 373 | schema: 374 | type: array 375 | items: 376 | $ref: "#/definitions/error_response" 377 | '500': 378 | description: Error Response 379 | schema: 380 | type: array 381 | items: 382 | $ref: "#/definitions/error_response" 383 | tags: 384 | - Webhooks 385 | /webhooks/{webhook_id}/: 386 | get: 387 | summary: Get Webhook 388 | description: Get Webhook 389 | operationId: getWebhook 390 | parameters: 391 | - in: path 392 | required: true 393 | type: string 394 | name: webhook_id 395 | description: The webhook id. 396 | responses: 397 | '200': 398 | description: Webhook Response 399 | schema: 400 | type: array 401 | items: 402 | $ref: "#/definitions/webhook" 403 | '500': 404 | description: Error Response 405 | schema: 406 | type: array 407 | items: 408 | $ref: "#/definitions/error_response" 409 | tags: 410 | - Webhooks 411 | put: 412 | summary: Update Webhook 413 | description: Update Webhook 414 | operationId: updateWebhook 415 | parameters: 416 | - in: path 417 | required: true 418 | type: string 419 | name: webhook_id 420 | description: The webhook id. 421 | - in: body 422 | name: body 423 | schema: 424 | $ref: '#/definitions/webhook' 425 | security: 426 | - appid: [] 427 | - appkey: [] 428 | responses: 429 | '200': 430 | description: Webhook Response 431 | schema: 432 | type: array 433 | items: 434 | $ref: "#/definitions/webhook" 435 | '403': 436 | description: No Access Response 437 | schema: 438 | type: array 439 | items: 440 | $ref: "#/definitions/error_response" 441 | '500': 442 | description: Error Response 443 | schema: 444 | type: array 445 | items: 446 | $ref: "#/definitions/error_response" 447 | tags: 448 | - Webhooks 449 | delete: 450 | summary: Delete Webhook 451 | description: Delete Webhook 452 | operationId: deleteWebhook 453 | parameters: 454 | - in: path 455 | required: true 456 | type: string 457 | name: webhook_id 458 | description: 'The webhook id.' 459 | tags: 460 | - Webhooks 461 | security: 462 | - appid: [] 463 | - appkey: [] 464 | responses: 465 | '200': 466 | description: Webhook Response 467 | schema: 468 | type: array 469 | items: 470 | $ref: "#/definitions/webhook" 471 | '403': 472 | description: No Access Response 473 | schema: 474 | type: array 475 | items: 476 | $ref: "#/definitions/error_response" 477 | '500': 478 | description: Error Response 479 | schema: 480 | type: array 481 | items: 482 | $ref: "#/definitions/error_response" 483 | securityDefinitions: 484 | appid: 485 | type: apiKey 486 | in: header 487 | name: x-appid 488 | appkey: 489 | type: apiKey 490 | in: header 491 | name: x-appkey 492 | definitions: 493 | service: 494 | properties: 495 | id: 496 | description: 'Each entry must have a unique identifier.' 497 | type: string 498 | user_id : 499 | description: 'The id for the user.' 500 | type: string 501 | service: 502 | description: 'The service name.' 503 | type: string 504 | path: 505 | description: 'The path name.' 506 | type: string 507 | verb: 508 | description: 'The verb.' 509 | type: string 510 | required: 511 | - id 512 | - user_id 513 | - path 514 | - verb 515 | event: 516 | properties: 517 | id: 518 | description: 'Each event has unique identifier.' 519 | type: string 520 | service: 521 | description: 'The name of the service the event will run against.' 522 | type: string 523 | path: 524 | description: 'The path the event will run against.' 525 | type: string 526 | verb: 527 | description: 'The verb the event will run against.' 528 | type: string 529 | description: 530 | description: 'The description of the event.' 531 | type: string 532 | required: 533 | - id 534 | - service 535 | - path 536 | - verb 537 | - description 538 | webhook: 539 | properties: 540 | id: 541 | description: 'Each webhook has a unique identifier.' 542 | type: string 543 | event_id: 544 | description: 'The event id for this webhook.' 545 | type: string 546 | required: 547 | - id 548 | - event_id 549 | error_response: 550 | properties: 551 | code: 552 | description: 'Repeat the HTTP status code' 553 | type: integer 554 | message: 555 | description: 'A plain language message explaining the error' 556 | type: integer 557 | -------------------------------------------------------------------------------- /v1.2/openapi-hsda-search.yaml: -------------------------------------------------------------------------------- 1 | swagger: '2.0' 2 | info: 3 | title: "Human Services Data Search API" 4 | description: "This is a complimentary API to the HSDA API focusing just on search." 5 | termsOfService: "https://openreferral.org/documentation/" 6 | contact: 7 | name: Open Referral 8 | url: https://openreferral.org/ 9 | email: info@openreferral.org 10 | license: 11 | name: Open Data Commons Public Domain 12 | url: https://creativecommons.org/licenses/by-sa/4.0/ 13 | version: v1.0 14 | host: hsda.search.api.adopta.agency 15 | basePath: / 16 | schemes: 17 | - http 18 | produces: 19 | - application/json 20 | paths: 21 | /search/: 22 | get: 23 | summary: Search 24 | description: Search across organizations, locations, services, and contacts 25 | operationId: search 26 | parameters: 27 | - in: query 28 | type: string 29 | name: query 30 | description: A query to filter list by (up to provider to determine what to search) 31 | - in: query 32 | type: string 33 | name: queries 34 | description: A comma separate list of queries with specific fields. 35 | - in: query 36 | type: number 37 | name: page 38 | default: 0 39 | description: The particular page of results. 40 | - in: query 41 | type: number 42 | name: per_page 43 | default: 25 44 | description: Number of records to return per page, up to 100. 45 | - in: query 46 | type: string 47 | name: sortby 48 | default: name 49 | description: Which field to sort by. 50 | - in: query 51 | type: string 52 | name: order 53 | default: asc 54 | description: Which order to sort by (asc,desc). 55 | responses: 56 | '200': 57 | description: Item Response 58 | schema: 59 | type: array 60 | items: 61 | $ref: "#/definitions/search" 62 | '500': 63 | description: Error Response 64 | schema: 65 | type: array 66 | items: 67 | $ref: "#/definitions/error_response" 68 | tags: 69 | - Search 70 | securityDefinitions: 71 | appid: 72 | type: apiKey 73 | in: header 74 | name: x-appid 75 | appkey: 76 | type: apiKey 77 | in: header 78 | name: x-appkey 79 | definitions: 80 | search: 81 | properties: 82 | organizations: 83 | type: "array" 84 | items: 85 | $ref: "#/definitions/organization" 86 | locations: 87 | type: "array" 88 | items: 89 | $ref: "#/definitions/location" 90 | services: 91 | type: "array" 92 | items: 93 | $ref: "#/definitions/service" 94 | accessibility_for_disabilities: 95 | properties: 96 | id: 97 | description: 'Each entry must have a unique identifier.' 98 | type: string 99 | location_id: 100 | description: 'The identifier of the location for which the entry describes the accessibility provision.' 101 | type: string 102 | accessibility: 103 | description: 'Description of assistance or infrastructure that facilitate access to clients with 104 | disabilities.' 105 | type: string 106 | details: 107 | description: 'Any further details relating to the relevant accessibility arrangements at this location. E.g. whether advance notice is required to use an accessibility facility.' 108 | type: string 109 | required: 110 | - id 111 | contact: 112 | properties: 113 | id: 114 | description: 'Each contact must have a unique identifier.' 115 | type: string 116 | organization_id: 117 | description: 'The identifier of the organization for which this is a contact.' 118 | type: string 119 | service_id: 120 | description: 'The identifier of the service for which this is a contact.' 121 | type: string 122 | service_at_location_id: 123 | description: 'The identifier of the ‘service at location’ table entry, when this contact is specific to a service in a particular location.' 124 | type: string 125 | name: 126 | description: 'The name of the person.' 127 | type: string 128 | title: 129 | description: 'The job title of the person.' 130 | type: string 131 | department: 132 | description: 'The department that the person is part of.' 133 | type: string 134 | email: 135 | description: 'The email address of the person.' 136 | type: string 137 | phones: 138 | type: "array" 139 | items: 140 | $ref: "#/definitions/phone" 141 | required: 142 | - id 143 | eligibility: 144 | properties: 145 | id: 146 | description: 'Each entry must have a unique identifier.' 147 | type: string 148 | service_id: 149 | description: 'The identifier of the service for which this entry describes the eligibility criteria.' 150 | type: string 151 | eligibility: 152 | description: 'The rules or guidelines that determine who can receive the service.' 153 | type: string 154 | required: 155 | - id 156 | fee: 157 | properties: 158 | id: 159 | description: 'Each entry must have a unique identifier.' 160 | type: string 161 | service_id: 162 | description: 'The identifier of the service for which this entry describes the costs of service.' 163 | type: string 164 | fee: 165 | description: 'A listing of the costs of services, including free ones.' 166 | type: string 167 | required: 168 | - id 169 | funding: 170 | properties: 171 | id: 172 | description: 'Each entry must have a unique identifier.' 173 | type: string 174 | organization_id: 175 | description: 'The identifier of the organization for which this entry describes the source of funding.' 176 | type: string 177 | service_id: 178 | description: 'The identifier of the service for which this entry describes the source of funding.' 179 | type: string 180 | source: 181 | description: 'Source of funds for organization or service.' 182 | type: string 183 | required: 184 | - id 185 | holiday_schedule: 186 | properties: 187 | id: 188 | description: 'Each entry must have a unique identifier.' 189 | type: string 190 | service_id: 191 | description: 'The identifier of the service for which this is the holiday schedule.' 192 | type: string 193 | location_id: 194 | description: 'The identifier of the location for which this is the holiday schedule.' 195 | type: string 196 | service_at_location_id: 197 | description: 'The identifier of the ‘service at location’ table entry, when this schedule is specific to a service in a particular location.' 198 | type: string 199 | closed: 200 | description: 'Indicates if a service or location is closed during a public holiday.' 201 | type: boolean 202 | opens_at: 203 | description: 'The time when a service or location opens. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 204 | type: string 205 | closes_at: 206 | description: 'The time when a service or location closes. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 207 | type: string 208 | start_date: 209 | description: 'The first day that a service or location is closed during a public or private holiday.' 210 | type: string 211 | end_date: 212 | description: 'The last day that a service or location is closed during a public or private holiday.' 213 | type: string 214 | required: 215 | - id 216 | - closed 217 | - start_date 218 | - end_date 219 | interpretation_services: 220 | properties: 221 | id: 222 | description: 'Each service must have a unique identifier.' 223 | type: string 224 | service_id: 225 | description: 'The identifier of the services for which the entry describes the interpretation services available.' 226 | type: string 227 | language: 228 | description: 'Languages, other than English, for which interpretation is available. Languages are listed as ISO639-1 codes.' 229 | type: string 230 | required: 231 | - id 232 | language: 233 | properties: 234 | id: 235 | description: 'Each language must have a unique identifier.' 236 | type: string 237 | service_id: 238 | description: 'The identifier of the service for which the entry describes the languages in which services are delivered.' 239 | type: string 240 | location_id: 241 | description: 'The identifier of the location for which the entry describes the languages in which services are delivered.' 242 | type: string 243 | language: 244 | description: 'Languages, other than English, in which the service is delivered. Languages are listed as ISO639-1 codes..' 245 | type: string 246 | required: 247 | - id 248 | location: 249 | properties: 250 | id: 251 | description: 'Each location must have a unique identifier.' 252 | type: string 253 | organization_id: 254 | description: 'Each location must belong to a single organization. The identifier of the organization should be given here.' 255 | type: string 256 | name: 257 | description: 'The name of the location.' 258 | type: string 259 | alternate_name: 260 | description: 'An alternative name for the location.' 261 | type: string 262 | description: 263 | description: 'A description of this location.' 264 | type: string 265 | transportation: 266 | description: 'A description of the access to public or private transportation to and from the location.' 267 | type: string 268 | latitude: 269 | description: 'Y coordinate of location expressed in decimal degrees in WGS84 datum.' 270 | type: string 271 | longitude: 272 | description: 'X coordinate of location expressed in decimal degrees in WGS84 datum.' 273 | type: string 274 | regular_schedule: 275 | type: "array" 276 | items: 277 | $ref: "#/definitions/regular_schedule" 278 | holiday_schedule: 279 | type: "array" 280 | items: 281 | $ref: "#/definitions/holiday_schedule" 282 | languages: 283 | type: "array" 284 | items: 285 | $ref: "#/definitions/language" 286 | postal_address: 287 | type: "array" 288 | items: 289 | $ref: "#/definitions/postal_address" 290 | physical_address: 291 | type: "array" 292 | items: 293 | $ref: "#/definitions/physical_address" 294 | phones: 295 | type: "array" 296 | items: 297 | $ref: "#/definitions/phone" 298 | service: 299 | type: "array" 300 | items: 301 | $ref: "#/definitions/service" 302 | accessibility_for_disabilities: 303 | type: "array" 304 | items: 305 | $ref: "#/definitions/accessibility_for_disabilities" 306 | required: 307 | - id 308 | organization: 309 | properties: 310 | id: 311 | description: 'Each organization must have a unique identifier.' 312 | type: string 313 | name: 314 | description: 'The official or public name of the organization.' 315 | type: string 316 | alternate_name: 317 | description: 'Alternative or commonly used name for the organization.' 318 | type: string 319 | description: 320 | description: 'A brief summary about the organization. It can contain markup such as HTML or Markdow.' 321 | type: string 322 | email: 323 | description: 'The contact e-mail address for the organization.' 324 | type: string 325 | url: 326 | description: 'The URL (website address) of the organization.' 327 | type: string 328 | tax_status: 329 | description: 'Government assigned tax designation for for tax-exempt organizations.' 330 | type: string 331 | tax_id: 332 | description: 'A government issued identifier used for the purpose of tax administration.' 333 | type: string 334 | year_incorporated: 335 | description: 'The year in which the organization was legally formed.' 336 | type: string 337 | legal_status: 338 | description: 'The legal status defines the conditions that an organization is operating under; e.g. non-profit, private corporation or a government organization.' 339 | type: string 340 | contacts: 341 | type: "array" 342 | items: 343 | $ref: "#/definitions/contact" 344 | funding: 345 | type: "array" 346 | items: 347 | $ref: "#/definitions/funding" 348 | locations: 349 | type: "array" 350 | items: 351 | $ref: "#/definitions/location" 352 | programs: 353 | type: "array" 354 | items: 355 | $ref: "#/definitions/program" 356 | services: 357 | type: "array" 358 | items: 359 | $ref: "#/definitions/service" 360 | required: 361 | - id 362 | - description 363 | payment_accepted: 364 | properties: 365 | id: 366 | description: 'Each entry must have a unique identifier.' 367 | type: string 368 | service_id: 369 | description: 'The identifier of the services for which the entry describes the accepted payment methods.' 370 | type: string 371 | payment: 372 | description: 'The methods of payment accepted for the service.' 373 | type: string 374 | required: 375 | - id 376 | phone: 377 | properties: 378 | id: 379 | description: 'Each entry must have a unique identifier.' 380 | type: string 381 | location_id: 382 | description: 'The identifier of the location where this phone number is located.' 383 | type: string 384 | service_id: 385 | description: 'The identifier of the service for which this is the phone number.' 386 | type: string 387 | organization_id: 388 | description: 'The identifier of the organisation for which this is the phone number.' 389 | type: string 390 | contact_id: 391 | description: 'The identifier of the contact for which this is the phone number.' 392 | type: string 393 | service_at_location_id: 394 | description: 'The identifier of the ‘service at location’ table entry, when this phone number is specific to a service in a particular location.' 395 | type: string 396 | number: 397 | description: 'The phone number.' 398 | type: string 399 | extension: 400 | description: 'The extension of the phone number.' 401 | type: string 402 | type: 403 | description: 'Whether the phone number relates to a fixed or cellular phone.' 404 | type: string 405 | department: 406 | description: 'The department for which this is the phone number.' 407 | type: string 408 | language: 409 | description: 'A comma separated list of ISO 639-1, or ISO 639-2 [language codes](available at http://www.loc.gov/standards/iso639-2/php/code_list.php) to represent the languages available from this phone service. The three-letter codes from ISO 639-2 provide greater accuracy when describing variants of languages, which may be relevant to particular communities.' 410 | type: string 411 | description: 412 | description: 'A description providing extra information about the phone service (e.g. any special arrangements for accessing, or details of availability at particular times.' 413 | type: string 414 | required: 415 | - id 416 | - number 417 | physical_address: 418 | properties: 419 | id: 420 | description: 'Each physical address must have a unique identifier.' 421 | type: string 422 | location_id: 423 | description: 'The identifier of the location for which this is the address.' 424 | type: string 425 | attention: 426 | description: 'The person or entity whose attention should be sought at the location.' 427 | type: string 428 | address_1: 429 | description: 'The first line of the address.' 430 | type: string 431 | address_2: 432 | description: 'The second line of the address.' 433 | type: string 434 | address_3: 435 | description: 'The third line of the address.' 436 | type: string 437 | address_4: 438 | description: 'The fourth line of the address.' 439 | type: string 440 | city: 441 | description: 'The city in which the address is located.' 442 | type: string 443 | region: 444 | description: 'The region in which the address is located (optional).' 445 | type: string 446 | state_province: 447 | description: 'The state or province in which the address is located.' 448 | type: string 449 | postal_code: 450 | description: 'The postal code for the address.' 451 | type: string 452 | country: 453 | description: 'The country in which the address is located. This should be given as an ISO 3361-1 country code (two letter abbreviation).' 454 | type: string 455 | required: 456 | - id 457 | - address_1 458 | - city 459 | - state_province 460 | - postal_code 461 | - country 462 | postal_address: 463 | properties: 464 | id: 465 | description: 'Each postal address must have a unique identifier.' 466 | type: string 467 | location_id: 468 | description: 'The identifier of the location for which this is the postal address.' 469 | type: string 470 | attention: 471 | description: 'The person or entity for whose attention mail should be marked.' 472 | type: string 473 | address_1: 474 | description: 'The first line of the address.' 475 | type: string 476 | address_2: 477 | description: 'The second line of the address.' 478 | type: string 479 | address_3: 480 | description: 'The third line of the address.' 481 | type: string 482 | address_4: 483 | description: 'The fourth line of the address.' 484 | type: string 485 | city: 486 | description: 'The city in which the address is located.' 487 | type: string 488 | region: 489 | description: 'The region in which the address is located (optional).' 490 | type: string 491 | state_province: 492 | description: 'The state or province in which the address is located.' 493 | type: string 494 | postal_code: 495 | description: 'The postal code for the address.' 496 | type: string 497 | country: 498 | description: 'The country in which the address is located.' 499 | type: string 500 | required: 501 | - id 502 | program: 503 | properties: 504 | id: 505 | description: 'Each program must have a unique identifier.' 506 | type: string 507 | organization_id: 508 | description: 'Each program must belong to a single organization. The identifier of the organization should be given here.' 509 | type: string 510 | name: 511 | description: 'The name of the program.' 512 | type: string 513 | alternate_name: 514 | description: 'NeAn alternative name for the program.' 515 | type: string 516 | required: 517 | - id 518 | - organization_id 519 | - name 520 | regular_schedule: 521 | properties: 522 | id: 523 | description: 'Each entry must have a unique identifier.' 524 | type: string 525 | service_id: 526 | description: 'The identifier of the service for which this is the regular schedule.' 527 | type: string 528 | location_id: 529 | description: 'The identifier of the location for which this is the regular schedule.' 530 | type: string 531 | service_at_location_id: 532 | description: 'The identifier of the ‘service at location’ table entry, when this schedule is specific to a service in a particular location.' 533 | type: string 534 | weekday: 535 | description: 'The day of the week that this entry relates to.' 536 | type: string 537 | opens_at: 538 | description: 'The time when a service or location opens. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 539 | type: string 540 | closes_at: 541 | description: 'The time when a service or location opens. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 542 | type: string 543 | required: 544 | - id 545 | - weekday 546 | required_document: 547 | properties: 548 | id: 549 | description: 'Each document must have a unique identifier.' 550 | type: string 551 | service_id: 552 | description: 'The identifier of the service for which this entry describes the required document.' 553 | type: string 554 | document: 555 | description: 'The document required to apply for or receive the service. e.g. Government-issued ID, EU Passport.' 556 | type: string 557 | required: 558 | - id 559 | service: 560 | properties: 561 | id: 562 | description: 'Each service must have a unique identifier.' 563 | type: string 564 | organization_id: 565 | description: 'The identifier of the organization that provides this service.' 566 | type: string 567 | program_id: 568 | description: 'The identifier of the program this service is delivered under.' 569 | type: string 570 | location_id: 571 | description: 'The identifier of the location where this service is delivered.' 572 | type: string 573 | name: 574 | description: 'The official or public name of the service.' 575 | type: string 576 | alternate_name: 577 | description: 'Alternative or commonly used name for a service.' 578 | type: string 579 | description: 580 | description: 'A description of the service.' 581 | type: string 582 | url: 583 | description: 'URL of the service.' 584 | type: string 585 | email: 586 | description: 'Email address for the service.' 587 | type: string 588 | status: 589 | description: 'The current status of the service.' 590 | type: string 591 | interpretation_services: 592 | description: 'A description of any interpretation services available for accessing this service.' 593 | type: string 594 | application_process: 595 | description: 'The steps needed to access the service.' 596 | type: string 597 | wait_time: 598 | description: 'Time a client may expect to wait before receiving a service.' 599 | type: string 600 | accreditations: 601 | description: 'Details of any accreditations. Accreditation is the formal evaluation of an organization or program against best practice standards set by an accrediting organization.' 602 | type: string 603 | licenses: 604 | description: 'An organization may have a license issued by a government entity to operate legally. A list of any such licenses can be provided here.' 605 | type: string 606 | contacts: 607 | type: "array" 608 | items: 609 | $ref: "#/definitions/contact" 610 | eligibility: 611 | type: "array" 612 | items: 613 | $ref: "#/definitions/eligibility" 614 | fees: 615 | type: "array" 616 | items: 617 | $ref: "#/definitions/fee" 618 | funding: 619 | type: "array" 620 | items: 621 | $ref: "#/definitions/funding" 622 | regular_schedule: 623 | type: "array" 624 | items: 625 | $ref: "#/definitions/regular_schedule" 626 | holiday_schedule: 627 | type: "array" 628 | items: 629 | $ref: "#/definitions/holiday_schedule" 630 | languages: 631 | type: "array" 632 | items: 633 | $ref: "#/definitions/language" 634 | payment_accepted: 635 | type: "array" 636 | items: 637 | $ref: "#/definitions/payment_accepted" 638 | phones: 639 | type: "array" 640 | items: 641 | $ref: "#/definitions/phone" 642 | required_documents: 643 | type: "array" 644 | items: 645 | $ref: "#/definitions/required_document" 646 | service_area: 647 | type: "array" 648 | items: 649 | $ref: "#/definitions/service_area" 650 | required: 651 | - id 652 | - organization_id 653 | - name 654 | - status 655 | service_area: 656 | properties: 657 | id: 658 | description: 'Each service area must have a unique identifier.' 659 | type: string 660 | service_id: 661 | description: 'The identifier of the service for which this entry describes the service area.' 662 | type: string 663 | service_area: 664 | description: 'The geographic area where a service is available. This is a free-text description, and so may be precise or indefinite as necessary.' 665 | type: string 666 | description: 667 | description: 'A more detailed description of this service area. Used to provide any additional information that cannot be communicated using the structured area and geometry fields.' 668 | type: string 669 | required: 670 | - id 671 | error_response: 672 | properties: 673 | code: 674 | description: 'Repeat the HTTP status code' 675 | type: integer 676 | message: 677 | description: 'A plain language message explaining the error' 678 | type: integer 679 | -------------------------------------------------------------------------------- /v1.2/openapi-hsda-taxonomy.yaml: -------------------------------------------------------------------------------- 1 | swagger: '2.0' 2 | info: 3 | title: "Human Services Data Taxonomy API" 4 | description: "This is a complimentary API to the HSDA API focusing just on taxonomy." 5 | termsOfService: "https://openreferral.org/documentation/" 6 | contact: 7 | name: Open Referral 8 | url: https://openreferral.org/ 9 | email: info@openreferral.org 10 | license: 11 | name: Open Data Commons Public Domain 12 | url: https://creativecommons.org/licenses/by-sa/4.0/ 13 | version: v1.0 14 | host: hsda.taxonomy.api.adopta.agency 15 | basePath: / 16 | schemes: 17 | - http 18 | produces: 19 | - application/json 20 | paths: 21 | /taxonomy/: 22 | get: 23 | summary: Get Taxonomy 24 | description: Get Taxonomy 25 | operationId: listTaxonomy 26 | security: 27 | - appid: [] 28 | - appkey: [] 29 | responses: 30 | '200': 31 | description: Item Response 32 | schema: 33 | type: array 34 | items: 35 | $ref: "#/definitions/taxonomy" 36 | tags: 37 | - Taxonomy 38 | post: 39 | summary: Add taxonomy 40 | description: Addtaxonomy 41 | operationId: addTaxonomy 42 | parameters: 43 | - in: body 44 | name: body 45 | schema: 46 | $ref: '#/definitions/taxonomy' 47 | security: 48 | - appid: [] 49 | - appkey: [] 50 | responses: 51 | '200': 52 | description: Taxonomy Response 53 | schema: 54 | type: array 55 | items: 56 | $ref: "#/definitions/taxonomy" 57 | '403': 58 | description: No Access Response 59 | schema: 60 | type: array 61 | items: 62 | $ref: "#/definitions/error_response" 63 | '500': 64 | description: Error Response 65 | schema: 66 | type: array 67 | items: 68 | $ref: "#/definitions/error_response" 69 | tags: 70 | - Taxonomy 71 | /taxonomys/{taxonomy_id}/: 72 | get: 73 | summary: Get Taxonomy 74 | description: Get Taxonomy 75 | operationId: getTaxonomy 76 | parameters: 77 | - in: path 78 | required: true 79 | type: string 80 | name: taxonomy_id 81 | description: The taxonomy id. 82 | responses: 83 | '200': 84 | description: Taxonomy Response 85 | schema: 86 | type: array 87 | items: 88 | $ref: "#/definitions/taxonomy" 89 | '500': 90 | description: Error Response 91 | schema: 92 | type: array 93 | items: 94 | $ref: "#/definitions/error_response" 95 | tags: 96 | - Taxonomy 97 | put: 98 | summary: Update Taxonomy 99 | description: Update Taxonomy 100 | operationId: updateTaxonomy 101 | parameters: 102 | - in: path 103 | required: true 104 | type: string 105 | name: taxonomy_id 106 | description: 'The unique taxonomy id.' 107 | - in: body 108 | name: body 109 | schema: 110 | $ref: '#/definitions/taxonomy' 111 | security: 112 | - appid: [] 113 | - appkey: [] 114 | responses: 115 | '200': 116 | description: Taxonomy Response 117 | schema: 118 | type: array 119 | items: 120 | $ref: "#/definitions/taxonomy" 121 | '403': 122 | description: No Access Response 123 | schema: 124 | type: array 125 | items: 126 | $ref: "#/definitions/error_response" 127 | '500': 128 | description: Error Response 129 | schema: 130 | type: array 131 | items: 132 | $ref: "#/definitions/error_response" 133 | tags: 134 | - Taxonomy 135 | delete: 136 | summary: Delete Taxonomy 137 | description: Delete Taxonomy 138 | operationId: deleteTaxonomy 139 | parameters: 140 | - in: path 141 | required: true 142 | type: string 143 | name: taxonomy_id 144 | description: The taxonomy id. 145 | tags: 146 | - Taxonomy 147 | security: 148 | - appid: [] 149 | - appkey: [] 150 | responses: 151 | '200': 152 | description: Taxonomy Response 153 | schema: 154 | type: array 155 | items: 156 | $ref: "#/definitions/taxonomy" 157 | '403': 158 | description: No Access Response 159 | schema: 160 | type: array 161 | items: 162 | $ref: "#/definitions/error_response" 163 | '500': 164 | description: Error Response 165 | schema: 166 | type: array 167 | items: 168 | $ref: "#/definitions/error_response" 169 | /services/{taxonomy_name}/: 170 | get: 171 | summary: Get Services 172 | description: Get Services 173 | operationId: listServices 174 | parameters: 175 | - in: path 176 | required: true 177 | type: string 178 | name: taxonomy_name 179 | description: The taxonomy name. 180 | - in: query 181 | type: string 182 | name: query 183 | description: A query to filter list by (up to provider to determine what to search) 184 | - in: query 185 | type: string 186 | name: queries 187 | description: A comma separate list of queries with specific fields. 188 | - in: query 189 | type: number 190 | name: page 191 | default: 0 192 | description: The particular page of results. 193 | - in: query 194 | type: number 195 | name: per_page 196 | default: 25 197 | description: Number of records return per page, up to 100. 198 | - in: query 199 | type: string 200 | name: sort_by 201 | default: name 202 | description: Which field to sort by. 203 | - in: query 204 | type: string 205 | name: order 206 | default: asc 207 | description: Which order to sort by (asc,desc). 208 | responses: 209 | '200': 210 | description: Service Response 211 | schema: 212 | type: array 213 | items: 214 | $ref: "#/definitions/service" 215 | '500': 216 | description: Error Response 217 | schema: 218 | type: array 219 | items: 220 | $ref: "#/definitions/error_response" 221 | tags: 222 | - Services 223 | /services/complete/{taxonomy_name}/: 224 | get: 225 | summary: Get Services (Complete) 226 | description: Get Services (Complete) 227 | operationId: listServicesComplete 228 | parameters: 229 | - in: path 230 | required: true 231 | type: string 232 | name: taxonomy_name 233 | description: The taxonomy name. 234 | - in: query 235 | type: string 236 | name: query 237 | description: A query to filter list by (up to provider to determine what to search) 238 | - in: query 239 | type: string 240 | name: queries 241 | description: A comma separate list of queries with specific fields. 242 | - in: query 243 | type: number 244 | name: page 245 | default: 0 246 | description: The particular page of results. 247 | - in: query 248 | type: number 249 | name: per_page 250 | default: 25 251 | description: Number of records to return per page, up to 100. 252 | - in: query 253 | type: string 254 | name: sort_by 255 | default: name 256 | description: Which field to sort by. 257 | - in: query 258 | type: string 259 | name: order 260 | default: asc 261 | description: Which order to sort by (asc,desc). 262 | responses: 263 | '200': 264 | description: Service Complete Response 265 | schema: 266 | type: array 267 | items: 268 | $ref: "#/definitions/service_complete" 269 | '500': 270 | description: Error Response 271 | schema: 272 | type: array 273 | items: 274 | $ref: "#/definitions/error_response" 275 | tags: 276 | - Services 277 | securityDefinitions: 278 | appid: 279 | type: apiKey 280 | in: header 281 | name: x-appid 282 | appkey: 283 | type: apiKey 284 | in: header 285 | name: x-appkey 286 | definitions: 287 | taxonomy: 288 | properties: 289 | id: 290 | description: 'Each taxonomy entry must have a unique identifier. If combining multiple taxonomies with overlapping identifiers, use a prefix to distinguish them.' 291 | type: string 292 | name: 293 | description: 'The name of this taxonomy term or category.' 294 | type: string 295 | parent_id: 296 | description: 'If this is a child category in a hierarchical taxonomy, give the identifier of the parent category. For top-level categories, this should be left blank.' 297 | type: string 298 | parent_name: 299 | description: 'If this is a child category in a hierarchical taxonomy, give the name of the parent category. For top-level categories, this should be left blank.' 300 | type: string 301 | vocabulary: 302 | description: 'If this is an established taxonomy, detail which taxonomy is in use. For example, AIRS or Open Eligibility.' 303 | type: string 304 | required: 305 | - id 306 | - name 307 | service: 308 | properties: 309 | id: 310 | description: 'Each service must have a unique identifier.' 311 | type: string 312 | organization_id: 313 | description: 'The identifier of the organization that provides this service.' 314 | type: string 315 | program_id: 316 | description: 'The identifier of the program this service is delivered under.' 317 | type: string 318 | location_id: 319 | description: 'The identifier of the location where this service is delivered.' 320 | type: string 321 | name: 322 | description: 'The official or public name of the service.' 323 | type: string 324 | alternate_name: 325 | description: 'Alternative or commonly used name for a service.' 326 | type: string 327 | description: 328 | description: 'A description of the service.' 329 | type: string 330 | url: 331 | description: 'URL of the service.' 332 | type: string 333 | email: 334 | description: 'Email address for the service.' 335 | type: string 336 | status: 337 | description: 'The current status of the service.' 338 | type: string 339 | interpretation_services: 340 | description: 'A description of any interpretation services available for accessing this service.' 341 | type: string 342 | application_process: 343 | description: 'The steps needed to access the service.' 344 | type: string 345 | wait_time: 346 | description: 'Time a client may expect to wait before receiving a service.' 347 | type: string 348 | fees: 349 | description: 'Details of any charges for service users to access this service.' 350 | type: string 351 | accreditations: 352 | description: 'Details of any accreditations. Accreditation is the formal evaluation of an organization or program against best practice standards set by an accrediting organization.' 353 | type: string 354 | licenses: 355 | description: 'An organization may have a license issued by a government entity to operate legally. A list of any such licenses can be provided here.' 356 | type: string 357 | service_complete: 358 | properties: 359 | id: 360 | description: 'Each service must have a unique identifier.' 361 | type: string 362 | organization_id: 363 | description: 'The identifier of the organization that provides this service.' 364 | type: string 365 | program_id: 366 | description: 'The identifier of the program this service is delivered under.' 367 | type: string 368 | location_id: 369 | description: 'The identifier of the location where this service is delivered.' 370 | type: string 371 | name: 372 | description: 'The official or public name of the service.' 373 | type: string 374 | alternate_name: 375 | description: 'Alternative or commonly used name for a service.' 376 | type: string 377 | description: 378 | description: 'A description of the service.' 379 | type: string 380 | url: 381 | description: 'URL of the service.' 382 | type: string 383 | email: 384 | description: 'Email address for the service.' 385 | type: string 386 | status: 387 | description: 'The current status of the service.' 388 | type: string 389 | interpretation_services: 390 | description: 'A description of any interpretation services available for accessing this service.' 391 | type: string 392 | application_process: 393 | description: 'The steps needed to access the service.' 394 | type: string 395 | wait_time: 396 | description: 'Time a client may expect to wait before receiving a service.' 397 | type: string 398 | accreditations: 399 | description: 'Details of any accreditations. Accreditation is the formal evaluation of an organization or program against best practice standards set by an accrediting organization.' 400 | type: string 401 | licenses: 402 | description: 'An organization may have a license issued by a government entity to operate legally. A list of any such licenses can be provided here.' 403 | type: string 404 | contacts: 405 | type: "array" 406 | items: 407 | $ref: "#/definitions/contact" 408 | eligibility: 409 | type: "array" 410 | items: 411 | $ref: "#/definitions/eligibility" 412 | fees: 413 | type: "array" 414 | items: 415 | $ref: "#/definitions/fee" 416 | funding: 417 | type: "array" 418 | items: 419 | $ref: "#/definitions/funding" 420 | regular_schedule: 421 | type: "array" 422 | items: 423 | $ref: "#/definitions/regular_schedule" 424 | holiday_schedule: 425 | type: "array" 426 | items: 427 | $ref: "#/definitions/holiday_schedule" 428 | languages: 429 | type: "array" 430 | items: 431 | $ref: "#/definitions/language" 432 | payment_accepted: 433 | type: "array" 434 | items: 435 | $ref: "#/definitions/payment_accepted" 436 | phones: 437 | type: "array" 438 | items: 439 | $ref: "#/definitions/phone" 440 | required_documents: 441 | type: "array" 442 | items: 443 | $ref: "#/definitions/required_document" 444 | service_area: 445 | type: "array" 446 | items: 447 | $ref: "#/definitions/service_area" 448 | required: 449 | - id 450 | - organization_id 451 | - name 452 | - status 453 | contact: 454 | properties: 455 | id: 456 | description: 'Each contact must have a unique identifier.' 457 | type: string 458 | organization_id: 459 | description: 'The identifier of the organization for which this is a contact.' 460 | type: string 461 | service_id: 462 | description: 'The identifier of the service for which this is a contact.' 463 | type: string 464 | service_at_location_id: 465 | description: 'The identifier of the ‘service at location’ table entry, when this contact is specific to a service in a particular location.' 466 | type: string 467 | name: 468 | description: 'The name of the person.' 469 | type: string 470 | title: 471 | description: 'The job title of the person.' 472 | type: string 473 | department: 474 | description: 'The department that the person is part of.' 475 | type: string 476 | email: 477 | description: 'The email address of the person.' 478 | type: string 479 | required: 480 | - id 481 | eligibility: 482 | properties: 483 | id: 484 | description: 'Each entry must have a unique identifier.' 485 | type: string 486 | service_id: 487 | description: 'The identifier of the service for which this entry describes the eligibility criteria.' 488 | type: string 489 | eligibility: 490 | description: 'The rules or guidelines that determine who can receive the service.' 491 | type: string 492 | required: 493 | - id 494 | fee: 495 | properties: 496 | id: 497 | description: 'Each entry must have a unique identifier.' 498 | type: string 499 | service_id: 500 | description: 'The identifier of the service for which this entry describes the costs of service.' 501 | type: string 502 | fee: 503 | description: 'A listing of the costs of services, including free ones.' 504 | type: string 505 | required: 506 | - id 507 | funding: 508 | properties: 509 | id: 510 | description: 'Each entry must have a unique identifier.' 511 | type: string 512 | organization_id: 513 | description: 'The identifier of the organization for which this entry describes the source of funding.' 514 | type: string 515 | service_id: 516 | description: 'The identifier of the service for which this entry describes the source of funding.' 517 | type: string 518 | source: 519 | description: 'Source of funds for organization or service.' 520 | type: string 521 | required: 522 | - id 523 | holiday_schedule: 524 | properties: 525 | id: 526 | description: 'Each entry must have a unique identifier.' 527 | type: string 528 | service_id: 529 | description: 'The identifier of the service for which this is the holiday schedule.' 530 | type: string 531 | location_id: 532 | description: 'The identifier of the location for which this is the holiday schedule.' 533 | type: string 534 | service_at_location_id: 535 | description: 'The identifier of the ‘service at location’ table entry, when this schedule is specific to a service in a particular location.' 536 | type: string 537 | closed: 538 | description: 'Indicates if a service or location is closed during a public holiday.' 539 | type: boolean 540 | opens_at: 541 | description: 'The time when a service or location opens. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 542 | type: string 543 | closes_at: 544 | description: 'The time when a service or location closes. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 545 | type: string 546 | start_date: 547 | description: 'The first day that a service or location is closed during a public or private holiday.' 548 | type: string 549 | end_date: 550 | description: 'The last day that a service or location is closed during a public or private holiday.' 551 | type: string 552 | required: 553 | - id 554 | - closed 555 | - start_date 556 | - end_date 557 | regular_schedule: 558 | properties: 559 | id: 560 | description: 'Each entry must have a unique identifier.' 561 | type: string 562 | service_id: 563 | description: 'The identifier of the service for which this is the regular schedule.' 564 | type: string 565 | location_id: 566 | description: 'The identifier of the location for which this is the regular schedule.' 567 | type: string 568 | service_at_location_id: 569 | description: 'The identifier of the ‘service at location’ table entry, when this schedule is specific to a service in a particular location.' 570 | type: string 571 | weekday: 572 | description: 'The day of the week that this entry relates to.' 573 | type: string 574 | opens_at: 575 | description: 'The time when a service or location opens. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 576 | type: string 577 | closes_at: 578 | description: 'The time when a service or location opens. This should use HH:MM format and should include timezone information, either adding the suffix ‘Z’ when the date is in UTC, or including an offset from UTC (e.g. 09:00-05:00 for 9am East Coast Time.' 579 | type: string 580 | required: 581 | - id 582 | - weekday 583 | language: 584 | properties: 585 | id: 586 | description: 'Each language must have a unique identifier.' 587 | type: string 588 | service_id: 589 | description: 'The identifier of the service for which the entry describes the languages in which services are delivered.' 590 | type: string 591 | location_id: 592 | description: 'The identifier of the location for which the entry describes the languages in which services are delivered.' 593 | type: string 594 | language: 595 | description: 'Languages, other than English, in which the service is delivered. Languages are listed as ISO639-1 codes..' 596 | type: string 597 | required: 598 | - id 599 | payment_accepted: 600 | properties: 601 | id: 602 | description: 'Each entry must have a unique identifier.' 603 | type: string 604 | service_id: 605 | description: 'The identifier of the services for which the entry describes the accepted payment methods.' 606 | type: string 607 | payment: 608 | description: 'The methods of payment accepted for the service.' 609 | type: string 610 | required: 611 | - id 612 | required_document: 613 | properties: 614 | id: 615 | description: 'Each document must have a unique identifier.' 616 | type: string 617 | service_id: 618 | description: 'The identifier of the service for which this entry describes the required document.' 619 | type: string 620 | document: 621 | description: 'The document required to apply for or receive the service. e.g. Government-issued ID, EU Passport.' 622 | type: string 623 | required: 624 | - id 625 | phone: 626 | properties: 627 | id: 628 | description: 'Each entry must have a unique identifier.' 629 | type: string 630 | location_id: 631 | description: 'The identifier of the location where this phone number is located.' 632 | type: string 633 | service_id: 634 | description: 'The identifier of the service for which this is the phone number.' 635 | type: string 636 | organization_id: 637 | description: 'The identifier of the organisation for which this is the phone number.' 638 | type: string 639 | contact_id: 640 | description: 'The identifier of the contact for which this is the phone number.' 641 | type: string 642 | service_at_location_id: 643 | description: 'The identifier of the ‘service at location’ table entry, when this phone number is specific to a service in a particular location.' 644 | type: string 645 | number: 646 | description: 'The phone number.' 647 | type: string 648 | extension: 649 | description: 'The extension of the phone number.' 650 | type: string 651 | type: 652 | description: 'Whether the phone number relates to a fixed or cellular phone.' 653 | type: string 654 | department: 655 | description: 'The department for which this is the phone number.' 656 | type: string 657 | language: 658 | description: 'A comma separated list of ISO 639-1, or ISO 639-2 [language codes](available at http://www.loc.gov/standards/iso639-2/php/code_list.php) to represent the languages available from this phone service. The three-letter codes from ISO 639-2 provide greater accuracy when describing variants of languages, which may be relevant to particular communities.' 659 | type: string 660 | description: 661 | description: 'A description providing extra information about the phone service (e.g. any special arrangements for accessing, or details of availability at particular times.' 662 | type: string 663 | required: 664 | - id 665 | - number 666 | service_area: 667 | properties: 668 | id: 669 | description: 'Each service area must have a unique identifier.' 670 | type: string 671 | service_id: 672 | description: 'The identifier of the service for which this entry describes the service area.' 673 | type: string 674 | service_area: 675 | description: 'The geographic area where a service is available. This is a free-text description, and so may be precise or indefinite as necessary.' 676 | type: string 677 | description: 678 | description: 'A more detailed description of this service area. Used to provide any additional information that cannot be communicated using the structured area and geometry fields.' 679 | type: string 680 | required: 681 | - id 682 | error_response: 683 | properties: 684 | code: 685 | description: 'Repeat the HTTP status code' 686 | type: integer 687 | message: 688 | description: 'A plain language message explaining the error' 689 | type: integer 690 | -------------------------------------------------------------------------------- /v1.2/openapi-hsda-utility.yaml: -------------------------------------------------------------------------------- 1 | swagger: '2.0' 2 | info: 3 | title: "Human Services Data Utility API" 4 | description: "This is a complimentary API to the HSDA API focusing just on utility features." 5 | termsOfService: "https://openreferral.org/documentation/" 6 | contact: 7 | name: Open Referral 8 | url: https://openreferral.org/ 9 | email: info@openreferral.org 10 | license: 11 | name: Open Data Commons Public Domain 12 | url: https://creativecommons.org/licenses/by-sa/4.0/ 13 | version: v1.0 14 | host: hsda.utility.api.adopta.agency 15 | basePath: / 16 | schemes: 17 | - http 18 | produces: 19 | - application/json 20 | paths: 21 | /services/: 22 | get: 23 | summary: Services 24 | description: The services being used across ochestration. 25 | operationId: getServices 26 | security: 27 | - appid: [] 28 | - appkey: [] 29 | responses: 30 | '200': 31 | description: Service Response 32 | schema: 33 | type: array 34 | items: 35 | $ref: "#/definitions/service" 36 | '403': 37 | description: No Access Response 38 | schema: 39 | type: array 40 | items: 41 | $ref: "#/definitions/error_response" 42 | '500': 43 | description: Error Response 44 | schema: 45 | type: array 46 | items: 47 | $ref: "#/definitions/error_response" 48 | tags: 49 | - Services 50 | /schema/build/: 51 | get: 52 | summary: Schema Build 53 | description: This will generate static files for all definitions in OpenAPIs 54 | operationId: schemaBuild 55 | security: 56 | - appid: [] 57 | - appkey: [] 58 | responses: 59 | '200': 60 | description: Schema Build Response 61 | schema: 62 | type: array 63 | items: 64 | $ref: "#/definitions/schema_build" 65 | '403': 66 | description: No Access Response 67 | schema: 68 | type: array 69 | items: 70 | $ref: "#/definitions/error_response" 71 | '500': 72 | description: Error Response 73 | schema: 74 | type: array 75 | items: 76 | $ref: "#/definitions/error_response" 77 | tags: 78 | - Services 79 | /validate/hsda/definition/: 80 | post: 81 | summary: Validate HSDA Response 82 | description: Validate HSDA Response 83 | operationId: valiateHSDAResponse 84 | parameters: 85 | - in: query 86 | name: name 87 | description: The name of the service which is being validated. 88 | required: true 89 | type: string 90 | - in: query 91 | name: path 92 | description: The path which is being validated. 93 | required: true 94 | type: string 95 | - in: query 96 | name: verb 97 | description: The verb which is being validated. 98 | required: true 99 | type: string 100 | - in: body 101 | name: body 102 | schema: 103 | $ref: '#/definitions/hsda_definition' 104 | security: 105 | - appid: [] 106 | - appkey: [] 107 | responses: 108 | '200': 109 | description: Validate HSDA Response 110 | schema: 111 | type: array 112 | items: 113 | $ref: "#/definitions/validate_definition" 114 | '403': 115 | description: No Access Response 116 | schema: 117 | type: array 118 | items: 119 | $ref: "#/definitions/error_response" 120 | '500': 121 | description: Error Response 122 | schema: 123 | type: array 124 | items: 125 | $ref: "#/definitions/error_response" 126 | tags: 127 | - Validate 128 | /validate/hsda/openapi/: 129 | post: 130 | summary: Validate HSDA OpenAPI 131 | description: Validate HSDA OpenAPI 132 | operationId: valiateHSDAOpenAPI 133 | parameters: 134 | - in: body 135 | name: body 136 | schema: 137 | $ref: '#/definitions/hsda_openapi' 138 | security: 139 | - appid: [] 140 | - appkey: [] 141 | responses: 142 | '200': 143 | description: Validate HSDA OpenAPI Response 144 | schema: 145 | type: array 146 | items: 147 | $ref: "#/definitions/validate_openapi" 148 | '403': 149 | description: No Access Response 150 | schema: 151 | type: array 152 | items: 153 | $ref: "#/definitions/error_response" 154 | '500': 155 | description: Error Response 156 | schema: 157 | type: array 158 | items: 159 | $ref: "#/definitions/error_response" 160 | tags: 161 | - Validate 162 | securityDefinitions: 163 | appid: 164 | type: apiKey 165 | in: header 166 | name: x-appid 167 | appkey: 168 | type: apiKey 169 | in: header 170 | name: x-appkey 171 | definitions: 172 | service: 173 | properties: 174 | id: 175 | description: 'Each entry must have a unique identifier.' 176 | type: string 177 | name: 178 | description: 'The service name.' 179 | type: string 180 | path: 181 | description: 'The path name.' 182 | type: string 183 | verb: 184 | description: 'The verb.' 185 | type: string 186 | required: 187 | - id 188 | - name 189 | - path 190 | - verb 191 | validate_definition: 192 | properties: 193 | id: 194 | description: 'Each validation has a unique id.' 195 | type: string 196 | service: 197 | description: 'The service that is being validated.' 198 | type: string 199 | path: 200 | description: 'The path that is being validated.' 201 | type: string 202 | verb: 203 | description: 'The verb that is being validated.' 204 | type: string 205 | valid: 206 | description: 'Whether or not the schema was valid.' 207 | type: boolean 208 | message: 209 | description: 'A message describing the validation.' 210 | type: string 211 | required: 212 | - id 213 | - service 214 | - path 215 | - verb 216 | validate_openapi: 217 | properties: 218 | id: 219 | description: 'Each validation has a unique id.' 220 | type: string 221 | service: 222 | description: 'The service that is being validated.' 223 | type: string 224 | valid: 225 | description: 'Whether or not the schema was valid.' 226 | type: boolean 227 | message: 228 | description: 'A message describing the validation.' 229 | type: string 230 | required: 231 | - id 232 | - service 233 | error_response: 234 | properties: 235 | code: 236 | description: 'Repeat the HTTP status code' 237 | type: integer 238 | message: 239 | description: 'A plain language message explaining the error' 240 | type: integer 241 | hsda_definition: 242 | properties: 243 | body: 244 | description: 'The HSDA definition to validate.' 245 | type: array 246 | hsda_openapi: 247 | properties: 248 | body: 249 | description: 'The HSDA OpenAPI to validate.' 250 | type: array 251 | schema_build: 252 | properties: 253 | service: 254 | description: 'The service of the schema' 255 | type: string 256 | definition: 257 | description: 'The definition of the schema.' 258 | type: string 259 | file: 260 | description: 'The file name being created.' 261 | type: string 262 | -------------------------------------------------------------------------------- /v2.0/openapi-hsda-meta.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: Human Services Data Meta API 4 | description: |- 5 | This is a specification describing the Human Services Data API, using the 6 | Human Services Data Specification (HSDS). This has been extracted from the 7 | Ohana API deployment, but will be standardized to refer to the universal 8 | standard that will apply to any HSDS/A compliant API. 9 | termsOfService: https://openreferral.org/documentation/ 10 | contact: 11 | name: Open Referral 12 | url: https://openreferral.org/ 13 | email: info@openreferral.org 14 | license: 15 | name: Creative Commons Attribution Share-Alike 4.0 16 | url: https://creativecommons.org/licenses/by-sa/4.0/ 17 | version: v2.0 18 | servers: 19 | - url: "{{ hsda_base_url }}" 20 | variables: 21 | basePath: 22 | default: "/v2" 23 | paths: 24 | "/metadata/": 25 | get: 26 | summary: Get Metadata 27 | description: Returns a list of all metadata. 28 | operationId: listMetaata 29 | parameters: 30 | - in: query 31 | name: query 32 | description: |- 33 | A query to filter list by (up to provider to determine what to 34 | search) 35 | schema: 36 | type: string 37 | - in: query 38 | name: fields 39 | description: A list of fields to be returned with the response, if not included, 40 | all are returned. 41 | schema: 42 | type: string 43 | - in: query 44 | name: page 45 | description: The particular page of results. 46 | schema: 47 | type: number 48 | - in: query 49 | name: per_page 50 | description: Number of records to return per page, up to 100. 51 | schema: 52 | type: number 53 | - in: query 54 | name: sort_by 55 | description: Which field to sort by. 56 | schema: 57 | type: string 58 | - in: query 59 | name: order 60 | description: Which order to sort by (asc,desc). 61 | schema: 62 | type: string 63 | - in: query 64 | name: format 65 | description: |- 66 | The data format of the response (csv, json, xml). 67 | schema: 68 | type: string 69 | responses: 70 | '200': 71 | description: Metadata Response 72 | headers: 73 | X-pagination-page: 74 | description: The current page being returned. 75 | schema: 76 | type: integer 77 | X-pagination-per-page: 78 | description: The number of records returned per page. 79 | schema: 80 | type: integer 81 | X-pagination-total-pages: 82 | description: The total number of available pages. 83 | schema: 84 | type: integer 85 | X-pagination-total-records: 86 | description: The the total number of available records. 87 | schema: 88 | type: integer 89 | content: 90 | application/json: 91 | schema: 92 | type: array 93 | items: 94 | "$ref": "#/components/schemas/metadatas" 95 | application/xml: 96 | schema: 97 | type: array 98 | items: 99 | "$ref": "#/components/schemas/metadatas" 100 | text/csv: 101 | schema: 102 | type: array 103 | items: 104 | "$ref": "#/components/schemas/metadatas" 105 | '500': 106 | description: Error Response 107 | content: 108 | application/json: 109 | schema: 110 | type: array 111 | items: 112 | "$ref": "#/components/schemas/problems" 113 | application/xml: 114 | schema: 115 | type: array 116 | items: 117 | "$ref": "#/components/schemas/problems" 118 | text/csv: 119 | schema: 120 | type: array 121 | items: 122 | "$ref": "#/components/schemas/problems" 123 | tags: 124 | - Metadata 125 | post: 126 | summary: Add Metadata 127 | description: Creates a new metadata entry. 128 | operationId: addMetadata 129 | requestBody: 130 | "$ref": "#/components/requestBodies/metadata" 131 | security: 132 | - appid: [] 133 | - appkey: [] 134 | responses: 135 | '200': 136 | description: Metadata Response 137 | content: 138 | application/json: 139 | schema: 140 | type: array 141 | items: 142 | "$ref": "#/components/schemas/metadata" 143 | application/xml: 144 | schema: 145 | type: array 146 | items: 147 | "$ref": "#/components/schemas/metadata" 148 | text/csv: 149 | schema: 150 | type: array 151 | items: 152 | "$ref": "#/components/schemas/metadata" 153 | '500': 154 | description: Error Response 155 | content: 156 | application/json: 157 | schema: 158 | type: array 159 | items: 160 | "$ref": "#/components/schemas/problems" 161 | application/xml: 162 | schema: 163 | type: array 164 | items: 165 | "$ref": "#/components/schemas/problems" 166 | text/csv: 167 | schema: 168 | type: array 169 | items: 170 | "$ref": "#/components/schemas/problems" 171 | tags: 172 | - Metadatas 173 | "/metadata/{metadata_id}/": 174 | get: 175 | summary: Get Metadata 176 | description: Returns a single metadata entry 177 | operationId: getMetadata 178 | parameters: 179 | - in: path 180 | required: true 181 | name: metadata_id 182 | description: The metadata id. 183 | schema: 184 | type: string 185 | responses: 186 | '200': 187 | description: Metadata Response 188 | content: 189 | application/json: 190 | schema: 191 | type: array 192 | items: 193 | "$ref": "#/components/schemas/metadata" 194 | application/xml: 195 | schema: 196 | type: array 197 | items: 198 | "$ref": "#/components/schemas/metadata" 199 | text/csv: 200 | schema: 201 | type: array 202 | items: 203 | "$ref": "#/components/schemas/metadata" 204 | '500': 205 | description: Error Response 206 | content: 207 | application/json: 208 | schema: 209 | type: array 210 | items: 211 | "$ref": "#/components/schemas/problems" 212 | application/xml: 213 | schema: 214 | type: array 215 | items: 216 | "$ref": "#/components/schemas/problems" 217 | text/csv: 218 | schema: 219 | type: array 220 | items: 221 | "$ref": "#/components/schemas/problems" 222 | tags: 223 | - Metadatas 224 | put: 225 | summary: Update Metadata 226 | description: Updates an existing metadata entry using its id. 227 | operationId: updateMetadata 228 | parameters: 229 | - in: path 230 | required: true 231 | name: metadata_id 232 | description: The metadata id. 233 | schema: 234 | type: string 235 | requestBody: 236 | "$ref": "#/components/requestBodies/metadata" 237 | security: 238 | - appid: [] 239 | - appkey: [] 240 | responses: 241 | '200': 242 | description: Metadata Response 243 | content: 244 | application/json: 245 | schema: 246 | type: array 247 | items: 248 | "$ref": "#/components/schemas/metadata" 249 | application/xml: 250 | schema: 251 | type: array 252 | items: 253 | "$ref": "#/components/schemas/metadata" 254 | text/csv: 255 | schema: 256 | type: array 257 | items: 258 | "$ref": "#/components/schemas/metadata" 259 | '403': 260 | description: No Access Response 261 | content: 262 | application/json: 263 | schema: 264 | type: array 265 | items: 266 | "$ref": "#/components/schemas/problems" 267 | application/xml: 268 | schema: 269 | type: array 270 | items: 271 | "$ref": "#/components/schemas/problems" 272 | text/csv: 273 | schema: 274 | type: array 275 | items: 276 | "$ref": "#/components/schemas/problems" 277 | '500': 278 | description: Error Response 279 | content: 280 | application/json: 281 | schema: 282 | type: array 283 | items: 284 | "$ref": "#/components/schemas/problems" 285 | application/xml: 286 | schema: 287 | type: array 288 | items: 289 | "$ref": "#/components/schemas/problems" 290 | text/csv: 291 | schema: 292 | type: array 293 | items: 294 | "$ref": "#/components/schemas/problems" 295 | tags: 296 | - Metadatas 297 | delete: 298 | summary: Delete metadata 299 | description: Deletes a metadata by Id 300 | operationId: deleteMetadataComplete 301 | parameters: 302 | - in: path 303 | required: true 304 | name: metadata_id 305 | description: The metadata id. 306 | schema: 307 | type: string 308 | tags: 309 | - Metadatas 310 | security: 311 | - appid: [] 312 | - appkey: [] 313 | responses: 314 | '200': 315 | description: Metadata Response 316 | content: 317 | application/json: 318 | schema: 319 | type: array 320 | items: 321 | "$ref": "#/components/schemas/metadata" 322 | application/xml: 323 | schema: 324 | type: array 325 | items: 326 | "$ref": "#/components/schemas/metadata" 327 | text/csv: 328 | schema: 329 | type: array 330 | items: 331 | "$ref": "#/components/schemas/metadata" 332 | '500': 333 | description: Error Response 334 | content: 335 | application/json: 336 | schema: 337 | type: array 338 | items: 339 | "$ref": "#/components/schemas/problems" 340 | application/xml: 341 | schema: 342 | type: array 343 | items: 344 | "$ref": "#/components/schemas/problems" 345 | text/csv: 346 | schema: 347 | type: array 348 | items: 349 | "$ref": "#/components/schemas/problems" 350 | "/metatable/": 351 | get: 352 | summary: Get Metatable 353 | description: Returns a list of all metatable. 354 | operationId: listMetaata 355 | parameters: 356 | - in: query 357 | name: query 358 | description: |- 359 | A query to filter list by (up to provider to determine what to 360 | search) 361 | schema: 362 | type: string 363 | - in: query 364 | name: fields 365 | description: A list of fields to be returned with the response, if not included, 366 | all are returned. 367 | schema: 368 | type: string 369 | - in: query 370 | name: page 371 | description: The particular page of results. 372 | schema: 373 | type: number 374 | - in: query 375 | name: per_page 376 | description: Number of records to return per page, up to 100. 377 | schema: 378 | type: number 379 | - in: query 380 | name: sort_by 381 | description: Which field to sort by. 382 | schema: 383 | type: string 384 | - in: query 385 | name: order 386 | description: Which order to sort by (asc,desc). 387 | schema: 388 | type: string 389 | - in: query 390 | name: format 391 | description: |- 392 | The data format of the response (csv, json, xml). 393 | schema: 394 | type: string 395 | responses: 396 | '200': 397 | description: Metatable Response 398 | content: 399 | application/json: 400 | schema: 401 | type: array 402 | items: 403 | "$ref": "#/components/schemas/metatables" 404 | application/xml: 405 | schema: 406 | type: array 407 | items: 408 | "$ref": "#/components/schemas/metatables" 409 | text/csv: 410 | schema: 411 | type: array 412 | items: 413 | "$ref": "#/components/schemas/metatables" 414 | '500': 415 | description: Error Response 416 | content: 417 | application/json: 418 | schema: 419 | type: array 420 | items: 421 | "$ref": "#/components/schemas/problems" 422 | application/xml: 423 | schema: 424 | type: array 425 | items: 426 | "$ref": "#/components/schemas/problems" 427 | text/csv: 428 | schema: 429 | type: array 430 | items: 431 | "$ref": "#/components/schemas/problems" 432 | tags: 433 | - Metatable 434 | post: 435 | summary: Add Metatable 436 | description: Creates a new metatable entry. 437 | operationId: addMetatable 438 | requestBody: 439 | "$ref": "#/components/requestBodies/metatable" 440 | security: 441 | - appid: [] 442 | - appkey: [] 443 | responses: 444 | '200': 445 | description: Metatable Response 446 | content: 447 | application/json: 448 | schema: 449 | type: array 450 | items: 451 | "$ref": "#/components/schemas/metatable" 452 | application/xml: 453 | schema: 454 | type: array 455 | items: 456 | "$ref": "#/components/schemas/metatable" 457 | text/csv: 458 | schema: 459 | type: array 460 | items: 461 | "$ref": "#/components/schemas/metatable" 462 | '500': 463 | description: Error Response 464 | content: 465 | application/json: 466 | schema: 467 | type: array 468 | items: 469 | "$ref": "#/components/schemas/problems" 470 | application/xml: 471 | schema: 472 | type: array 473 | items: 474 | "$ref": "#/components/schemas/problems" 475 | text/csv: 476 | schema: 477 | type: array 478 | items: 479 | "$ref": "#/components/schemas/problems" 480 | tags: 481 | - Metatables 482 | "/metatable/{metatable_id}/": 483 | get: 484 | summary: Get Metatable 485 | description: Returns a single metatable entry 486 | operationId: getMetatable 487 | parameters: 488 | - in: path 489 | required: true 490 | name: metatable_id 491 | description: The metatable id. 492 | schema: 493 | type: string 494 | responses: 495 | '200': 496 | description: Metatable Response 497 | content: 498 | application/json: 499 | schema: 500 | type: array 501 | items: 502 | "$ref": "#/components/schemas/metatable" 503 | application/xml: 504 | schema: 505 | type: array 506 | items: 507 | "$ref": "#/components/schemas/metatable" 508 | text/csv: 509 | schema: 510 | type: array 511 | items: 512 | "$ref": "#/components/schemas/metatable" 513 | '500': 514 | description: Error Response 515 | content: 516 | application/json: 517 | schema: 518 | type: array 519 | items: 520 | "$ref": "#/components/schemas/problems" 521 | application/xml: 522 | schema: 523 | type: array 524 | items: 525 | "$ref": "#/components/schemas/problems" 526 | text/csv: 527 | schema: 528 | type: array 529 | items: 530 | "$ref": "#/components/schemas/problems" 531 | tags: 532 | - Metatables 533 | put: 534 | summary: Update Metatable 535 | description: Updates an existing metatable entry using its id. 536 | operationId: updateMetatable 537 | parameters: 538 | - in: path 539 | required: true 540 | name: metatable_id 541 | description: The metatable id. 542 | schema: 543 | type: string 544 | requestBody: 545 | "$ref": "#/components/requestBodies/metatable" 546 | security: 547 | - appid: [] 548 | - appkey: [] 549 | responses: 550 | '200': 551 | description: Metatable Response 552 | content: 553 | application/json: 554 | schema: 555 | type: array 556 | items: 557 | "$ref": "#/components/schemas/metatable" 558 | application/xml: 559 | schema: 560 | type: array 561 | items: 562 | "$ref": "#/components/schemas/metatable" 563 | text/csv: 564 | schema: 565 | type: array 566 | items: 567 | "$ref": "#/components/schemas/metatable" 568 | '403': 569 | description: No Access Response 570 | content: 571 | application/json: 572 | schema: 573 | type: array 574 | items: 575 | "$ref": "#/components/schemas/problems" 576 | application/xml: 577 | schema: 578 | type: array 579 | items: 580 | "$ref": "#/components/schemas/problems" 581 | text/csv: 582 | schema: 583 | type: array 584 | items: 585 | "$ref": "#/components/schemas/problems" 586 | '500': 587 | description: Error Response 588 | content: 589 | application/json: 590 | schema: 591 | type: array 592 | items: 593 | "$ref": "#/components/schemas/problems" 594 | application/xml: 595 | schema: 596 | type: array 597 | items: 598 | "$ref": "#/components/schemas/problems" 599 | text/csv: 600 | schema: 601 | type: array 602 | items: 603 | "$ref": "#/components/schemas/problems" 604 | tags: 605 | - Metatables 606 | delete: 607 | summary: Delete metatable 608 | description: Deletes a metatable by Id 609 | operationId: deleteMetatableComplete 610 | parameters: 611 | - in: path 612 | required: true 613 | name: metatable_id 614 | description: The metatable id. 615 | schema: 616 | type: string 617 | tags: 618 | - Metatables 619 | security: 620 | - appid: [] 621 | - appkey: [] 622 | responses: 623 | '200': 624 | description: Metatable Response 625 | content: 626 | application/json: 627 | schema: 628 | type: array 629 | items: 630 | "$ref": "#/components/schemas/metatable" 631 | application/xml: 632 | schema: 633 | type: array 634 | items: 635 | "$ref": "#/components/schemas/metatable" 636 | text/csv: 637 | schema: 638 | type: array 639 | items: 640 | "$ref": "#/components/schemas/metatable" 641 | '500': 642 | description: Error Response 643 | content: 644 | application/json: 645 | schema: 646 | type: array 647 | items: 648 | "$ref": "#/components/schemas/problems" 649 | application/xml: 650 | schema: 651 | type: array 652 | items: 653 | "$ref": "#/components/schemas/problems" 654 | text/csv: 655 | schema: 656 | type: array 657 | items: 658 | "$ref": "#/components/schemas/problems" 659 | components: 660 | securitySchemes: 661 | appid: 662 | type: apiKey 663 | in: header 664 | name: x-appid 665 | appkey: 666 | type: apiKey 667 | in: header 668 | name: x-appkey 669 | schemas: 670 | metadata: 671 | description: |- 672 | The metadata table contains a record of the changes that have been 673 | made to the data in order to maintain provenance information. 674 | properties: 675 | id: 676 | type: string 677 | description: Each entry must have a unique identifier 678 | resource_id: 679 | type: string 680 | description: |- 681 | Each service, program. location, address, or metadata will have 682 | a unique identifier. 683 | resource_type: 684 | type: string 685 | description: The type of entity being referenced 686 | last_action_date: 687 | type: string 688 | format: datetime 689 | description: The date when data was changed. 690 | last_action_type: 691 | type: string 692 | description: The kind of change made to the data; eg create, update, delete 693 | field_name: 694 | type: string 695 | description: The name of field that has been modified 696 | previous_value: 697 | type: string 698 | description: The previous value of a field that has been updated 699 | replacement_value: 700 | type: string 701 | description: The new value of a field that has been updated 702 | updated_by: 703 | type: string 704 | description: The name of the person who updated a value 705 | required: 706 | - id 707 | - resource_id 708 | - resource_type 709 | - last_action_date 710 | - last_action_type 711 | - field_name 712 | - previous_value 713 | - replacement_value 714 | - updated_by 715 | meta_table_description: 716 | description: |- 717 | The meta_table_description table contains metadata about individual 718 | tables. 719 | properties: 720 | id: 721 | type: string 722 | description: Each entry must have a unique identifier 723 | name: 724 | type: string 725 | description: '' 726 | language: 727 | type: string 728 | description: '' 729 | character_set: 730 | type: string 731 | description: '' 732 | required: 733 | - id 734 | --------------------------------------------------------------------------------