From faf7f2d997712433695d3324f91aa1b328e8ec93 Mon Sep 17 00:00:00 2001 From: sg481n Date: Fri, 22 Sep 2017 17:17:23 +0000 Subject: [PATCH] Adding rst files for the readthedocs documentation created intital rst documents for the readthedocs documentation for aaf project. Issue-id: AAF-64 Change-Id: I4a7f259311b687a3cfe6fde1d068f0b1941bc6bb Signed-off-by: sg481n --- docs/AAF-API-Documentation.rst | 3206 ++++++++++++++++++++++++++++++++++++++++ docs/aaf-object-model.jpg | Bin 0 -> 189989 bytes docs/index.rst | 45 + 3 files changed, 3251 insertions(+) create mode 100644 docs/AAF-API-Documentation.rst create mode 100644 docs/aaf-object-model.jpg create mode 100644 docs/index.rst diff --git a/docs/AAF-API-Documentation.rst b/docs/AAF-API-Documentation.rst new file mode 100644 index 00000000..05d516ec --- /dev/null +++ b/docs/AAF-API-Documentation.rst @@ -0,0 +1,3206 @@ +AT&T Auth Tool +============== + +-------------- + +AAF 2.0 RESTful interface +========================= + +-------------- + +Accessing RESTful +----------------- + +AAF RESTful service is secured by the following: + +The Client must utilize HTTP/S. Non Secure HTTP is not acceptable + +The Client MUST supply an Identity validated by one of the following mechanisms + +- Valid Global Login Cookie (CSP) +- BASIC AUTH protocol using CSO Registered MechID, provisioned in AAF +- (Near Future) Application level Certificate & oAuth + +Responses + +Each API Entity listed shows what structure will be accepted by service (ContentType) or responded with by service (Accept). Therefore, use these in making your call. Critical for PUT/POST. + +Each API call may respond with JSON or XML. Choose the ContentType/Accept that has +json after the type for JSON or +xml after the Type for XML + +XSDs for Versions + + +AAF can support multiple Versions of the API. Choose the ContentType/Accept that has the appropriate version=?.? + + +Character Restrictions + +- Character Restrictions must depend on the Enforcement Point used +- Most AAF usage will be AAF Enforcement Point Characters for Instance and Action are: + *a-zA-Z0-9,.()\_-=%* + For Instance, you may declare a multi-dimensional key with : (colon) separator, example: + +Ask for a Consultation on how these are typically used, or, if your tool is the only Enforcement Point, if set may be expanded + ++--------------------+--------------------+--------------------+--------------------+ +| Entity | Method | Path Info | Description | ++====================+====================+====================+====================+ +| PERMISSION | POST | /authz/perm | Create a | +| | | | Permission | +| | | | | +| | | | Permission | +| | | | consists of: | +| | | | | +| | | | - type - a | +| | | | Namespace | +| | | | qualified | +| | | | identifier | +| | | | specifying what | +| | | | kind of | +| | | | resource is | +| | | | being protected | +| | | | - instance - a | +| | | | key, possibly | +| | | | multi-dimension | +| | | | al, | +| | | | that identifies | +| | | | a specific | +| | | | instance of the | +| | | | type | +| | | | - action - what | +| | | | kind of action | +| | | | is allowed | +| | | | | +| | | | Note: instance and | +| | | | action can be an | +| | | | \* | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 201 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406, 409 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybVJ | +| | | | lcXVlc3QranNvbjtxP | +| | | | TEuMDtjaGFyc2V0PXV | +| | | | 0Zi04O3ZlcnNpb249M | +| | | | i4wLGFwcGxpY2F0aW9 | +| | | | uL2pzb247cT0xLjA7d | +| | | | mVyc2lvbj0yLjAsKi8 | +| | | | qO3E9MS4w>`__\ app | +| | | | lication/PermReque | +| | | | st+json;q=1.0;char | +| | | | set=utf-8;version= | +| | | | 2.0,application/js | +| | | | on;q=1.0;version=2 | +| | | | .0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybVJ | +| | | | lcXVlc3QreG1sO3E9M | +| | | | S4wO2NoYXJzZXQ9dXR | +| | | | mLTg7dmVyc2lvbj0yL | +| | | | jAsdGV4dC94bWw7cT0 | +| | | | xLjA7dmVyc2lvbj0yL | +| | | | jA=>`__\ applicati | +| | | | on/PermRequest+xml | +| | | | ;q=1.0;charset=utf | +| | | | -8;version=2.0,tex | +| | | | t/xml;q=1.0;versio | +| | | | n=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | PUT | /authz/perm | Set Description | +| | | | for Permission | +| | | | | +| | | | Add Description | +| | | | Data to Perm | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybVJ | +| | | | lcXVlc3QranNvbjtxP | +| | | | TEuMDtjaGFyc2V0PXV | +| | | | 0Zi04O3ZlcnNpb249M | +| | | | i4wLGFwcGxpY2F0aW9 | +| | | | uL2pzb247cT0xLjA7d | +| | | | mVyc2lvbj0yLjAsKi8 | +| | | | qO3E9MS4w>`__\ app | +| | | | lication/PermReque | +| | | | st+json;q=1.0;char | +| | | | set=utf-8;version= | +| | | | 2.0,application/js | +| | | | on;q=1.0;version=2 | +| | | | .0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybVJ | +| | | | lcXVlc3QreG1sO3E9M | +| | | | S4wO2NoYXJzZXQ9dXR | +| | | | mLTg7dmVyc2lvbj0yL | +| | | | jAsdGV4dC94bWw7cT0 | +| | | | xLjA7dmVyc2lvbj0yL | +| | | | jA=>`__\ applicati | +| | | | on/PermRequest+xml | +| | | | ;q=1.0;charset=utf | +| | | | -8;version=2.0,tex | +| | | | t/xml;q=1.0;versio | +| | | | n=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | DELETE | /authz/perm | Delete a | +| | | | Permission | +| | | | | +| | | | Delete the | +| | | | Permission | +| | | | referenced by | +| | | | PermKey. | +| | | | | +| | | | You cannot | +| | | | normally delete a | +| | | | permission which | +| | | | is still granted | +| | | | to roles, | +| | | | | +| | | | however the | +| | | | "force" property | +| | | | allows you to do | +| | | | just that. To do | +| | | | this: Add | +| | | | | +| | | | 'force=true' as a | +| | | | query parameter. | +| | | | | +| | | | WARNING: Using | +| | | | force will ungrant | +| | | | this permission | +| | | | from all roles. | +| | | | Use with care. | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybVJ | +| | | | lcXVlc3QranNvbjtxP | +| | | | TEuMDtjaGFyc2V0PXV | +| | | | 0Zi04O3ZlcnNpb249M | +| | | | i4wLGFwcGxpY2F0aW9 | +| | | | uL2pzb247cT0xLjA7d | +| | | | mVyc2lvbj0yLjAsKi8 | +| | | | qO3E9MS4w>`__\ app | +| | | | lication/PermReque | +| | | | st+json;q=1.0;char | +| | | | set=utf-8;version= | +| | | | 2.0,application/js | +| | | | on;q=1.0;version=2 | +| | | | .0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybVJ | +| | | | lcXVlc3QreG1sO3E9M | +| | | | S4wO2NoYXJzZXQ9dXR | +| | | | mLTg7dmVyc2lvbj0yL | +| | | | jAsdGV4dC94bWw7cT0 | +| | | | xLjA7dmVyc2lvbj0yL | +| | | | jA=>`__\ applicati | +| | | | on/PermRequest+xml | +| | | | ;q=1.0;charset=utf | +| | | | -8;version=2.0,tex | +| | | | t/xml;q=1.0;versio | +| | | | n=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | DELETE | /authz/perm/:name/ | Delete a | +| | | :type/:action | Permission | +| | | | | +| | | | Delete the | +| | | | Permission | +| | | | referenced by | +| | | | :type :instance | +| | | | :action | +| | | | | +| | | | You cannot | +| | | | normally delete a | +| | | | permission which | +| | | | is still granted | +| | | | to roles, | +| | | | | +| | | | however the | +| | | | "force" property | +| | | | allows you to do | +| | | | just that. To do | +| | | | this: Add | +| | | | | +| | | | 'force=true' as a | +| | | | query parameter | +| | | | | +| | | | WARNING: Using | +| | | | force will ungrant | +| | | | this permission | +| | | | from all roles. | +| | | | Use with care. | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | type : string | +| | | | (Required) | +| | | | | +| | | | instance : string | +| | | | (Required) | +| | | | | +| | | | action : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybUt | +| | | | leStqc29uO3E9MS4wO | +| | | | 2NoYXJzZXQ9dXRmLTg | +| | | | 7dmVyc2lvbj0yLjAsY | +| | | | XBwbGljYXRpb24vanN | +| | | | vbjtxPTEuMDt2ZXJza | +| | | | W9uPTIuMCwqLyo7cT0 | +| | | | xLjA=>`__\ applica | +| | | | tion/PermKey+json; | +| | | | q=1.0;charset=utf- | +| | | | 8;version=2.0,appl | +| | | | ication/json;q=1.0 | +| | | | ;version=2.0,\*/\* | +| | | | ;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybUt | +| | | | leSt4bWw7cT0xLjA7Y | +| | | | 2hhcnNldD11dGYtODt | +| | | | 2ZXJzaW9uPTIuMCx0Z | +| | | | Xh0L3htbDtxPTEuMDt | +| | | | 2ZXJzaW9uPTIuMA==> | +| | | | `__\ application/P | +| | | | ermKey+xml;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,text/xml;q= | +| | | | 1.0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | PUT | /authz/perm/:type/ | Update a | +| | | :instance/:action | Permission | +| | | | | +| | | | Rename the | +| | | | Permission | +| | | | referenced by | +| | | | :type :instance | +| | | | :action, and | +| | | | rename | +| | | | (copy/delete) to | +| | | | the Permission | +| | | | described in | +| | | | PermRequest | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | type : string | +| | | | (Required) | +| | | | | +| | | | instance : string | +| | | | (Required) | +| | | | | +| | | | action : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406, 409 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybVJ | +| | | | lcXVlc3QranNvbjtxP | +| | | | TEuMDtjaGFyc2V0PXV | +| | | | 0Zi04O3ZlcnNpb249M | +| | | | i4wLGFwcGxpY2F0aW9 | +| | | | uL2pzb247cT0xLjA7d | +| | | | mVyc2lvbj0yLjAsKi8 | +| | | | qO3E9MS4w>`__\ app | +| | | | lication/PermReque | +| | | | st+json;q=1.0;char | +| | | | set=utf-8;version= | +| | | | 2.0,application/js | +| | | | on;q=1.0;version=2 | +| | | | .0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybVJ | +| | | | lcXVlc3QreG1sO3E9M | +| | | | S4wO2NoYXJzZXQ9dXR | +| | | | mLTg7dmVyc2lvbj0yL | +| | | | jAsdGV4dC94bWw7cT0 | +| | | | xLjA7dmVyc2lvbj0yL | +| | | | jA=>`__\ applicati | +| | | | on/PermRequest+xml | +| | | | ;q=1.0;charset=utf | +| | | | -8;version=2.0,tex | +| | | | t/xml;q=1.0;versio | +| | | | n=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/perms/:type | Get Permissions by | +| | | | Type | +| | | | | +| | | | List All | +| | | | Permissions that | +| | | | match the :type | +| | | | element of the key | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | type : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Perms+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Perms | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/perms/:type | Get Permissions by | +| | | /:instance/:action | Key | +| | | | | +| | | | List Permissions | +| | | | that match key; | +| | | | :type, :instance | +| | | | and :action | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | type : string | +| | | | (Required) | +| | | | | +| | | | instance : string | +| | | | (Required) | +| | | | | +| | | | action : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Perms+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Perms | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/perms/ns/:n | Get PermsByNS | +| | | s | | +| | | | List All | +| | | | Permissions that | +| | | | are in Namespace | +| | | | :ns | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | ns : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MC4 | +| | | | y>`__\ application | +| | | | /Perms+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=0.2 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Perms | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/perms/role/ | Get Permissions by | +| | | :role | Role | +| | | | | +| | | | List All | +| | | | Permissions that | +| | | | are granted to | +| | | | :role | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | role : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Perms+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Perms | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | POST | /authz/perms/user/ | Get Permissions by | +| | | :user | User, Query AAF | +| | | | Perms | +| | | | | +| | | | List All | +| | | | Permissions that | +| | | | match user :user | +| | | | | +| | | | 'user' must be | +| | | | expressed as full | +| | | | identity (ex: | +| | | | id@full.domain.com | +| | | | ) | +| | | | | +| | | | Present Queries as | +| | | | one or more | +| | | | Permissions (see | +| | | | ContentType Links | +| | | | below for format). | +| | | | | +| | | | If the Caller is | +| | | | Granted this | +| | | | specific | +| | | | Permission, and | +| | | | the Permission is | +| | | | valid | +| | | | | +| | | | for the User, it | +| | | | will be included | +| | | | in response | +| | | | Permissions, along | +| | | | with | +| | | | | +| | | | all the normal | +| | | | permissions on the | +| | | | 'GET' version of | +| | | | this call. If it | +| | | | is not | +| | | | | +| | | | valid, or Caller | +| | | | does not have | +| | | | permission to see, | +| | | | it will be removed | +| | | | from the list | +| | | | | +| | | | \*Note: This | +| | | | design allows you | +| | | | to make one call | +| | | | for all expected | +| | | | permissions | +| | | | | +| | | | The permission to | +| | | | be included MUST | +| | | | be: | +| | | | | +| | | | .access\|:[:key]\| | +| | | | | +| | | | examples: | +| | | | | +| | | | com.onap.myns.acces | +| | | | s\|:ns\|write | +| | | | | +| | | | com.onap.myns.acces | +| | | | s\|:role:myrole\|c | +| | | | reate | +| | | | | +| | | | com.onap.myns.acces | +| | | | s\|:perm:mytype:my | +| | | | instance:myaction\ | +| | | | |read | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | user : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Perms+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Perms | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/perms/user/ | Get Permissions by | +| | | :user | User | +| | | | | +| | | | List All | +| | | | Permissions that | +| | | | match user :user | +| | | | | +| | | | 'user' must be | +| | | | expressed as full | +| | | | identity (ex: | +| | | | id@full.domain.com | +| | | | ) | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | user : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MC4 | +| | | | y>`__\ application | +| | | | /Perms+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=0.2 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUGVybXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Perms | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| ROLE | POST | /authz/role | Create Role | +| | | | | +| | | | Roles are part of | +| | | | Namespaces | +| | | | | +| | | | Examples: | +| | | | | +| | | | - com.onap.aaf - | +| | | | The team that | +| | | | created and | +| | | | maintains AAF | +| | | | - com.onap.csp - | +| | | | The team that | +| | | | created Global | +| | | | Login | +| | | | | +| | | | Roles do not | +| | | | include implied | +| | | | permissions for an | +| | | | App. Instead, they | +| | | | contain explicit | +| | | | Granted | +| | | | Permissions by any | +| | | | Namespace in AAF | +| | | | (See Permissions) | +| | | | | +| | | | Restrictions on | +| | | | Role Names: | +| | | | | +| | | | - Must start with | +| | | | valid Namespace | +| | | | name, | +| | | | terminated by . | +| | | | (dot/period) | +| | | | - Allowed | +| | | | Characters are | +| | | | a-zA-Z0-9.\_- | +| | | | - role names are | +| | | | Case Sensitive | +| | | | | +| | | | The right | +| | | | questions to ask | +| | | | for defining and | +| | | | populating a Role | +| | | | in AAF, therefore, | +| | | | are: | +| | | | | +| | | | - 'What Job | +| | | | Function does | +| | | | this | +| | | | represent?' | +| | | | - 'Does this | +| | | | person perform | +| | | | this Job | +| | | | Function?' | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 201 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406, 409 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVJ | +| | | | lcXVlc3QranNvbjtxP | +| | | | TEuMDtjaGFyc2V0PXV | +| | | | 0Zi04O3ZlcnNpb249M | +| | | | i4wLGFwcGxpY2F0aW9 | +| | | | uL2pzb247cT0xLjA7d | +| | | | mVyc2lvbj0yLjAsKi8 | +| | | | qO3E9MS4w>`__\ app | +| | | | lication/RoleReque | +| | | | st+json;q=1.0;char | +| | | | set=utf-8;version= | +| | | | 2.0,application/js | +| | | | on;q=1.0;version=2 | +| | | | .0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVJ | +| | | | lcXVlc3QreG1sO3E9M | +| | | | S4wO2NoYXJzZXQ9dXR | +| | | | mLTg7dmVyc2lvbj0yL | +| | | | jAsdGV4dC94bWw7cT0 | +| | | | xLjA7dmVyc2lvbj0yL | +| | | | jA=>`__\ applicati | +| | | | on/RoleRequest+xml | +| | | | ;q=1.0;charset=utf | +| | | | -8;version=2.0,tex | +| | | | t/xml;q=1.0;versio | +| | | | n=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | PUT | /authz/role | Set Description | +| | | | for role | +| | | | | +| | | | Add Description | +| | | | Data to a Role | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVJ | +| | | | lcXVlc3QranNvbjtxP | +| | | | TEuMDtjaGFyc2V0PXV | +| | | | 0Zi04O3ZlcnNpb249M | +| | | | i4wLGFwcGxpY2F0aW9 | +| | | | uL2pzb247cT0xLjA7d | +| | | | mVyc2lvbj0yLjAsKi8 | +| | | | qO3E9MS4w>`__\ app | +| | | | lication/RoleReque | +| | | | st+json;q=1.0;char | +| | | | set=utf-8;version= | +| | | | 2.0,application/js | +| | | | on;q=1.0;version=2 | +| | | | .0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVJ | +| | | | lcXVlc3QreG1sO3E9M | +| | | | S4wO2NoYXJzZXQ9dXR | +| | | | mLTg7dmVyc2lvbj0yL | +| | | | jAsdGV4dC94bWw7cT0 | +| | | | xLjA7dmVyc2lvbj0yL | +| | | | jA=>`__\ applicati | +| | | | on/RoleRequest+xml | +| | | | ;q=1.0;charset=utf | +| | | | -8;version=2.0,tex | +| | | | t/xml;q=1.0;versio | +| | | | n=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | DELETE | /authz/role | Delete Role | +| | | | | +| | | | Delete the Role | +| | | | referenced by | +| | | | RoleKey | +| | | | | +| | | | You cannot | +| | | | normally delete a | +| | | | role which still | +| | | | has permissions | +| | | | granted or users | +| | | | assigned to it, | +| | | | | +| | | | however the | +| | | | "force" property | +| | | | allows you to do | +| | | | just that. To do | +| | | | this: Add | +| | | | 'force=true' | +| | | | | +| | | | as a query | +| | | | parameter. | +| | | | | +| | | | WARNING: Using | +| | | | force will remove | +| | | | all users and | +| | | | permission from | +| | | | this role. Use | +| | | | with care. | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVJ | +| | | | lcXVlc3QranNvbjtxP | +| | | | TEuMDtjaGFyc2V0PXV | +| | | | 0Zi04O3ZlcnNpb249M | +| | | | i4wLGFwcGxpY2F0aW9 | +| | | | uL2pzb247cT0xLjA7d | +| | | | mVyc2lvbj0yLjAsKi8 | +| | | | qO3E9MS4w>`__\ app | +| | | | lication/RoleReque | +| | | | st+json;q=1.0;char | +| | | | set=utf-8;version= | +| | | | 2.0,application/js | +| | | | on;q=1.0;version=2 | +| | | | .0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVJ | +| | | | lcXVlc3QreG1sO3E9M | +| | | | S4wO2NoYXJzZXQ9dXR | +| | | | mLTg7dmVyc2lvbj0yL | +| | | | jAsdGV4dC94bWw7cT0 | +| | | | xLjA7dmVyc2lvbj0yL | +| | | | jA=>`__\ applicati | +| | | | on/RoleRequest+xml | +| | | | ;q=1.0;charset=utf | +| | | | -8;version=2.0,tex | +| | | | t/xml;q=1.0;versio | +| | | | n=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | DELETE | /authz/role/:role | Delete Role | +| | | | | +| | | | Delete the Role | +| | | | named :role | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | role : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZSt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Role+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZSt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Role+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | DELETE | /authz/role/:role/ | Delete Permission | +| | | perm | from Role | +| | | | | +| | | | Ungrant a | +| | | | permission from | +| | | | Role :role | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | role : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVB | +| | | | lcm1SZXF1ZXN0K2pzb | +| | | | 247cT0xLjA7Y2hhcnN | +| | | | ldD11dGYtODt2ZXJza | +| | | | W9uPTIuMCxhcHBsaWN | +| | | | hdGlvbi9qc29uO3E9M | +| | | | S4wO3ZlcnNpb249Mi4 | +| | | | wLCovKjtxPTEuMA==> | +| | | | `__\ application/R | +| | | | olePermRequest+jso | +| | | | n;q=1.0;charset=ut | +| | | | f-8;version=2.0,ap | +| | | | plication/json;q=1 | +| | | | .0;version=2.0,\*/ | +| | | | \*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVB | +| | | | lcm1SZXF1ZXN0K3htb | +| | | | DtxPTEuMDtjaGFyc2V | +| | | | 0PXV0Zi04O3ZlcnNpb | +| | | | 249Mi4wLHRleHQveG1 | +| | | | sO3E9MS4wO3ZlcnNpb | +| | | | 249Mi4w>`__\ appli | +| | | | cation/RolePermReq | +| | | | uest+xml;q=1.0;cha | +| | | | rset=utf-8;version | +| | | | =2.0,text/xml;q=1. | +| | | | 0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | POST | /authz/role/perm | Add Permission to | +| | | | Role | +| | | | | +| | | | Grant a Permission | +| | | | to a Role | +| | | | | +| | | | Permission | +| | | | consists of: | +| | | | | +| | | | - type - a | +| | | | Namespace | +| | | | qualified | +| | | | identifier | +| | | | specifying what | +| | | | kind of | +| | | | resource is | +| | | | being protected | +| | | | - instance - a | +| | | | key, possibly | +| | | | multi-dimension | +| | | | al, | +| | | | that identifies | +| | | | a specific | +| | | | instance of the | +| | | | type | +| | | | - action - what | +| | | | kind of action | +| | | | is allowed | +| | | | | +| | | | Note: instance and | +| | | | action can be an | +| | | | \* | +| | | | | +| | | | Note: Using the | +| | | | "force" property | +| | | | will create the | +| | | | Permission, if it | +| | | | doesn't exist AND | +| | | | the requesting ID | +| | | | is allowed to | +| | | | create. It will | +| | | | then grant | +| | | | | +| | | | the permission to | +| | | | the role in one | +| | | | step. To do this: | +| | | | add 'force=true' | +| | | | as a query | +| | | | parameter. | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 201 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406, 409 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVB | +| | | | lcm1SZXF1ZXN0K2pzb | +| | | | 247cT0xLjA7Y2hhcnN | +| | | | ldD11dGYtODt2ZXJza | +| | | | W9uPTIuMCxhcHBsaWN | +| | | | hdGlvbi9qc29uO3E9M | +| | | | S4wO3ZlcnNpb249Mi4 | +| | | | wLCovKjtxPTEuMA==> | +| | | | `__\ application/R | +| | | | olePermRequest+jso | +| | | | n;q=1.0;charset=ut | +| | | | f-8;version=2.0,ap | +| | | | plication/json;q=1 | +| | | | .0;version=2.0,\*/ | +| | | | \*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVB | +| | | | lcm1SZXF1ZXN0K3htb | +| | | | DtxPTEuMDtjaGFyc2V | +| | | | 0PXV0Zi04O3ZlcnNpb | +| | | | 249Mi4wLHRleHQveG1 | +| | | | sO3E9MS4wO3ZlcnNpb | +| | | | 249Mi4w>`__\ appli | +| | | | cation/RolePermReq | +| | | | uest+xml;q=1.0;cha | +| | | | rset=utf-8;version | +| | | | =2.0,text/xml;q=1. | +| | | | 0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | PUT | /authz/role/perm | Set a Permission's | +| | | | Roles | +| | | | | +| | | | Set a permission's | +| | | | roles to roles | +| | | | given | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 201 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406, 409 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVB | +| | | | lcm1SZXF1ZXN0K2pzb | +| | | | 247cT0xLjA7Y2hhcnN | +| | | | ldD11dGYtODt2ZXJza | +| | | | W9uPTIuMCxhcHBsaWN | +| | | | hdGlvbi9qc29uO3E9M | +| | | | S4wO3ZlcnNpb249Mi4 | +| | | | wLCovKjtxPTEuMA==> | +| | | | `__\ application/R | +| | | | olePermRequest+jso | +| | | | n;q=1.0;charset=ut | +| | | | f-8;version=2.0,ap | +| | | | plication/json;q=1 | +| | | | .0;version=2.0,\*/ | +| | | | \*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZVB | +| | | | lcm1SZXF1ZXN0K3htb | +| | | | DtxPTEuMDtjaGFyc2V | +| | | | 0PXV0Zi04O3ZlcnNpb | +| | | | 249Mi4wLHRleHQveG1 | +| | | | sO3E9MS4wO3ZlcnNpb | +| | | | 249Mi4w>`__\ appli | +| | | | cation/RolePermReq | +| | | | uest+xml;q=1.0;cha | +| | | | rset=utf-8;version | +| | | | =2.0,text/xml;q=1. | +| | | | 0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/roles/:role | GetRolesByFullName | +| | | | | +| | | | List Roles that | +| | | | match :role | +| | | | | +| | | | Note: You must | +| | | | have permission to | +| | | | see any given role | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | role : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Roles+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Roles | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/roles/name/ | GetRolesByNameOnly | +| | | :name | | +| | | | List all Roles for | +| | | | only the Name of | +| | | | Role (without | +| | | | Namespace) | +| | | | | +| | | | Note: You must | +| | | | have permission to | +| | | | see any given role | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | name : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Roles+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Roles | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/roles/ns/:n | GetRolesByNS | +| | | s | | +| | | | List all Roles for | +| | | | the Namespace :ns | +| | | | | +| | | | Note: You must | +| | | | have permission to | +| | | | see any given role | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | ns : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MC4 | +| | | | y>`__\ application | +| | | | /Roles+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=0.2 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Roles | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/roles/perm/ | GetRolesByPerm | +| | | :type/:instance/:a | | +| | | ction | Find all Roles | +| | | | containing the | +| | | | given | +| | | | Permission.Permiss | +| | | | ion | +| | | | consists of: | +| | | | | +| | | | - type - a | +| | | | Namespace | +| | | | qualified | +| | | | identifier | +| | | | specifying what | +| | | | kind of | +| | | | resource is | +| | | | being protected | +| | | | - instance - a | +| | | | key, possibly | +| | | | multi-dimension | +| | | | al, | +| | | | that identifies | +| | | | a specific | +| | | | instance of the | +| | | | type | +| | | | - action - what | +| | | | kind of action | +| | | | is allowed | +| | | | | +| | | | Notes: instance | +| | | | and action can be | +| | | | an \* | +| | | | | +| | | | You must have | +| | | | permission to see | +| | | | any given role | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | type : string | +| | | | (Required) | +| | | | | +| | | | instance : string | +| | | | (Required) | +| | | | | +| | | | action : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Roles+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Roles | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/roles/user/ | GetRolesByUser | +| | | :name | | +| | | | List all Roles | +| | | | that match user | +| | | | :name | +| | | | | +| | | | 'user' must be | +| | | | expressed as full | +| | | | identity (ex: | +| | | | id@full.domain.com | +| | | | ) | +| | | | | +| | | | Note: You must | +| | | | have permission to | +| | | | see any given role | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | name : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZXM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Roles+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vUm9sZXM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Roles | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | POST | /authz/userRole | Request User Role | +| | | | Access | +| | | | | +| | | | Create a UserRole | +| | | | relationship (add | +| | | | User to Role) | +| | | | | +| | | | A UserRole is an | +| | | | object | +| | | | Representation of | +| | | | membership of a | +| | | | Role for limited | +| | | | time. | +| | | | | +| | | | If a shorter | +| | | | amount of time for | +| | | | Role ownership is | +| | | | required, use the | +| | | | 'End' field. | +| | | | | +| | | | \*\* Note: Owners | +| | | | of Namespaces will | +| | | | be required to | +| | | | revalidate users | +| | | | in these roles | +| | | | | +| | | | before Expirations | +| | | | expire. Namespace | +| | | | owners will be | +| | | | notified by email. | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 201 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406, 409 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlclJ | +| | | | vbGVSZXF1ZXN0K2pzb | +| | | | 247cT0xLjA7Y2hhcnN | +| | | | ldD11dGYtODt2ZXJza | +| | | | W9uPTIuMCxhcHBsaWN | +| | | | hdGlvbi9qc29uO3E9M | +| | | | S4wO3ZlcnNpb249Mi4 | +| | | | wLCovKjtxPTEuMA==> | +| | | | `__\ application/U | +| | | | serRoleRequest+jso | +| | | | n;q=1.0;charset=ut | +| | | | f-8;version=2.0,ap | +| | | | plication/json;q=1 | +| | | | .0;version=2.0,\*/ | +| | | | \*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlclJ | +| | | | vbGVSZXF1ZXN0K3htb | +| | | | DtxPTEuMDtjaGFyc2V | +| | | | 0PXV0Zi04O3ZlcnNpb | +| | | | 249Mi4wLHRleHQveG1 | +| | | | sO3E9MS4wO3ZlcnNpb | +| | | | 249Mi4w>`__\ appli | +| | | | cation/UserRoleReq | +| | | | uest+xml;q=1.0;cha | +| | | | rset=utf-8;version | +| | | | =2.0,text/xml;q=1. | +| | | | 0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/userRole/:u | Get if User is In | +| | | ser/:role | Role | +| | | | | +| | | | Returns the User | +| | | | (with Expiration | +| | | | date from listed | +| | | | User/Role) if it | +| | | | exists | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | user : string | +| | | | (Required) | +| | | | | +| | | | role : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlcnM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Users+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlcnM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Users | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | DELETE | /authz/userRole/:u | Delete User Role | +| | | ser/:role | | +| | | | Remove Role :role | +| | | | from User :user. | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | user : string | +| | | | (Required) | +| | | | | +| | | | role : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Void+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Void+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | PUT | /authz/userRole/ex | Extend Expiration | +| | | tend/:user/:role | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Void+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Void+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | PUT | /authz/userRole/ro | Update Users for a | +| | | le | role | +| | | | | +| | | | Set a Role's users | +| | | | to the users | +| | | | specified in the | +| | | | UserRoleRequest | +| | | | object. | +| | | | | +| | | | WARNING: Users | +| | | | supplied will be | +| | | | the ONLY users | +| | | | attached to this | +| | | | role | +| | | | | +| | | | If no users are | +| | | | supplied, role's | +| | | | users are reset. | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlclJ | +| | | | vbGVSZXF1ZXN0K2pzb | +| | | | 247cT0xLjA7Y2hhcnN | +| | | | ldD11dGYtODt2ZXJza | +| | | | W9uPTIuMCxhcHBsaWN | +| | | | hdGlvbi9qc29uO3E9M | +| | | | S4wO3ZlcnNpb249Mi4 | +| | | | wLCovKjtxPTEuMA==> | +| | | | `__\ application/U | +| | | | serRoleRequest+jso | +| | | | n;q=1.0;charset=ut | +| | | | f-8;version=2.0,ap | +| | | | plication/json;q=1 | +| | | | .0;version=2.0,\*/ | +| | | | \*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlclJ | +| | | | vbGVSZXF1ZXN0K3htb | +| | | | DtxPTEuMDtjaGFyc2V | +| | | | 0PXV0Zi04O3ZlcnNpb | +| | | | 249Mi4wLHRleHQveG1 | +| | | | sO3E9MS4wO3ZlcnNpb | +| | | | 249Mi4w>`__\ appli | +| | | | cation/UserRoleReq | +| | | | uest+xml;q=1.0;cha | +| | | | rset=utf-8;version | +| | | | =2.0,text/xml;q=1. | +| | | | 0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | PUT | /authz/userRole/us | Update Roles for a | +| | | er | user | +| | | | | +| | | | Set a User's roles | +| | | | to the roles | +| | | | specified in the | +| | | | UserRoleRequest | +| | | | object. | +| | | | | +| | | | WARNING: Roles | +| | | | supplied will be | +| | | | the ONLY roles | +| | | | attached to this | +| | | | user | +| | | | | +| | | | If no roles are | +| | | | supplied, user's | +| | | | roles are reset. | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlclJ | +| | | | vbGVSZXF1ZXN0K2pzb | +| | | | 247cT0xLjA7Y2hhcnN | +| | | | ldD11dGYtODt2ZXJza | +| | | | W9uPTIuMCxhcHBsaWN | +| | | | hdGlvbi9qc29uO3E9M | +| | | | S4wO3ZlcnNpb249Mi4 | +| | | | wLCovKjtxPTEuMA==> | +| | | | `__\ application/U | +| | | | serRoleRequest+jso | +| | | | n;q=1.0;charset=ut | +| | | | f-8;version=2.0,ap | +| | | | plication/json;q=1 | +| | | | .0;version=2.0,\*/ | +| | | | \*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlclJ | +| | | | vbGVSZXF1ZXN0K3htb | +| | | | DtxPTEuMDtjaGFyc2V | +| | | | 0PXV0Zi04O3ZlcnNpb | +| | | | 249Mi4wLHRleHQveG1 | +| | | | sO3E9MS4wO3ZlcnNpb | +| | | | 249Mi4w>`__\ appli | +| | | | cation/UserRoleReq | +| | | | uest+xml;q=1.0;cha | +| | | | rset=utf-8;version | +| | | | =2.0,text/xml;q=1. | +| | | | 0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/userRoles/r | Get UserRoles by | +| | | ole/:role | Role | +| | | | | +| | | | List all Users | +| | | | that are attached | +| | | | to Role specified | +| | | | in :role | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | role : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlclJ | +| | | | vbGVzK2pzb247cT0xL | +| | | | jA7Y2hhcnNldD11dGY | +| | | | tODt2ZXJzaW9uPTIuM | +| | | | CxhcHBsaWNhdGlvbi9 | +| | | | qc29uO3E9MS4wO3Zlc | +| | | | nNpb249Mi4wLCovKjt | +| | | | xPTAuMg==>`__\ app | +| | | | lication/UserRoles | +| | | | +json;q=1.0;charse | +| | | | t=utf-8;version=2. | +| | | | 0,application/json | +| | | | ;q=1.0;version=2.0 | +| | | | ,\*/\*;q=0.2 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlclJ | +| | | | vbGVzK3htbDtxPTEuM | +| | | | DtjaGFyc2V0PXV0Zi0 | +| | | | 4O3ZlcnNpb249Mi4wL | +| | | | HRleHQveG1sO3E9MS4 | +| | | | wO3ZlcnNpb249Mi4w> | +| | | | `__\ application/U | +| | | | serRoles+xml;q=1.0 | +| | | | ;charset=utf-8;ver | +| | | | sion=2.0,text/xml; | +| | | | q=1.0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/userRoles/u | Get UserRoles by | +| | | ser/:user | User | +| | | | | +| | | | List all UserRoles | +| | | | for :user | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | role : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlclJ | +| | | | vbGVzK2pzb247cT0xL | +| | | | jA7Y2hhcnNldD11dGY | +| | | | tODt2ZXJzaW9uPTIuM | +| | | | CxhcHBsaWNhdGlvbi9 | +| | | | qc29uO3E9MS4wO3Zlc | +| | | | nNpb249Mi4wLCovKjt | +| | | | xPTAuMg==>`__\ app | +| | | | lication/UserRoles | +| | | | +json;q=1.0;charse | +| | | | t=utf-8;version=2. | +| | | | 0,application/json | +| | | | ;q=1.0;version=2.0 | +| | | | ,\*/\*;q=0.2 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlclJ | +| | | | vbGVzK3htbDtxPTEuM | +| | | | DtjaGFyc2V0PXV0Zi0 | +| | | | 4O3ZlcnNpb249Mi4wL | +| | | | HRleHQveG1sO3E9MS4 | +| | | | wO3ZlcnNpb249Mi4w> | +| | | | `__\ application/U | +| | | | serRoles+xml;q=1.0 | +| | | | ;charset=utf-8;ver | +| | | | sion=2.0,text/xml; | +| | | | q=1.0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| NAMESPACE | POST | /authz/ns | Create a Namespace | +| | | | | +| | | | Namespace consists | +| | | | of: | +| | | | | +| | | | - name - What you | +| | | | want to call | +| | | | this Namespace | +| | | | - responsible(s) | +| | | | - Person(s) who | +| | | | receive | +| | | | Notifications | +| | | | and approves | +| | | | Requests | +| | | | | +| | | | regarding this | +| | | | Namespace. | +| | | | Companies have | +| | | | Policies as to | +| | | | who may take on | +| | | | | +| | | | this | +| | | | Responsibility. | +| | | | Separate | +| | | | multiple | +| | | | identities with | +| | | | commas | +| | | | | +| | | | - admin(s) - | +| | | | Person(s) who | +| | | | are allowed to | +| | | | make changes on | +| | | | the namespace, | +| | | | | +| | | | including | +| | | | creating Roles, | +| | | | Permissions and | +| | | | Credentials. | +| | | | Separate | +| | | | multiple | +| | | | | +| | | | identities with | +| | | | commas | +| | | | | +| | | | Note: Namespaces | +| | | | are dot-delimited | +| | | | (i.e. | +| | | | com.myCompany.myAp | +| | | | p) | +| | | | and must be | +| | | | | +| | | | created with | +| | | | parent credentials | +| | | | (i.e. To create | +| | | | com.myCompany.myAp | +| | | | p, | +| | | | you must | +| | | | | +| | | | be an admin of | +| | | | com.myCompany or | +| | | | com | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 201 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406, 409 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNSZXF | +| | | | 1ZXN0K2pzb247cT0xL | +| | | | jA7Y2hhcnNldD11dGY | +| | | | tODt2ZXJzaW9uPTIuM | +| | | | CxhcHBsaWNhdGlvbi9 | +| | | | qc29uO3E9MS4wO3Zlc | +| | | | nNpb249Mi4wLCovKjt | +| | | | xPTEuMA==>`__\ app | +| | | | lication/NsRequest | +| | | | +json;q=1.0;charse | +| | | | t=utf-8;version=2. | +| | | | 0,application/json | +| | | | ;q=1.0;version=2.0 | +| | | | ,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNSZXF | +| | | | 1ZXN0K3htbDtxPTEuM | +| | | | DtjaGFyc2V0PXV0Zi0 | +| | | | 4O3ZlcnNpb249Mi4wL | +| | | | HRleHQveG1sO3E9MS4 | +| | | | wO3ZlcnNpb249Mi4w> | +| | | | `__\ application/N | +| | | | sRequest+xml;q=1.0 | +| | | | ;charset=utf-8;ver | +| | | | sion=2.0,text/xml; | +| | | | q=1.0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | PUT | /authz/ns | Set a Description | +| | | | for a Namespace | +| | | | | +| | | | Replace the | +| | | | Current | +| | | | Description of a | +| | | | Namespace with a | +| | | | new one | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNSZXF | +| | | | 1ZXN0K2pzb247cT0xL | +| | | | jA7Y2hhcnNldD11dGY | +| | | | tODt2ZXJzaW9uPTIuM | +| | | | CxhcHBsaWNhdGlvbi9 | +| | | | qc29uO3E9MS4wO3Zlc | +| | | | nNpb249Mi4wLCovKjt | +| | | | xPTEuMA==>`__\ app | +| | | | lication/NsRequest | +| | | | +json;q=1.0;charse | +| | | | t=utf-8;version=2. | +| | | | 0,application/json | +| | | | ;q=1.0;version=2.0 | +| | | | ,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNSZXF | +| | | | 1ZXN0K3htbDtxPTEuM | +| | | | DtjaGFyc2V0PXV0Zi0 | +| | | | 4O3ZlcnNpb249Mi4wL | +| | | | HRleHQveG1sO3E9MS4 | +| | | | wO3ZlcnNpb249Mi4w> | +| | | | `__\ application/N | +| | | | sRequest+xml;q=1.0 | +| | | | ;charset=utf-8;ver | +| | | | sion=2.0,text/xml; | +| | | | q=1.0;version=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | DELETE | /authz/ns/:ns | Delete a Namespace | +| | | | | +| | | | Delete the | +| | | | Namespace :ns. | +| | | | Namespaces cannot | +| | | | normally be | +| | | | deleted when there | +| | | | | +| | | | are still | +| | | | credentials | +| | | | associated with | +| | | | them, but they can | +| | | | be deleted by | +| | | | setting | +| | | | | +| | | | the "force" | +| | | | property. To do | +| | | | this: Add | +| | | | 'force=true' as a | +| | | | query parameter | +| | | | | +| | | | WARNING: Using | +| | | | force will delete | +| | | | all credentials | +| | | | attached to this | +| | | | namespace. Use | +| | | | with care. | +| | | | | +| | | | if the "force" | +| | | | property is set to | +| | | | 'force=move', then | +| | | | Permissions and | +| | | | Roles are not | +| | | | deleted,but are | +| | | | retained, and | +| | | | assigned to the | +| | | | Parent Namespace. | +| | | | 'force=move' is | +| | | | not permitted at | +| | | | or below | +| | | | Application Scope | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | ns : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 424 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Void+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Void+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | POST | /authz/ns/:ns/admi | Add an Admin to a | +| | | n/:id | Namespace | +| | | | | +| | | | Add an Identity | +| | | | :id to the list of | +| | | | Admins for the | +| | | | Namespace :ns | +| | | | | +| | | | Note: :id must be | +| | | | fully qualified | +| | | | | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | ns : string | +| | | | (Required) | +| | | | | +| | | | id : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 201 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406, 409 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Void+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Void+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | DELETE | /authz/ns/:ns/admi | Remove an Admin | +| | | n/:id | from a Namespace | +| | | | | +| | | | Remove an Identity | +| | | | :id from the list | +| | | | of Admins for the | +| | | | Namespace :ns | +| | | | | +| | | | Note: :id must be | +| | | | fully qualified | +| | | | | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | ns : string | +| | | | (Required) | +| | | | | +| | | | id : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Void+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Void+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | DELETE | /authz/ns/:ns/attr | delete an | +| | | ib/:key | Attribute from a | +| | | | Namespace | +| | | | | +| | | | Delete an | +| | | | attribute in the | +| | | | Namespace | +| | | | | +| | | | You must be given | +| | | | direct permission | +| | | | for key by AAF | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | ns : string | +| | | | (Required) | +| | | | | +| | | | key : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Void+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Void+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | POST | /authz/ns/:ns/attr | Add an Attribute | +| | | ib/:key/:value | from a Namespace | +| | | | | +| | | | Create an | +| | | | attribute in the | +| | | | Namespace | +| | | | | +| | | | You must be given | +| | | | direct permission | +| | | | for key by AAF | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | ns : string | +| | | | (Required) | +| | | | | +| | | | key : string | +| | | | (Required) | +| | | | | +| | | | value : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 201 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406, 409 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Void+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Void+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | PUT | /authz/ns/:ns/attr | update an | +| | | ib/:key/:value | Attribute from a | +| | | | Namespace | +| | | | | +| | | | Update Value on an | +| | | | existing attribute | +| | | | in the Namespace | +| | | | | +| | | | You must be given | +| | | | direct permission | +| | | | for key by AAF | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | ns : string | +| | | | (Required) | +| | | | | +| | | | key : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Void+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Void+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | POST | /authz/ns/:ns/resp | Add a Responsible | +| | | onsible/:id | Identity to a | +| | | | Namespace | +| | | | | +| | | | Add an Identity | +| | | | :id to the list of | +| | | | Responsibles for | +| | | | the Namespace :ns | +| | | | | +| | | | Note: :id must be | +| | | | fully qualified | +| | | | | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | ns : string | +| | | | (Required) | +| | | | | +| | | | id : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 201 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406, 409 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Void+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Void+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | DELETE | /authz/ns/:ns/resp | Remove a | +| | | onsible/:id | Responsible | +| | | | Identity from | +| | | | Namespace | +| | | | | +| | | | Remove an Identity | +| | | | :id to the list of | +| | | | Responsibles for | +| | | | the Namespace :ns | +| | | | | +| | | | Note: :id must be | +| | | | fully qualified | +| | | | | +| | | | | +| | | | Note: A namespace | +| | | | must have at least | +| | | | 1 responsible | +| | | | party | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | ns : string | +| | | | (Required) | +| | | | | +| | | | id : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Void+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVm9pZCt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Void+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/ns/attrib/: | get Ns Key List | +| | | key | From Attribute | +| | | | | +| | | | Read Attributes | +| | | | for Namespace | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | key : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vS2V5cyt | +| | | | qc29uO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsYXBwb | +| | | | GljYXRpb24vanNvbjt | +| | | | xPTEuMDt2ZXJzaW9uP | +| | | | TIuMCwqLyo7cT0xLjA | +| | | | =>`__\ application | +| | | | /Keys+json;q=1.0;c | +| | | | harset=utf-8;versi | +| | | | on=2.0,application | +| | | | /json;q=1.0;versio | +| | | | n=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vS2V5cyt | +| | | | 4bWw7cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCx0ZXh0L | +| | | | 3htbDtxPTEuMDt2ZXJ | +| | | | zaW9uPTIuMA==>`__\ | +| | | | application/Keys+ | +| | | | xml;q=1.0;charset= | +| | | | utf-8;version=2.0, | +| | | | text/xml;q=1.0;ver | +| | | | sion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/nss/:id | Return Information | +| | | | about Namespaces | +| | | | | +| | | | Lists the | +| | | | Admin(s), | +| | | | Responsible | +| | | | Party(s), Role(s), | +| | | | Permission(s) | +| | | | | +| | | | Credential(s) and | +| | | | Expiration of | +| | | | Credential(s) in | +| | | | Namespace :id | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | id : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNzK2p | +| | | | zb247cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCxhcHBsa | +| | | | WNhdGlvbi9qc29uO3E | +| | | | 9MS4wO3ZlcnNpb249M | +| | | | i4wLCovKjtxPTEuMA= | +| | | | =>`__\ application | +| | | | /Nss+json;q=1.0;ch | +| | | | arset=utf-8;versio | +| | | | n=2.0,application/ | +| | | | json;q=1.0;version | +| | | | =2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNzK3h | +| | | | tbDtxPTEuMDtjaGFyc | +| | | | 2V0PXV0Zi04O3ZlcnN | +| | | | pb249Mi4wLHRleHQve | +| | | | G1sO3E9MS4wO3ZlcnN | +| | | | pb249Mi4w>`__\ app | +| | | | lication/Nss+xml;q | +| | | | =1.0;charset=utf-8 | +| | | | ;version=2.0,text/ | +| | | | xml;q=1.0;version= | +| | | | 2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/nss/admin/: | Return Namespaces | +| | | user | where User is an | +| | | | Admin | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNzK2p | +| | | | zb247cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCxhcHBsa | +| | | | WNhdGlvbi9qc29uO3E | +| | | | 9MS4wO3ZlcnNpb249M | +| | | | i4wLCovKjtxPTEuMA= | +| | | | =>`__\ application | +| | | | /Nss+json;q=1.0;ch | +| | | | arset=utf-8;versio | +| | | | n=2.0,application/ | +| | | | json;q=1.0;version | +| | | | =2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNzK3h | +| | | | tbDtxPTEuMDtjaGFyc | +| | | | 2V0PXV0Zi04O3ZlcnN | +| | | | pb249Mi4wLHRleHQve | +| | | | G1sO3E9MS4wO3ZlcnN | +| | | | pb249Mi4w>`__\ app | +| | | | lication/Nss+xml;q | +| | | | =1.0;charset=utf-8 | +| | | | ;version=2.0,text/ | +| | | | xml;q=1.0;version= | +| | | | 2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/nss/childre | Return Child | +| | | n/:id | Namespaces | +| | | | | +| | | | Lists all Child | +| | | | Namespaces of | +| | | | Namespace :id | +| | | | | +| | | | Note: This is not | +| | | | a cached read | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | id : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNzK2p | +| | | | zb247cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCxhcHBsa | +| | | | WNhdGlvbi9qc29uO3E | +| | | | 9MS4wO3ZlcnNpb249M | +| | | | i4wLCovKjtxPTEuMA= | +| | | | =>`__\ application | +| | | | /Nss+json;q=1.0;ch | +| | | | arset=utf-8;versio | +| | | | n=2.0,application/ | +| | | | json;q=1.0;version | +| | | | =2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNzK3h | +| | | | tbDtxPTEuMDtjaGFyc | +| | | | 2V0PXV0Zi04O3ZlcnN | +| | | | pb249Mi4wLHRleHQve | +| | | | G1sO3E9MS4wO3ZlcnN | +| | | | pb249Mi4w>`__\ app | +| | | | lication/Nss+xml;q | +| | | | =1.0;charset=utf-8 | +| | | | ;version=2.0,text/ | +| | | | xml;q=1.0;version= | +| | | | 2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/nss/either/ | Return Namespaces | +| | | :user | where User Admin | +| | | | or Owner | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNzK2p | +| | | | zb247cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCxhcHBsa | +| | | | WNhdGlvbi9qc29uO3E | +| | | | 9MS4wO3ZlcnNpb249M | +| | | | i4wLCovKjtxPTAuOA= | +| | | | =>`__\ application | +| | | | /Nss+json;q=1.0;ch | +| | | | arset=utf-8;versio | +| | | | n=2.0,application/ | +| | | | json;q=1.0;version | +| | | | =2.0,\*/\*;q=0.8 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNzK3h | +| | | | tbDtxPTEuMDtjaGFyc | +| | | | 2V0PXV0Zi04O3ZlcnN | +| | | | pb249Mi4wLHRleHQve | +| | | | G1sO3E9MS4wO3ZlcnN | +| | | | pb249Mi4w>`__\ app | +| | | | lication/Nss+xml;q | +| | | | =1.0;charset=utf-8 | +| | | | ;version=2.0,text/ | +| | | | xml;q=1.0;version= | +| | | | 2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/nss/respons | Return Namespaces | +| | | ible/:user | where User is | +| | | | Responsible | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNzK2p | +| | | | zb247cT0xLjA7Y2hhc | +| | | | nNldD11dGYtODt2ZXJ | +| | | | zaW9uPTIuMCxhcHBsa | +| | | | WNhdGlvbi9qc29uO3E | +| | | | 9MS4wO3ZlcnNpb249M | +| | | | i4wLCovKjtxPTEuMA= | +| | | | =>`__\ application | +| | | | /Nss+json;q=1.0;ch | +| | | | arset=utf-8;versio | +| | | | n=2.0,application/ | +| | | | json;q=1.0;version | +| | | | =2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vTnNzK3h | +| | | | tbDtxPTEuMDtjaGFyc | +| | | | 2V0PXV0Zi04O3ZlcnN | +| | | | pb249Mi4wLHRleHQve | +| | | | G1sO3E9MS4wO3ZlcnN | +| | | | pb249Mi4w>`__\ app | +| | | | lication/Nss+xml;q | +| | | | =1.0;charset=utf-8 | +| | | | ;version=2.0,text/ | +| | | | xml;q=1.0;version= | +| | | | 2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| USER | GET | /authn/basicAuth | Is given BasicAuth | +| | | | valid? | +| | | | | +| | | | !!!! DEPRECATED | +| | | | without X509 | +| | | | Authentication | +| | | | STOP USING THIS | +| | | | API BY DECEMBER | +| | | | 2017, or use | +| | | | Certificates !!!! | +| | | | Use | +| | | | /authn/validate | +| | | | instead Note: | +| | | | Validate a | +| | | | Password using | +| | | | BasicAuth Base64 | +| | | | encoded Header. | +| | | | This HTTP/S call | +| | | | is intended as a | +| | | | fast User/Password | +| | | | lookup for | +| | | | Security | +| | | | Frameworks, and | +| | | | responds 200 if it | +| | | | passes BasicAuth | +| | | | security, and 403 | +| | | | if it does not. | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403 | +| | | | | +| | | | Accept: | +| | | | | +| | | | text/plain | ++--------------------+--------------------+--------------------+--------------------+ +| | POST | /authn/validate | Is given | +| | | | Credential valid? | +| | | | | +| | | | Validate a | +| | | | Credential given a | +| | | | Credential | +| | | | Structure. This is | +| | | | a more | +| | | | comprehensive | +| | | | validation, can do | +| | | | more than | +| | | | BasicAuth as | +| | | | Credential types | +| | | | exp | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403 | +| | | | | +| | | | ContentType: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vQ3JlZFJ | +| | | | lcXVlc3QranNvbjtxP | +| | | | TEuMDtjaGFyc2V0PXV | +| | | | 0Zi04O3ZlcnNpb249M | +| | | | i4wLGFwcGxpY2F0aW9 | +| | | | uL2pzb247cT0xLjA7d | +| | | | mVyc2lvbj0yLjAsKi8 | +| | | | qO3E9MS4w>`__\ app | +| | | | lication/CredReque | +| | | | st+json;q=1.0;char | +| | | | set=utf-8;version= | +| | | | 2.0,application/js | +| | | | on;q=1.0;version=2 | +| | | | .0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vQ3JlZFJ | +| | | | lcXVlc3QreG1sO3E9M | +| | | | S4wO2NoYXJzZXQ9dXR | +| | | | mLTg7dmVyc2lvbj0yL | +| | | | jAsdGV4dC94bWw7cT0 | +| | | | xLjA7dmVyc2lvbj0yL | +| | | | jA=>`__\ applicati | +| | | | on/CredRequest+xml | +| | | | ;q=1.0;charset=utf | +| | | | -8;version=2.0,tex | +| | | | t/xml;q=1.0;versio | +| | | | n=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/users/:user | Get if User is In | +| | | /:role | Role | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlcnM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Users+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlcnM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Users | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/users/perm/ | Get Users By | +| | | :type/:instance/:a | Permission | +| | | ction | | +| | | | List all Users | +| | | | that have | +| | | | Permission | +| | | | specified by :type | +| | | | :instance :action | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | type : string | +| | | | (Required) | +| | | | | +| | | | instance : string | +| | | | (Required) | +| | | | | +| | | | action : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlcnM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MS4 | +| | | | w>`__\ application | +| | | | /Users+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=1.0 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlcnM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Users | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ +| | GET | /authz/users/role/ | Get Users By Role | +| | | :role | | +| | | | Returns the User | +| | | | (with Expiration | +| | | | date from listed | +| | | | User/Role) if it | +| | | | exists | +| | | | | +| | | | -------------- | +| | | | | +| | | | Parameters | +| | | | | +| | | | user : string | +| | | | (Required) | +| | | | | +| | | | role : string | +| | | | (Required) | +| | | | | +| | | | Expected HTTP Code | +| | | | | +| | | | 200 | +| | | | | +| | | | Explicit HTTP | +| | | | Error Codes | +| | | | | +| | | | 403, 404, 406 | +| | | | | +| | | | Accept: | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlcnM | +| | | | ranNvbjtxPTEuMDtja | +| | | | GFyc2V0PXV0Zi04O3Z | +| | | | lcnNpb249Mi4wLGFwc | +| | | | GxpY2F0aW9uL2pzb24 | +| | | | 7cT0xLjA7dmVyc2lvb | +| | | | j0yLjAsKi8qO3E9MC4 | +| | | | y>`__\ application | +| | | | /Users+json;q=1.0; | +| | | | charset=utf-8;vers | +| | | | ion=2.0,applicatio | +| | | | n/json;q=1.0;versi | +| | | | on=2.0,\*/\*;q=0.2 | +| | | | | +| | | | ` <./example/YXBwb | +| | | | GljYXRpb24vVXNlcnM | +| | | | reG1sO3E9MS4wO2NoY | +| | | | XJzZXQ9dXRmLTg7dmV | +| | | | yc2lvbj0yLjAsdGV4d | +| | | | C94bWw7cT0xLjA7dmV | +| | | | yc2lvbj0yLjA=>`__\ | +| | | | application/Users | +| | | | +xml;q=1.0;charset | +| | | | =utf-8;version=2.0 | +| | | | ,text/xml;q=1.0;ve | +| | | | rsion=2.0 | ++--------------------+--------------------+--------------------+--------------------+ + diff --git a/docs/aaf-object-model.jpg b/docs/aaf-object-model.jpg new file mode 100644 index 0000000000000000000000000000000000000000..30caa7d58630c1389c00f68956017784b7153f9c GIT binary patch literal 189989 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ν5$_qo9kMY)Ysp<^mVljb0*Oc}`s;x% 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