feat(Developers): Add support for Globus Auth Developer Resource API#698
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #698 +/- ##
==========================================
+ Coverage 94.96% 95.25% +0.29%
==========================================
Files 77 84 +7
Lines 1450 1561 +111
Branches 228 248 +20
==========================================
+ Hits 1377 1487 +110
- Misses 72 73 +1
Partials 1 1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| admins: { | ||
| identities: ProjectIdentity[]; | ||
| groups: components['schemas']['GroupReadModel'][]; | ||
| } & ProjectAdminIDs; |
There was a problem hiding this comment.
Are ProjectAdminIDs maybe deprecated in the read contexts? If so, I'm thinking maybe drop them from Project and only include them as part of the payload type for the create; I don't think the optional type on the properties here is actually correct on read.
There was a problem hiding this comment.
It's oddly redundant, but the admin ids array and the admins object are both returned by the get endpoints.
There was a problem hiding this comment.
Looking at this again, I think maybe I was confused by the name of the type, this seems to only be used for the create, update, and delete responses – are those different than the GET?
I'm seeing the following shape on GET which is a bit different than what is expressed here:
{
"admin_ids": [
"404dc881-52ef-47f8-a84c-3ce9547f2803",
"1d882f51-d48e-4a00-baeb-26498b532bf3"
],
"admin_group_ids": [],
"admins": {
"identities": [
{
"organization": "Data Movers Worldwide",
"username": "joebotti1@globusid.org",
"status": "used",
"identity_type": "login",
"identity_provider": "41143743-f3c8-4d60-bbdb-eeecaba85bd9",
"name": "Joe Bottigliero (test1)",
"id": "404dc881-52ef-47f8-a84c-3ce9547f2803",
"email": "joebott+joebotti_test1@globus.org"
},
{
"organization": "Globus Staff",
"username": "joebott@globus.org",
"status": "used",
"identity_type": "login",
"identity_provider": "cf133617-586b-41cb-b11a-4132d7968295",
"name": "Joe Bottigliero",
"id": "1d882f51-d48e-4a00-baeb-26498b532bf3",
"email": "joebott@globus.org"
}
],
"groups": []
},
"project_name": "Test",
"contact_email": "joebott@globus.org",
"display_name": "Test",
"id": "f9772f11-48d2-4d2a-adcb-8d5cb9df0144"
}There was a problem hiding this comment.
|
|
||
| /** | ||
| * Delete a policy by id. | ||
| * @see https://docs.globus.org/api/auth/reference/#delete_policy |
There was a problem hiding this comment.
- Missing link (maybe one of the
docs.issues you mentioned) - Looking at the response of the delete here, it looks like we're missing a response wrapper.
What I was seeing:
{
"policy": {
"domain_constraints_exclude": null,
"description": "My New Policy",
"authentication_assurance_timeout": null,
"display_name": "Policy to Delete",
"high_assurance": false,
"required_mfa": false,
"domain_constraints_include": null,
"id": "36ab6a86-aa62-43d0-8b96-067033dbcdfc",
"project_id": "b2a0bc49-d1d0-4deb-aa08-78ff6e2e1e81"
}
}There was a problem hiding this comment.
I think a few of these resources are missing the response envelopes that are returned from the service.
There was a problem hiding this comment.
I will reach out about that missing link, and you're correct about the wrappers. That should be corrected now.
| admins: { | ||
| identities: ProjectIdentity[]; | ||
| groups: components['schemas']['GroupReadModel'][]; | ||
| } & ProjectAdminIDs; |
There was a problem hiding this comment.
Looking at this again, I think maybe I was confused by the name of the type, this seems to only be used for the create, update, and delete responses – are those different than the GET?
I'm seeing the following shape on GET which is a bit different than what is expressed here:
{
"admin_ids": [
"404dc881-52ef-47f8-a84c-3ce9547f2803",
"1d882f51-d48e-4a00-baeb-26498b532bf3"
],
"admin_group_ids": [],
"admins": {
"identities": [
{
"organization": "Data Movers Worldwide",
"username": "joebotti1@globusid.org",
"status": "used",
"identity_type": "login",
"identity_provider": "41143743-f3c8-4d60-bbdb-eeecaba85bd9",
"name": "Joe Bottigliero (test1)",
"id": "404dc881-52ef-47f8-a84c-3ce9547f2803",
"email": "joebott+joebotti_test1@globus.org"
},
{
"organization": "Globus Staff",
"username": "joebott@globus.org",
"status": "used",
"identity_type": "login",
"identity_provider": "cf133617-586b-41cb-b11a-4132d7968295",
"name": "Joe Bottigliero",
"id": "1d882f51-d48e-4a00-baeb-26498b532bf3",
"email": "joebott@globus.org"
}
],
"groups": []
},
"project_name": "Test",
"contact_email": "joebott@globus.org",
"display_name": "Test",
"id": "f9772f11-48d2-4d2a-adcb-8d5cb9df0144"
}| contact_email: string; | ||
| admins: { | ||
| identities: ProjectIdentity[]; | ||
| groups: components['schemas']['GroupReadModel'][]; |
There was a problem hiding this comment.
I didn't catch this the first time around, but I'm not sure it is correct:
// GET https://auth.test.globuscs.info/v2/api/projects/f9772f11-48d2-4d2a-adcb-8d5cb9df0144
{
"project": {
"admin_ids": [
"404dc881-52ef-47f8-a84c-3ce9547f2803",
"1d882f51-d48e-4a00-baeb-26498b532bf3"
],
"admin_group_ids": [
"bb37e15b-01f0-11ec-9555-7f3dd3279a10"
],
"admins": {
"identities": [
{
"organization": "Data Movers Worldwide",
"username": "joebotti1@globusid.org",
"status": "used",
"identity_type": "login",
"identity_provider": "41143743-f3c8-4d60-bbdb-eeecaba85bd9",
"name": "Joe Bottigliero (test1)",
"id": "404dc881-52ef-47f8-a84c-3ce9547f2803",
"email": "joebott+joebotti_test1@globus.org"
},
{
"organization": "Globus Staff",
"username": "joebott@globus.org",
"status": "used",
"identity_type": "login",
"identity_provider": "cf133617-586b-41cb-b11a-4132d7968295",
"name": "Joe Bottigliero",
"id": "1d882f51-d48e-4a00-baeb-26498b532bf3",
"email": "joebott@globus.org"
}
],
"groups": [
{
"id": "bb37e15b-01f0-11ec-9555-7f3dd3279a10"
}
]
},
"project_name": "Test",
"contact_email": "joebott@globus.org",
"display_name": "Test",
"id": "f9772f11-48d2-4d2a-adcb-8d5cb9df0144"
}
}For the PUT payload we're also only sending [ { id: string } ] which is what I would expect (not required to embed the whole object) and the response looks like it is the same as the GET.
There was a problem hiding this comment.
This looks like it still might not be addressed; I think admins.groups is just { id: string }[]
ae97761 to
3425105
Compare
a6c7bbd to
318ea07
Compare
318ea07 to
f3e760e
Compare
jbottigliero
left a comment
There was a problem hiding this comment.
I think the Project.admins.groups is the only issue that needs to be addressed before we can get this landed for canary consumption.
| contact_email: string; | ||
| admins: { | ||
| identities: ProjectIdentity[]; | ||
| groups: components['schemas']['GroupReadModel'][]; |
There was a problem hiding this comment.
This looks like it still might not be addressed; I think admins.groups is just { id: string }[]
| scope_id, | ||
| options = {}, | ||
| sdkOptions?, | ||
| ): Promise<JSONFetchResponse<WrappedScope>> { |
There was a problem hiding this comment.
🤖 I have created a release *beep* *boop* --- ## [6.3.0](v6.2.0...v6.3.0) (2026-06-02) ### Features * **Auth:** Adds `next` exports for auth.identities ([#767](#767)) ([92c02f8](92c02f8)) * Adds remaining `next` export for `transfer` and `auth.developers` ([#770](#770)) ([1f05298](1f05298)) * **Auth:** adds `next` exports to Developers resources ([#769](#769)) ([8376d22](8376d22)) * **Compute:** Adds `next` exports to Compute resources ([#760](#760)) ([ab6b2ab](ab6b2ab)) * **Developers:** Add support for Globus Auth Developer Resource API (https://docs.globus.org/api/auth/reference/#clients_and_scopes_api) ([#698](#698)) ([9181bc2](9181bc2)) * **Flows:** Adds `next` exports to Flows resources ([#759](#759)) ([6686ec1](6686ec1)) * **Groups:** Adds `next` exports to Groups resources ([#757](#757)) ([89c16c3](89c16c3)) * provides implementation for allowing `next` signatures with GCS ([#772](#772)) ([52863ec](52863ec)) * **Search:** adds (Search Index) Task-related methods ([#780](#780)) ([a176bff](a176bff)) * **Search:** Adds `next` exports to Search resources ([#756](#756)) ([ae9d4a2](ae9d4a2)) * **Timers:** Adds `next` exports to Timers resources ([#758](#758)) ([d4a7773](d4a7773)) * **Transfer:** adds 'next' export for Stream Access Points ([#764](#764)) ([8a8429d](8a8429d)) * **Transfer:** adds 'next' export for Task and Task Submission ([#765](#765)) ([1444707](1444707)) * **Transfer:** Adds 'next' export to transfer.fileOperations ([#762](#762)) ([848eb37](848eb37)) * **Transfer:** Adds 'next' exports to collection bookmarks, endpoints, and endpoint search ([#763](#763)) ([366d354](366d354)) * **Transfer:** Adds `transfer.v2.bookmarks` integration ([#835](#835)) ([36d33f3](36d33f3)) ### Bug Fixes * **Auth, Identities:** Update the 'next' return type key name for ([78c6781](78c6781)) * **Flows:** update service export paths ([#848](#848)) ([c6fcbf9](c6fcbf9)) * Move token-related methods in auth to an separate file to avoid circular references in `src/services/shared.ts` ([#768](#768)) ([78c6781](78c6781)) * **Search, Typescript:** addresses issues with GFilter and GBucket types ([#779](#779)) ([0feb7d7](0feb7d7)) * **Search, Typescript:** Allow creating GSearchRequest without 'q' (but requiring 'filters') ([#777](#777)) ([79beaba](79beaba)) * **Search:** Updates `query.next` methods to Generics ([#766](#766)) ([e0e7959](e0e7959)) * **Streams:** Ensures `payload` wrapper is not included in Tunnel RPC methods payload processing. ([#721](#721)) ([8eef7eb](8eef7eb)) * **Transfer, Typescript:** Mark `fileOperations.stat` `query` parameter as required. ([#737](#737)) ([c051957](c051957)) * **Transfer:** Updates Transfer API host to transfer.api.globus.org ([#732](#732)) ([2afde47](2afde47)) * **Typescript, Search:** `q_settings`,`advanced` mutual exclusivity ([#820](#820)) ([2af5e30](2af5e30)) * **Typescript, Transfer:** fix marker pagination response ([#807](#807)) ([35f51e3](35f51e3)) * **Typescript,Transfer:** getSuccessfulTransfers return type ([#819](#819)) ([a324049](a324049)) * **Typescript:** fix and export IdentityResponse type ([5fa1dee](5fa1dee)) * **Typescript:** use BaseServiceMethodOptions in ServiceMethodDynamicSegments ([#713](#713)) ([0fb2315](0fb2315)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>


[sc-46504]