{ "uuid": "f5e80400-6e72-4912-9224-fe339bb2c13d", "lastMigration": 29, "name": "NPR Authorization Service", "endpointPrefix": "", "latency": 0, "port": 3000, "hostname": "", "routes": [ { "uuid": "f231d67a-c466-4ec3-a1c0-6d79faee170b", "documentation": "Show a web-based login/signup form to a user", "method": "get", "endpoint": "v2/authorize", "responses": [ { "uuid": "d2fbd562-c743-463d-b9cf-5cc384d22d2a", "body": "", "latency": 0, "statusCode": 302, "label": "The correct parameters were passed in and we are redirecting to the authentication page; OR, a valid `redirect_uri` was supplied but there was another error, and the error type and message are embedded in the querystring.", "headers": [ { "key": "Content-Type", "value": "text/html" }, { "key": "Location", "value": "" } ], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": true, "crudKey": "id" }, { "uuid": "9c554a69-427e-4ffd-b2f5-4db2a154fa58", "body": "", "latency": 0, "statusCode": 400, "label": "A bad request; generally, one or more parameters passed in were incorrect or missing. This error will only be shown if the client did not pass in a valid `redirect_uri`; otherwise, all errors will be returned as 302s to the supplied `redirect_uri`, with the error type and message embedded in the querystring.", "headers": [{ "key": "Content-Type", "value": "text/html" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "edf8c850-f9b2-46a2-83f3-fc7c86c779f4", "body": "", "latency": 0, "statusCode": 401, "label": "The client credentials were invalid (i.e., the `redirect_uri` does not match what we have stored for this client) or the authorization server denied the request. This error will only be shown if the client did not pass in a valid `redirect_uri`; otherwise, all errors will be returned as 302s to the supplied `redirect_uri`, with the error type and message embedded in the querystring.", "headers": [{ "key": "Content-Type", "value": "text/html" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "2ee7198d-d0c0-46cd-8c14-7cf2c7763630", "body": "", "latency": 0, "statusCode": 500, "label": "There was an unspecified server error. This error will only be shown if the client did not pass in a valid `redirect_uri`; otherwise, all errors will be returned as 302s to the supplied `redirect_uri`, with the error type and message embedded in the querystring.", "headers": [{ "key": "Content-Type", "value": "text/html" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "f4a28526-ebe4-4188-9945-15d652f9da81", "body": "", "latency": 0, "statusCode": 503, "label": "The system is undergoing maintenance and we are unable to fulfill this request. This error will only be shown if the client did not pass in a valid `redirect_uri`; otherwise, all errors will be returned as 302s to the supplied `redirect_uri`, with the error type and message embedded in the querystring.", "headers": [{ "key": "Content-Type", "value": "text/html" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" } ], "enabled": true, "responseMode": null, "type": "http" }, { "uuid": "d945b019-82b4-417c-b4f3-76a5f39b288b", "documentation": "Initiate an OAuth2 login flow for limited input devices", "method": "post", "endpoint": "v2/device", "responses": [ { "uuid": "338506b5-83bb-4ef0-9fe8-d5f77a60c05b", "body": "{\n \"device_code\": \"\",\n \"expires_in\": 1800,\n \"interval\": 5,\n \"user_code\": \"\",\n \"verification_uri\": \"http://npr.org/device\"\n}", "latency": 0, "statusCode": 201, "label": "We have generated a unique device code and user code. These will only be valid for the amount of time specified in the `expires_in` field; if the user does not complete the login process in that amount of time, the client will need to request a new set of codes.", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": true, "crudKey": "id" }, { "uuid": "c29bf885-9aa9-45fc-8946-51b3814e2659", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 400, "label": "A bad request; generally, one or more parameters passed in were incorrect or missing", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "b4ddc98c-bb95-4e35-9c1c-393596b65406", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 401, "label": "The client credentials were invalid or the authorization server denied the request.", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "8ef07ecb-75fb-417c-a5df-f2d36d6761bb", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 500, "label": "A server error", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "b595f78a-7785-4f13-939e-e80d5bbb3d09", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 503, "label": "The system is undergoing maintenance and we are unable to fulfill this request. Look for a `Retry-After` header to see the predicted time the system will be back up.", "headers": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Retry-After", "value": "" } ], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" } ], "enabled": true, "responseMode": null, "type": "http" }, { "uuid": "039e8ca2-db53-4301-9002-9a555651d95a", "documentation": "Create a new OAuth2 access token", "method": "post", "endpoint": "v2/token", "responses": [ { "uuid": "063477d0-3889-4c62-8316-c67635028b7e", "body": "{\n \"access_token\": \"\",\n \"expires_in\": {{faker 'number.int' max=99999}},\n \"refresh_token\": \"\",\n \"token_type\": \"{{oneOf (array 'Bearer' 'MAC')}}\"\n}", "latency": 0, "statusCode": 200, "label": "A new token was successfully created", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": true, "crudKey": "id" }, { "uuid": "9d892d39-e698-4651-a450-a7955a77a232", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 400, "label": "A bad request; generally, one or more parameters passed in were incorrect or missing", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "f55fe793-2679-44ae-a940-1d1498cad014", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 401, "label": "The client credentials were invalid (any grant type), the user credentials were invalid (`password` grant type), the user has not yet logged in or has purposely denied the request (`device_code` grant type), or the authorization server denied the request.", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "d30bb329-3137-4a4f-8118-37b7bc8da802", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 500, "label": "A server error", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "7f860de6-09bb-493c-afeb-6610746ed342", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 503, "label": "The system is undergoing maintenance and we are unable to fulfill this request. Look for a `Retry-After` header to see the predicted time the system will be back up.", "headers": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Retry-After", "value": "" } ], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" } ], "enabled": true, "responseMode": null, "type": "http" }, { "uuid": "67ae7a3d-427d-4a70-bcfc-e1a770f740a0", "documentation": "Revoke an existing OAuth2 access token", "method": "post", "endpoint": "v2/token/revoke", "responses": [ { "uuid": "5056e7b7-04ea-4668-8541-f7859a4a0b76", "body": "{}", "latency": 0, "statusCode": 200, "label": "The old token was successfully revoked", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": true, "crudKey": "id" }, { "uuid": "328cb939-3efd-4073-ab50-030fa39e31e3", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 400, "label": "A bad request; generally, one or more parameters passed in were incorrect or missing", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "1785fedd-55c5-46a0-b27a-2bddb8f19c9a", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 401, "label": "The client credentials were invalid or the authorization server denied the request.", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "b9a29fd7-1a46-48a1-953b-550941899936", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 403, "label": "The client associated with the access token in the header does not own the access token that this request is attempting to revoke.", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "e97b3a9b-7779-4b68-a10f-1ac0ef6d1492", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 500, "label": "A server error", "headers": [{ "key": "Content-Type", "value": "application/json" }], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" }, { "uuid": "924fcd9e-6c4c-4cb1-a4a3-5d367a8fd7fe", "body": "{\n \"message\": \"\",\n \"type\": \"error\"\n}", "latency": 0, "statusCode": 503, "label": "The system is undergoing maintenance and we are unable to fulfill this request. Look for a `Retry-After` header to see the predicted time the system will be back up.", "headers": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Retry-After", "value": "" } ], "bodyType": "INLINE", "filePath": "", "databucketID": "", "sendFileAsBody": false, "rules": [], "rulesOperator": "OR", "disableTemplating": false, "fallbackTo404": false, "default": false, "crudKey": "id" } ], "enabled": true, "responseMode": null, "type": "http" } ], "proxyMode": false, "proxyHost": "", "proxyRemovePrefix": false, "tlsOptions": { "enabled": false, "type": "CERT", "pfxPath": "", "certPath": "", "keyPath": "", "caPath": "", "passphrase": "" }, "cors": true, "headers": [], "proxyReqHeaders": [{ "key": "", "value": "" }], "proxyResHeaders": [{ "key": "", "value": "" }], "data": [], "folders": [], "rootChildren": [ { "type": "route", "uuid": "f231d67a-c466-4ec3-a1c0-6d79faee170b" }, { "type": "route", "uuid": "d945b019-82b4-417c-b4f3-76a5f39b288b" }, { "type": "route", "uuid": "039e8ca2-db53-4301-9002-9a555651d95a" }, { "type": "route", "uuid": "67ae7a3d-427d-4a70-bcfc-e1a770f740a0" } ] }