From 1c4496b9d533b00d38cd01c5a4e8a1d9ea1589c1 Mon Sep 17 00:00:00 2001 From: Benn Oshrin Date: Sun, 2 Jan 2022 19:48:35 -0500 Subject: [PATCH 1/2] Initial Namespace API draft --- namespace-api.adoc | 409 +++++++++++++++++++++++++++ schema/json/allocation-response.json | 43 +++ schema/json/specific-request.json | 24 ++ schema/json/standard-request.json | 23 ++ schema/json/suggestion-response.json | 41 +++ 5 files changed, 540 insertions(+) create mode 100644 namespace-api.adoc create mode 100644 schema/json/allocation-response.json create mode 100644 schema/json/specific-request.json create mode 100644 schema/json/standard-request.json create mode 100644 schema/json/suggestion-response.json diff --git a/namespace-api.adoc b/namespace-api.adoc new file mode 100644 index 0000000..5086cce --- /dev/null +++ b/namespace-api.adoc @@ -0,0 +1,409 @@ +TAP Namespace Protocol +====================== +:Date: January 2022 +:Revision: v0.1 +:toc: macro +:!toc-title: +:toclevels: 3 + +**** +{revision} {date} + +Copyright (C) 2022 +University Corporation for Advanced Internet Development, Inc. +**** + +toc::[] + +About Namespace Management +-------------------------- +Many campuses and organizations have complex requirements around the assignment +and management of identifiers. For example, if the Computer Science department +creates a CS username, that username might be required to be non-conflicting +with any existing campus username; or the allocation of a department email alias +should prevent that alias from being allocated as a campus username. This +challenge is referred to as _namespace management_. + +About the Namespace API +----------------------- +The TAP Namespace API is concerned only with the communication of requests by a +client (the _Namespace Consumer_) to obtain an _allocation_ from the namespace +server (the _Namespace Manager_). All policy considerations, such as which +identifiers are valid, which algorithms are used to generate identifiers, and +which identifier types may assign conflicting identifiers, are out of scope for +the Namespace API. + +All services described in this document are mandatory unless otherwise stated. + +Resources +~~~~~~~~~ +The Namespace API operates with a primary resource of an _Allocation_. The goal +of a client is to obtain an allocation for a subject. + +Namespace API allocation requests are _typed_. Typically, types refer to types +of identifiers, such as a NetID or Enterprise ID, but the API makes no such +assumption and considers types to simply be groups of strings. As such, types +may also represent email addresses, domain names, or even parking spaces. + +A successful allocation results in the return of a _token_ of the requested +type. The API makes no statements about what algorithms are used to generate +tokens of any type. It is up to the Namespace Manager to determine which +algorithm to use in response to any allocation request. + +Although not required, it is strongly recommended that HTTPS be used for all +transactions. + +Attributes +~~~~~~~~~~ + +[[created]] +created ++++++++ +The time when the token was created. +|=========================================================================== +|*Type* |datetime +|=========================================================================== + +[[expiration]] +expiration +++++++++++ +The time when the reservation for this token will be released. +|=========================================================================== +|*Type* |datetime +|=========================================================================== + +[[requester]] +requester ++++++++++ +A Namespace Manager specific string describing the Namespace Consumer that +requested the token. The _requester_ value may or may not be the same string +used in the authentication mechanism. +|=========================================================================== +|*Plural* |requesters +|*Type* |string +|=========================================================================== + +[[status]] +status +++++++ +The status of a token. Defined values are + +* *active*: The token has been allocated for use +* *reserved*: The token has been reserved for use until the time indicated by + `expiration` + +|========================= +|*Type* |extensibleEnumeration +|========================= + +[[subject]] +subject ++++++++ +A Namespace Consumer specific string describing the subject of a given +allocation request. The Namespace Manager should not do anything with the +subject label beyond storing it for accounting or auditing purposes. +|=========================================================================== +|*Plural* |subjects +|*Type* |string +|=========================================================================== + +[[suggestedToken]] +suggestedToken +++++++++++++++ +A token generated by the Namespace Manager in response to a _Suggest Token +Request_. +|=========================================================================== +|*Plural* |suggestedTokens +|*Type* |string +|=========================================================================== + +[[suggestions]] +suggestions ++++++++++++ +The number of suggested tokens requested by the Namespace Consumer. +|========================= +|*Type* |integer +|========================= + +[[token]] +token ++++++ +The result of a successful Allocation request. +|=========================================================================== +|*Plural* |tokens +|*Type* |string +|=========================================================================== + +Namespace Allocation Request +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The objective of a Namespace Allocation Request is to obtain a new token of the +requested type. Tokens are conveyed as JSON strings. + +Note the API does not require any specific policy around the generation of +tokens, and so a Namespace Allocation Request may result in a response of a +token that has been previously generated and assigned, if the server +configuration permits. The Namespace Manager determines how the assignment of a +token of a given type affects availability of that same token for other types, +if at all. + +Standard Request +^^^^^^^^^^^^^^^^ +The Standard Request asks the Namespace Manager to immediately allocate a token +of the requested type. Because certain identifiers may be based on attributes of +the subject, such as the subject's name, the Namespace Consumer may include a +bundle of attributes useful for identifier construction with its request. The +Namespace API does not require any specific attributes, and the specification of +which attributes must be provided is outside the scope of the API. + +|===== +|*Request Method* |`POST` +|*Request Endpoint* |`/v1/allocations/` +|*Request Body* a|link:schema/json/standard-request.json[_Standard Request_ object] +|*Response Codes* a|* `201 Created` + * `400 Bad Request`, if required attributes were not provided + * `403 Forbidden` + * `409 Conflict`, if a new token cannot be generated based on the attributes provided +|*Response Body* a|* On `201 Created`, link:schema/json/allocation-response.json[Allocation + Response] object +|===== + +.Example Standard Request +---- +POST /v1/allocations/network +{ + "subject": "1794538", + "attributes": + { + "names":[ + { + "type":"official", + "given":"Pat", + "family":"Lee" + } + ] + } +} + +201 Created +{ + "meta": { + "subject": "1794538", + "created": "2022-01-05T17:51:03Z", + "requester": "registry" + }, + "token": "pl225" +} +---- + +Specific Token Request +^^^^^^^^^^^^^^^^^^^^^^ +A Namespace Consumer may request a specific token from the Namespace Manager. + +|===== +|*Request Method* |`PUT` +|*Request Endpoint* |`/v1/allocations//` +|*Request Body* a|link:schema/json/specific-request.json[_Specific Request_ object] +|*Response Codes* a|* `201 Created` + * `403 Forbidden` + * `409 Conflict`, if the requested token is already in use +|*Response Body* a|* On `201 Created`, link:schema/json/allocation-response.json[Allocation + Response] object +|===== + +.Example Specific Token Request +---- +PUT /v1/allocations/network/pl235 +{ + "subject": "1794538", + "status": "active" +} + +201 Created +{ + "meta": { + "subject": "1794538", + "created": "2022-01-05T17:51:03Z", + "requester": "registry" + }, + "token": "pl235" +} +---- + +Reserve Token Request +^^^^^^^^^^^^^^^^^^^^^ +A Namespace Consumer may reserve a specific token from the Namespace Manager. +The reservation request may include an advisory reservation expiration time, +which the Namespace Manager may or may not choose to honor. + +|===== +|*Request Method* |`PUT` +|*Request Endpoint* |`/v1/allocations//` +|*Request Body* a|link:schema/json/specific-request.json[_Specific Request_ object] +|*Response Codes* a|* `201 Created` + * `403 Forbidden` + * `409 Conflict`, if the requested token is already in use + * `429 Too Many Requests`, if the client has too many outstanding reservations +|*Response Body* a|* On `201 Created`, link:schema/json/allocation-response.json[Allocation + Response] object +|===== + +.Example Specific Token Request +---- +PUT /v1/allocations/network/pl235 +{ + "subject": "1794538", + "status": "reserved", + "expiration": "2022-01-08T11:23:37Z" +} + +201 Created +{ + "meta": { + "subject": "1794538", + "created": "2022-01-05T17:51:03Z", + "expiration": "2022-01-07T23:59:59Z" + }, + "token": "pl235", +} +---- + +Confirm Token Request +^^^^^^^^^^^^^^^^^^^^^ +Once the Namespace Consumer is ready to confirm the token previously reserved, +the _Confirm Token Request_ is used. + +|===== +|*Request Method* |`PATCH` +|*Request Endpoint* |`/v1/allocations//` +|*Request Body* a|link:schema/json/specific-request.json[_Specific Request_ object] +|*Response Codes* a|* `200 OK` + * `403 Forbidden` + * `404 Not Found`, if no matching reserved token was found + * `408 Request Timeout`, if the reservation expired +|===== + +.Example Confirm Token Request +---- +PATCH /v1/allocations/network/pl235 +{ + "status": "active" +} +---- + +Release Token Request +^^^^^^^^^^^^^^^^^^^^^ +If the Namespace Consumer will not confirm the token previously reserved, +the _Release Token Request_ is used to make the token available for assignment. + +The _Release Token Request_ may also be used by a Namespace Consumer to +indicate that an _active_ token is no longer in use by the Consumer. Whether +the token becomes available for reassignment is determined by the Namespace +Manager. + +|===== +|*Request Method* |`DELETE` +|*Request Endpoint* |`/v1/allocations//` +|*Response Codes* a|* `200 OK` + * `403 Forbidden` + * `404 Not Found`, if no matching token was found + * `408 Request Timeout`, if the reservation expired +|===== + +.Example Confirm Token Request +---- +DELETE /v1/allocations/network/pl235 +---- + +Suggest Token Request +^^^^^^^^^^^^^^^^^^^^^ +The Namespace Consumer may request token suggestions from the Namespace Manager. +This allows, for example, presentation of suggested usernames to the subject. It +is up to the Namespace Manager to determine if such suggestions are reserved or +not, which may be indicated using the `expiration` metadata attribute in the +response. + +The Namespace Consumer should indicate the selected suggestions using the +_Specific Token Request_ (and _not_ the _Confirm Token Request_). Upon receipt +of the Specific Token Request, the Namespace Manager should release any +associated reservations. In the event the requested token is no longer +available, the Namespace Manager should respond with `409 Conflict`. + +|===== +|*Request Method* |`POST` +|*Request Endpoint* |`/v1/allocations/` +|*Request Body* a|link:schema/json/standard-request.json[_Standard Request_ object] +|*Response Codes* a|* `200 OK` + * `400 Bad Request`, if required attributes were not provided + * `403 Forbidden` +|*Response Body* a|* On `200 OK`, link:schema/json/suggestion-response.json[Suggestion + Response] object +|===== + +.Example Standard Request +---- +POST /v1/allocations/network +{ + "subject": "1794538", + "suggestions": 5, + "attributes": + { + "names":[ + { + "type":"official", + "given":"Pat", + "family":"Lee" + } + ] + } +} + +200 OK +{ + "meta": { + "subject": "1794538", + "created": "2022-01-05T17:51:03Z", + "requester": "registry", + "expiration": "2021-01-07T23:59:59Z" + }, + "suggestedTokens": [ + "pl227", + "pl555", + "plee88", + "plee279", + "patlee3" + ] +} +---- + +Get Token Status +^^^^^^^^^^^^^^^^ +The Namespace Consumer may request status information associated with a token. +The Namespace Manager may determine whether Consumers may request status +information for tokens they did not create. + +|===== +|*Request Method* |`GET` +|*Request Endpoint* |`/v1/allocations//` +|*Response Codes* a|* `200 OK` + * `403 Forbidden` + * `404 Not Found` +|*Response Body* a|* On `200 OK`, link:schema/json/allocation-response.json[Allocation + Status Response] object +|===== + +.Example Token Status Request +---- +GET /v1/allocations/network/pl255 + +200 OK +{ + "meta": { + "status": "reserved", + "subject": "1794538", + "created": "2022-01-05T17:51:03Z", + "expiration": "2021-01-07T23:59:59Z", + "requester": "registry" + }, + "token": "pl225" +} +---- diff --git a/schema/json/allocation-response.json b/schema/json/allocation-response.json new file mode 100644 index 0000000..0bb10de --- /dev/null +++ b/schema/json/allocation-response.json @@ -0,0 +1,43 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "https://github.internet2.edu/api-schema/namespace-api/blob/draft/schema/json/allocation-response.json", + "title": "TAP Namespace Allocation Response", + "description": "Namespace allocation response", + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "subject": { + "description": "Allocation request subject", + "type": "string" + }, + "requester": { + "description": "The Namespace Consumer that originally requested this token", + "type": "string" + }, + "created": { + "description": "Time allocation was created", + "type": "string", + "format": "date-time" + }, + "expiration": { + "description": "Time allocation reservation expires", + "type": "string", + "format": "date-time" + }, + "status": { + "description": "Allocation request status", + "type": "string", + "enum": [ "active", "reserved" ] + } + }, + "required": [ "subject", "created" ] + }, + "token": { + "description": "Namespace allocation", + "type": "string" + } + }, + "required": [ "token" ] +} \ No newline at end of file diff --git a/schema/json/specific-request.json b/schema/json/specific-request.json new file mode 100644 index 0000000..7268896 --- /dev/null +++ b/schema/json/specific-request.json @@ -0,0 +1,24 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "https://github.internet2.edu/api-schema/namespace-api/blob/draft/schema/json/specific-request.json", + "title": "TAP Namespace Specific Request", + "description": "Specific Namespace Request", + "type": "object", + "properties": { + "subject": { + "description": "Allocation request subject", + "type": "string" + }, + "status": { + "description": "Allocation request status", + "type": "string", + "enum": [ "active", "reserved" ] + }, + "expiration": { + "description": "Time allocation reservation expires", + "type": "string", + "format": "date-time" + } + }, + "required": [ "subject", "status" ] +} \ No newline at end of file diff --git a/schema/json/standard-request.json b/schema/json/standard-request.json new file mode 100644 index 0000000..093d803 --- /dev/null +++ b/schema/json/standard-request.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "https://github.internet2.edu/api-schema/namespace-api/blob/draft/schema/json/standard-request.json", + "title": "TAP Namespace Standard Request", + "description": "Standard Namespace Request", + "type": "object", + "properties": { + "subject": { + "description": "Allocation request subject", + "type": "string" + }, + "attributes": { + "description": "Attributes that may be used to construct tokens", + "$ref": "https://github.internet2.edu/raw/api-schema/attribute-dictionary/blob/draft/schema/json/attribute-dictionary.json#/properties/mixed" + }, + "suggestions": { + "description": "Number of suggested tokens requested from the Manager", + "type": "integer", + "minimum": 1 + } + }, + "required": [ "subject" ] +} \ No newline at end of file diff --git a/schema/json/suggestion-response.json b/schema/json/suggestion-response.json new file mode 100644 index 0000000..58c0606 --- /dev/null +++ b/schema/json/suggestion-response.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "https://github.internet2.edu/api-schema/namespace-api/blob/draft/schema/json/suggestion-response.json", + "title": "TAP Namespace Suggestion Response", + "description": "Namespace Suggestion response", + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "subject": { + "description": "Allocation request subject", + "type": "string" + }, + "requester": { + "description": "The Namespace Consumer that originally requested this token", + "type": "string" + }, + "created": { + "description": "Time allocation was created", + "type": "string", + "format": "date-time" + }, + "expiration": { + "description": "Time allocation reservation expires", + "type": "string", + "format": "date-time" + } + }, + "required": [ "subject", "created" ] + }, + "suggestedTokens": { + "description": "Suggested tokens", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ "suggestedTokens" ] +} \ No newline at end of file From 88bbb5c59eb70c54322feed6ec260c19f43c8936 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Tue, 18 Apr 2023 09:23:03 -0500 Subject: [PATCH 2/2] Add files via upload --- nSpaceApi.pdf | Bin 0 -> 55938 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 nSpaceApi.pdf diff --git a/nSpaceApi.pdf b/nSpaceApi.pdf new file mode 100644 index 0000000000000000000000000000000000000000..91f688d6025edb9fb534e64bc18f596c301cf596 GIT binary patch literal 55938 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ËM&VcT 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 OoZPU$&O8MP*#8S&RxxM* literal 0 HcmV?d00001