diff --git a/api.scouting.org/openapi.yaml b/api.scouting.org/openapi.yaml
index f04d816..7bcc848 100644
--- a/api.scouting.org/openapi.yaml
+++ b/api.scouting.org/openapi.yaml
@@ -1,4 +1,4 @@
-openapi: 3.0.3
+openapi: 3.1.0
info:
title: Scouting.org API
description: |-
@@ -28,6 +28,12 @@ tags:
externalDocs:
description: Find out more about registered Scouts
url: https://github.com/mmarseglia/scouting-api
+ - name: organizations
+ description: Access to information about organizations, units, and leaders
+ externalDocs:
+ description: Find out more about organizations
+ url: https://github.com/mmarseglia/scouting-api
+
paths:
/advancements/ranks:
get:
@@ -37,21 +43,21 @@ paths:
description: Returns JSON list of all ranks and awards
operationId: getRanks
parameters:
- - $ref: '#/components/schemas/RequestParams/properties/version'
- - $ref: '#/components/schemas/RequestParams/properties/id'
- - $ref: '#/components/schemas/RequestParams/properties/programId'
- - $ref: '#/components/schemas/RequestParams/properties/status'
+ - $ref: "#/components/parameters/version"
+ - $ref: "#/components/parameters/id"
+ - $ref: "#/components/parameters/programId"
+ - $ref: "#/components/parameters/status"
responses:
- '200':
+ "200":
description: Successful operation
content:
application/json:
schema:
- $ref: '#/components/schemas/Ranks'
- '400':
+ $ref: "#/components/schemas/Ranks"
+ "400":
description: Bad Request
content:
- application/json; charset=UTF-8:
+ application/json:
schema:
type: object
properties:
@@ -65,113 +71,592 @@ paths:
- errorCode
- message
- errorDesc
+
/lookups/address/countries:
get:
responses:
"200":
- description: 200 response
+ description: Successful operation
content:
- application/json; charset=UTF-8; indent="false":
+ application/json:
schema:
$ref: "#/components/schemas/GetLookupsAddressCountries200ResponseBody"
- /advancements/youth/{userId}/:
- parameters:
- - in: path
- name: userId
- required: true
- schema:
- type: string
+
+ /advancements/youth/{userId}/leadershipPositionHistory:
get:
responses:
- "401":
- description: 401 response
+ "200":
+ description: Successful response
content:
application/json:
schema:
- $ref: "#/components/schemas/GetAdvancementsYouthYouth401ResponseBody"
- "404":
- description: 404 response
+ $ref: "#/components/schemas/GetAdvancementsYouthUseridLeadershippositionhistory200ResponseBody"
+
+ /advancements/ranks/{rank}/requirements:
+ get:
+ operationId: getRankRequirements
+ parameters:
+ - in: path
+ name: rank
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: Successful operation
content:
- application/json; charset=UTF-8:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/GetAdvancementsRanksRankRequirements200ResponseBody"
+
+ /advancements/meritBadges:
+ get:
+ operationId: getMeritBadges
+ responses:
+ "200":
+ description: Successful operation
+ content:
+ application/json: {}
+ tags:
+ - advancements
+
+ /advancements/v2/youth/{userId}/awards:
+ get:
+ operationId: getYouthAwardsByUserId
+ parameters:
+ - in: path
+ name: userId
+ required: true
+ schema:
+ type: string
+ example: 1234567
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json:
schema:
type: object
- properties:
- errorCode:
- type: string
- message:
- type: string
- errorDesc:
- type: string
- required:
- - errorCode
- - message
- - errorDesc
- /advancements/youth/{userId}:
- parameters:
- - in: path
- name: userId
- required: true
- schema:
- type: string
+ tags:
+ - advancements
+
+ /advancements/v2/youth/{userId}/leadershipPositionHistory:
get:
- security:
- - BearerAuth:
- []
+ operationId: getYouthLeadershipPositionHistoryByUserId
+ parameters:
+ - in: path
+ name: userId
+ required: true
+ schema:
+ type: string
+ example: 1234567
responses:
- "404":
- description: 404 response
+ "200":
+ description: Successful response
content:
- application/json; charset=UTF-8:
+ application/json:
schema:
- $ref: "#/components/schemas/GetAdvancementsYouthYouth401ResponseBody"
- "405":
- description: 405 response
+ $ref: "#/components/schemas/GetAdvancementsYouthUseridLeadershippositionhistory200ResponseBody"
+ tags:
+ - advancements
+
+ /advancements/v2/youth/{userId}/meritBadges:
+ get:
+ operationId: getYouthMeritBadgesByUserId
+ parameters:
+ - in: path
+ name: userId
+ required: true
+ schema:
+ type: string
+ example: 1234567
+ responses:
+ "200":
+ description: Successful response
content:
- application/json; charset=UTF-8:
+ application/json:
schema:
type: object
- properties:
- errorCode:
- type: string
- message:
- type: string
- errorDesc:
- type: string
- required:
- - errorCode
- - message
- - errorDesc
- /advancements/youth/{userId}/leadershipPositionHistory:
- parameters:
- - in: path
- name: userId
- required: true
- schema:
- type: string
+ tags:
+ - advancements
+
+ /advancements/v2/youth/{userId}/ranks:
get:
+ operationId: getYouthRanksByUserId
+ parameters:
+ - in: path
+ name: userId
+ required: true
+ schema:
+ type: string
+ example: 1234567
responses:
"200":
- description: 200 response
+ description: Successful response
content:
- application/json; charset=UTF-8; indent="false":
+ application/json:
schema:
- $ref: "#/components/schemas/GetAdvancementsYouthUseridLeadershippositionhistory\
- 200ResponseBody"
- /advancements/ranks/{rank}/requirements:
- parameters:
- - in: path
- name: rank
- required: true
- schema:
- type: string
+ type: object
+ tags:
+ - advancements
+
+ /advancements/v2/{personGuid}/userActivitySummary:
+ get:
+ operationId: getUserActivitySummaryByPersonGuid
+ parameters:
+ - in: path
+ name: personGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - advancements
+
+ /organizations/v2/units/{organizationGuid}/adults:
get:
+ operationId: getAdultsByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
responses:
"200":
- description: 200 response
+ description: Successful response
content:
- application/json; charset=UTF-8:
+ application/json:
schema:
- $ref: "#/components/schemas/GetAdvancementsRanksRankRequirements200ResponseBody"
+ type: object
+ tags:
+ - organizations
+
+ /organizations/v2/units/{organizationGuid}/parents:
+ get:
+ operationId: getParentsByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/units/{organizationGuid}/subUnits:
+ get:
+ operationId: getSubUnitsByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/units/{organizationGuid}/youths:
+ get:
+ operationId: getYouthsByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/advancementDashboard:
+ get:
+ operationId: getAdvancementDashboardByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/advancementsReadyToBeAwarded:
+ post:
+ operationId: postAdvancementsReadyToBeAwardedByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ requestBody:
+ content:
+ "*/*":
+ schema:
+ additionalProperties: true
+ properties: {}
+ type: object
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/orders:
+ get:
+ operationId: getOrdersByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/orgAdults:
+ post:
+ operationId: postOrgAdultsByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ requestBody:
+ content:
+ "*/*":
+ schema:
+ additionalProperties: true
+ properties: {}
+ type: object
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/orgTrainingSummary:
+ get:
+ operationId: getOrgTrainingSummaryByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/orgYouths:
+ post:
+ operationId: postOrgYouthsByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ requestBody:
+ content:
+ "*/*":
+ schema:
+ additionalProperties: true
+ properties: {}
+ type: object
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/profile:
+ get:
+ operationId: getOrganizationProfileByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/renewalDashboard:
+ get:
+ operationId: getRenewalDashboardByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/unitActivitiesDashboard:
+ get:
+ operationId: getUnitActivitiesDashboardByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/unitAdvancementDashboard:
+ get:
+ operationId: getUnitAdvancementDashboardByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/unitRenewalStatusDashboard:
+ get:
+ operationId: getUnitRenewalStatusDashboardByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /organizations/v2/{organizationGuid}/unitRoundtableAttendance:
+ get:
+ operationId: getUnitRoundtableAttendanceByOrganizationGuid
+ parameters:
+ - in: path
+ name: organizationGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - organizations
+
+ /persons/v2/{personGuid}/personprofile:
+ get:
+ operationId: getPersonProfileByPersonGuid
+ parameters:
+ - in: path
+ name: personGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json:
+ schema:
+ type: object
+ tags:
+ - persons
+
+ /persons/v2/{personGuid}/profile:
+ get:
+ operationId: getProfileByPersonGuid
+ parameters:
+ - in: path
+ name: personGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - persons
+
+ /persons/v2/{personGuid}/renewalRelationships:
+ get:
+ operationId: getRenewalRelationshipsByPersonGuid
+ parameters:
+ - in: path
+ name: personGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - persons
+
+ /persons/v2/{personGuid}/roleTypes:
+ get:
+ operationId: getRoleTypesByPersonGuid
+ parameters:
+ - in: path
+ name: personGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - persons
+
+ /persons/v2/{personGuid}/subscriptions:
+ get:
+ operationId: getSubscriptionsByPersonGuid
+ parameters:
+ - in: path
+ name: personGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - persons
+
+ /persons/v2/{personGuid}/tools:
+ get:
+ operationId: getToolsByPersonGuid
+ parameters:
+ - in: path
+ name: personGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - persons
+
+ /persons/v2/{personGuid}/trainings/ypt:
+ get:
+ operationId: getYPTTrainingsByPersonGuid
+ parameters:
+ - in: path
+ name: personGuid
+ required: true
+ schema:
+ type: string
+ example: 11111111-1111-1111-1111-111111111111
+ responses:
+ "200":
+ description: Successful response
+ content:
+ application/json: {}
+ tags:
+ - persons
+
components:
schemas:
Ranks:
@@ -191,7 +676,8 @@ components:
example: ""
footer:
type: string
- example: "NOTES: The requirements for Scout, Tenderfoot, Second
+ example:
+ "NOTES: The requirements for Scout, Tenderfoot, Second
Class, and First Class ranks may be worked on simultaneously;
however, these ranks must be earned in sequence.
@@ -209,7 +695,8 @@ components:
Scoutmaster in consultation with your parent or guardian."
header:
type: string
- example: "All requirements for the Scout rank must be completed as a member of a
+ example:
+ "All requirements for the Scout rank must be completed as a member of a
troop or as a Lone Scout. If you have already completed these
requirements as part of the Webelos Scouting Adventure, simply
demonstrate your knowledge or skills to your Scoutmaster or other