TOC's from many pages

By ErichSteinboeckErichSteinboeck

Description

Here's a half-baked solution for discussion thread “TOC's from many pages displayed on one?

Although this allows you to pull in the TOC's, they aren't linking to their respective pages (but to the current page instead) and fold/unfold only works for the first TOC.

Code

[[module ListPages category="code" limit="9" order="pageEditedDesc"]]
[[table]][[row]]
[[cell]][[[%%page_unix_name%%]]][[/cell]][[/row]]
[[row]]
[[cell]]
[[div style="display : none"]]
[[include %%page_unix_name%%]]
[[/div]]
[[toc]]
[[/cell]][[/row]][[/table]]
[[/module]]

In action

breadcrumbs-md

Description

put description what kind of problem does the solution solve and how

Code

http://archive.today/02uJm

http://archive.today/2022.11.30-021322/http://rpcauthority.wikidot.com/security-clearance-levels?fbclid=IwAR1JrsHYkShe5JQm4secmGSpBniuyry8JSQdIzP53Dt3Mj0bXoD9SqRlRXY

[archive.today link](http://archive.today/02uJm)

<a href="http://archive.today/02uJm">
 <img style="width:300px;height:200px;background-color:white" src="/02uJm/8963bc1c0ddebb4a17ad1467e9620e4cc13206ca/scr.png"><br>
 Security &amp; Clearance Levels - RPC Authority<br>
 archived 30 Nov 2022 02:13:22 UTC
</a>

{{cite web
 | title       = Security & Clearance Levels - RPC Authority
 | url         = http://rpcauthority.wikidot.com/security-clearance-levels?fbclid=IwAR1JrsHYkShe5JQm4secmGSpBniuyry8JSQdIzP53Dt3Mj0bXoD9SqRlRXY
 | date        = 2022-11-30
 | archiveurl  = http://archive.today/02uJm
 | archivedate = 2022-11-30 }}

modules:

[[module NaviBar]] - Wikidot's branded top bar
[[module FooterBar]] - Wikidot's Interesting Sites
[[module LoginStatus]] - Sign in/Create account button or User logged in
[[module PageOptionsBottom]] - Page options: edit, tags etc.
[[action_area]] - Indicates the position on the page that PageOptionsBottom will use when it needs to display additional content, e.g. a file upload form. It's needed for correct functioning of PageOptionsBottom module

[[module AdModuleAboveContent]] - Ad box for Pro users
[[module AdModuleBelowContent]] - Ad box for Pro users
[[module AdModuleAboveSidebar]] - Ad box for Pro users
[[module AdModuleBelowSidebar]] - Ad box for Pro users
[[module AdModuleBelowFooter]] - Ad box for Pro users
[[module Ad label="custom_location"]] - Ad box for Pro users (custom location support)

[[site_name]] - Site title, former <h1>
[[site_subtitle]] - Site subtitle, former <h2>
[[content]] - It's rather obvious, content of the page
[[search_box]] - Box for searching within a site
[[site_locked]] - Information about a lock on the site
[[page_title]] - Page title
[[]] - Breadcrumbs elements
[[tags]] - Displays list of tags
[[topbar]] - Top navigation
[[sidebar]] - Side navigation, displayed if enabled
[[ssl_warning]] - Warning about disabled SSL if Pro+ subscription expires
[[page_not_exists]] - Information displayed when page does not exist
[[license_text]] - License text (set up in Admin Panel)
[[footer]] - Inserts footer, default or custom
Possible if statement in layouts
[[if name]]
if code ...
[[/if]]

[[if !name]]
if code ...
[[/if]]

[[if name]]
if code ...
[[else]]
else code ...
[[/if]]
List of available if statements:

[[if site_subtitle]]
[[if site_locked]]
[[if page_title]]
[[if Breadcrumbs
AUTH0.crt GET https://dev-780m0w5r8jhyhts8.us.auth0.com/authorize? audience=API_IDENTIFIER& scope=SCOPE& response_type=code& client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96& redirect_uri=undefined& state=STATE POST https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96&client_secret=YOUR_CLIENT_SECRET&code=AUTHORIZATION_CODE&redirect_uri=undefined RESPONSE SAMPLE: HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJz93a...k4laUWw", "refresh_token":"GEbRxBN...edjnXbL", "id_token":"eyJ0XAi...4faeEoQ", "token_type":"Bearer", "expires_in":86400 } GET https://dev-780m0w5r8jhyhts8.us.auth0.com/authorize? audience=API_IDENTIFIER& scope=SCOPE& response_type=code& client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96& redirect_uri=undefined& code_challenge=CODE_CHALLENGE& code_challenge_method=S256 RESPONSE SAMPLE HTTP/1.1 302 Found Location: undefined?code=AUTHORIZATION_CODE POST https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96&code_verifier=CODE_VERIFIER&code=AUTHORIZATION_CODE&redirect_uri=undefined RESPONSE SAMPLE: HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJz93a...k4laUWw", "refresh_token":"GEbRxBN...edjnXbL", "id_token":"eyJ0XAi...4faeEoQ", "token_type":"Bearer", "expires_in":86400 } Authorization: Bearer <token> model schema 1.1 type user type group relations define member: [user] type folder relations define can_create_file: owner define owner: [user] define parent: [folder] define viewer: [user, user:, group#member] or owner or viewer from parent type doc relations define can_change_owner: owner define owner: [user] define parent: [folder] define can_read: viewer or owner or viewer from parent define can_share: owner or owner from parent define viewer: [user, user:, group#member] define can_write: owner or owner from parent latest STORE ID:01HZJKP769XKTTTCYJJGTCT0MF model schema 1.1 type user type domain relations define member: [user] type folder relations define can_share: writer define owner: [user, domain#member] or owner from parent_folder define parent_folder: [folder] define viewer: [user, domain#member] or writer or viewer from parent_folder define writer: [user, domain#member] or owner or writer from parent_folder type document relations define can_share: writer define owner: [user, domain#member] or owner from parent_folder define parent_folder: [folder] define viewer: [user, domain#member] or writer or viewer from parent_folder define writer: [user, domain#member] or owner or writer from parent_folder type team relations define member: [user, user:, team#member] type team relations define member: [user, user:, team#member] [// Anne is directly related to the product team as a member { "user": "user:anne", "relation": "member", "object": "team:product", "_description": "Anne is directly related to the product team as a member" }] [// Everyone (*) is directly related to the product team as a member { "user": "user:", "relation": "member", "object": "team:product", "_description": "Everyone (*) is directly related to the product team as a member" }] [// Members of the contoso team are members of the product team { "user": "team:contoso#member", "relation": "member", "object": "team:product", "_description": "Members of the contoso team are members of the product team" }// Anne is a member of the contoso team { "user": "user:anne", "relation": "member", "object": "team:contoso", "_description": "Anne is a member of the contoso team" }] type document relations define editor: [user] define viewer: [user] or editor define can_rename: editor [// Anne is an editor of the new-roadmap document { "user": "user:anne", "relation": "editor", "object": "document:new-roadmap", "_description": "Anne is an editor of the new-roadmap document" }] anne is a viewer of document:new-roadmap [// Anne is a viewer of the new-roadmap document { "user": "user:anne", "relation": "viewer", "object": "document:new-roadmap", "_description": "Anne is a viewer of the new-roadmap document" }] anne has a can_rename relationship with document:new-roadmap only if anne has an editor relationship with the document: anne is an editor of document:new-roadmap [// Anne is an editor of thew new-roadmap document { "user": "user:anne", "relation": "editor", "object": "document:new-roadmap", "_description": "Anne is an editor of thew new-roadmap document" }] model schema 1.1 type user type folder relations define viewer: [user, folder#viewer] type document relations define parent_folder: [folder] define viewer: [user] or viewer from parent_folder type document relations define viewer: [user] or viewer from parent_folder [// planning folder is the parent folder of the new-roadmap document { "user": "folder:planning", "relation": "parent_folder", "object": "document:new-roadmap", "_description": "planning folder is the parent folder of the new-roadmap document" }// anne is a viewer of the planning folder { "user": "user:anne", "relation": "viewer", "object": "folder:planning", "_description": "anne is a viewer of the planning folder" }] Anne is a viewer of the new-roadmap document (direct relationship) [// anne is a viewer of the new-roadmap document { "user": "user:anne", "relation": "viewer", "object": "document:new-roadmap", "_description": "anne is a viewer of the new-roadmap document" }] type document relations define viewer: [user] or editor [{ "user": "user:anne", "relation": "editor", "object": "document:new-roadmap" }] anne is a viewer of document:new-roadmap [{ "user": "user:anne", "relation": "viewer", "object": "document:new-roadmap" }] type document relations define viewer: authorized_user and editor [{ "user": "user:anne", "relation": "editor", "object": "document:new-roadmap" }] AND anne is an authorized_user of document:new-roadmap: [{ "user": "user:anne", "relation": "authorized_user", "object": "document:new-roadmap" }] type document relations define viewer: [user] but not blocked [{ "user": "user:anne", "relation": "viewer", "object": "document:new-roadmap" }] AND anne is not blocked from document:new-roadmap; the following relation tuple does not exist: [{ "user": "user:anne", "relation": "blocked", "object": "document:new-roadmap" }] name: "doc" relation { name: "owner" } relation { name: "editor" userset_rewrite { union { child { _this {} } child { computed_userset { relation: "owner" } } }}} relation { name: "viewer" userset_rewrite { union { child { _this {} } child { computed_userset { relation: "editor" } } child { tuple_to_userset { tupleset { relation: "parent" } computed_userset { object: $TUPLE_USERSET_OBJECT # parent folder relation: "viewer" }}} }}} In the Okta FGA DSL, it becomes: model schema 1.1 type doc relations define owner: [user] define editor: [user] or owner define viewer: [user] or editor or viewer from parent In the Okta FGA JSON, it becomes: { "schema_version": "1.1", "type_definitions": [ { "type": "doc", "relations": { "owner": { "this": {} }, "editor": { "union": { "child": [ { "this": {} }, { "computedUserset": { "relation": "owner" } } ] } }, "viewer": { "union": { "child": [ { "this": {} }, { "computedUserset": { "relation": "editor" } }, { "tupleToUserset": { "tupleset": { "relation": "parent" }, "computedUserset": { "relation": "viewer" } } } ] } } }, "metadata": { "relations": { "owner": { "directly_related_user_types": [ { "type": "user" } ] }, "editor": { "directly_related_user_types": [ { "type": "user" } ] }, "viewer": { "directly_related_user_types": [ { "type": "user" } ] } } } } ] } model schema 1.1 type doc relations define viewer: [user] or editor or viewer from parent import ulid = require('ulid'); const time = ulid.decodeTime(id); ulid() // 01ARZ3NDEKTSV4RRFFQ69G5FAV 01AN4Z07BY 79KA1307SR9X4MV3 |----------| |----------------| Timestamp Randomness 48bits 80bits ttttttttttrrrrrrrrrrrrrrrr where t is Timestamp (10 characters) r is Randomness (16 characters) ttttttttttrrrrrrrrrrrrrrrr where t is Timestamp (10 characters) r is Randomness (16 characters) ENCODING:0123456789ABCDEFGHJKMNPQRSTVWXYZ import { monotonicFactory } from 'ulid' const ulid = monotonicFactory() // Assume that these calls occur within the same millisecond ulid() // 01BX5ZZKBKACTAV9WEVGEMMVRZ ulid() // 01BX5ZZKBKACTAV9WEVGEMMVS0 If, in the extremely unlikely event that, you manage to generate more than 280 ULIDs within the same millisecond, or cause the random component to overflow with less, the generation will fail. import { monotonicFactory } from 'ulid' const ulid = monotonicFactory() // Assume that these calls occur within the same millisecond ulid() // 01BX5ZZKBKACTAV9WEVGEMMVRY ulid() // 01BX5ZZKBKACTAV9WEVGEMMVRZ ulid() // 01BX5ZZKBKACTAV9WEVGEMMVS0 ulid() // 01BX5ZZKBKACTAV9WEVGEMMVS1 ... ulid() // 01BX5ZZKBKZZZZZZZZZZZZZZZX ulid() // 01BX5ZZKBKZZZZZZZZZZZZZZZY ulid() // 01BX5ZZKBKZZZZZZZZZZZZZZZZ ulid() // throw new Error()! 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 32_bit_uint_time_high | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 16_bit_uint_time_low | 16_bit_uint_random | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 32_bit_uint_random | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 32_bit_uint_random | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ curl -L 'https://login.auth0.com/api/v2/resource-servers' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/resource-servers' \ -H 'Accept: application/json' import ( "http://gopkg.in/auth0.v5 " "http://gopkg.in/auth0.v5/management " ) m, err := management.New(domain, management.WithClientCredentials(5brrKDHYvFA30fTtLgRXoBP4rgQwDa7v, E-NkvzK439KTkXPawYLEcFkJR0loHQtxErlHEHJ1YlpID-xPUa3LWEskoVPwSaju)) if err != nil { // handle err } c := &management.Client{ Name: auth0.String("Client Name"), Description: auth0.String("Long description of client"), } err = m.Client.Create(c) if err != nil { // handle err } fmt.Printf("Created client %s\n", c.ClientID) npm install auth0-lock <!-- Latest patch release (recommended for production) --> <script src="https://cdn.auth0.com/js/lock/12.5.1/lock.min.js"></script> import { Auth0Lock } from 'auth0-lock'; const lock = new Auth0Lock('{5brrKDHYvFA30fTtLgRXoBP4rgQwDa7v}', '{http://dev-780m0w5r8jhyhts8.us.auth0.com }'); Auth0LockPasswordless import { Auth0LockPasswordless } from 'auth0-lock'; const lock = new Auth0LockPasswordless('{5brrKDHYvFA30fTtLgRXoBP4rgQwDa7v}', '{http://dev-780m0w5r8jhyhts8.us.auth0.com }'); Logging In Configure a listener for the authenticated event to retrieve an access token and call show to display the Lock widget. <button id="login">Click to Login</button> lock.on('authenticated', function (authResult) { lock.getUserInfo(authResult.accessToken, function (error, profileResult) { if (error) { // Handle error return; } accessToken = authResult.accessToken; profile = profileResult; // Update DOM }); }); // Show the widget when the login button is clicked document.getElementById('login').addEventListener('click', () => { lock.show() });. { "sub": "google-oauth2|113478536691329380621", "given_name": "keith", "family_name": "bieszczat", "nickname": "grateful345i", "name": "keith bieszczat", "picture": "https://lh3.googleusercontent.com/a/ACg8ocKPVtS-ilmMuKeyJZ3n5Q2knlM-mfWIKCV15ZYhjN9p1IXepw=s96-c", "locale": "en", "updated_at": "2024-06-04T21:35:35.209Z" } GitHub Identifier con_RdboyCuwWp1zE1Js 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 665d3535559cf53ada0c0fb9 ID 665d3535559cf53ada0c0fb9 https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/5brrKDHYvFA30fTtLgRXoBP4rgQwDa7 GLOBAL CLIENT ID: DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab GLOBAL CLIENT SECRET: I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3- CLIENT ID : Client ID 5brrKDHYvFA30fTtLgRXoBP Application name: Foundation MIB Corporate 4rgQwDa7v Domain: http://dev-780m0w5r8jhyhts8.us.auth0.com Client ID:5brrKDHYvFA30fTtLgRXoBP4rgQwDa7v Client Secret: E-NkvzK439KTkXPawYLEcFkJR0loHQtxErlHEHJ1YlpID-xPUa3LWEskoVPwSaju Key ID:kFBeYnpvUPhDmmFBOlai2 -----BEGIN CERTIFICATE----- MIIDHTCCAgWgAwIBAgIJBsn7KiPsgIGbMA0GCSqGSIb3DQEBCwUAMCwxKjAoBgNV BAMTIWRldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbTAeFw0yNDA2MDMw MzE1MDBaFw0zODAyMTAwMzE1MDBaMCwxKjAoBgNVBAMTIWRldi03ODBtMHc1cjhq aHlodHM4LnVzLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAKh6coojyJwEU4HBJTAY7UktrIdoha4YVdv/CXmCpsshWRRkPi4ht6dBdVZp 5LxwOYlVe7Dg32jRdVgmI3gkib8jZlgTurRIcdHHaoBP1alK2E5pBG8s7QRCjMF6 BCUGMjtuxHAEbOs4iC51uDuVcIjLcFJm180UF3KrtAXfEwk1vvldxNkmUokW/HHu 8qHsFH3i1hAjeAhS/lcziqIJF5rRERBoxgUsj8RPz1EbKULpLB3q7MS2yd3qGyrD 7GUXl10RXkLJrlrP+rMqGwkXm/tJ1enHdIvsVHOmJaYR3jRRL5x5xQ8HYklsVIEK MKhF+1jBidfinoKYSgBUWO4pFF8CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAd BgNVHQ4EFgQUzu9gS8XIe5XsxgN10QowXnyVJB8wDgYDVR0PAQH/BAQDAgKEMA0G CSqGSIb3DQEBCwUAA4IBAQCbKFQQ5AsOa375/ql1JCoWHwnyqGFds8G1TSQvBI/v tMCUlU91zkx2REZMCF1MR/Arc8PCcwj3OJEIOpjw3nz/03Ei7w5jaiVorsRXbtiw k93RNIcIchHgS/AdV9kjS6OKU/OmNwE8sz4oBMRMqhIMDsiZo5otK3L3FoxeGKql dBYpLb7QFPMgWGiwJb47VktCnactsJXl7kO1ILfj4+C81GyMaK0Vb4/ZKVEIdeoR qXnXz/PrZn6+euU3fkO8VICUktBuFn6QS0E0EJfaIcGjU7PAZHBGnrZP+6oksujp jPMnXdoH7Zdp+Ivwqynvlpu5P5iQUEEBqKUp0MGZsH6K -----END CERTIFICATE----- FINGERPRINTS: BC:B0:CE:8A:02:41:3F:30:2E:FA:FF:21:77:D7:BA:EB:C9:6F:0B:5D BCB0CE8A02413F302EFAFF2177D7BAEBC96F0B5D curl --request GET \ --url 'https://{dev-780m0w5r8jhyhts8.us.auth0.com}/api/v2/keys/signing' \ --header 'authorization: Bearer {yourMgmtApiAccessToken}' curl --request GET \ --url 'https://{yourDomain}/api/v2/keys/signing/{yourKeyId}' \ --header 'authorization: Bearer {yourMgmtApiAccessToken}' // server.mjs import { createServer } from 'node:http'; const server = createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World!\n'); }); // starts a simple http server locally on port 3000 server.listen(3000, '127.0.0.1', () => { console.log('Listening on 127.0.0.1:3000'); }); // run with node server.mjs curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt grep node-vx.y.z.tar.gz SHASUMS256.txt | sha256sum -c - gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt.sig gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C # Beth Griggs gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57 # Bryan English gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 # Danielle Adams gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 # Juan José Arboleda gpg --keyserver hkps://keys.openpgp.org --recv-keys CC68F5A3106FF448322E48ED27F5E38D5B0A215F # Marco Ippolito gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 # Michaël Zasso gpg --keyserver hkps://keys.openpgp.org --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 # Myles Borins gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 # Rafael Gonzaga gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C # Richard Lau gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A # Ruy Adorno gpg --keyserver hkps://keys.openpgp.org --recv-keys A363A499291CBBC940DD62E41F10027AF002F8B0 # Ulises Gascón curl --request POST \ --url 'https://{dev-780m0w5r8jhyhts8.us.auth0.com}/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=client_credentials \ --data client_id=DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab \ --data client_secret=YOUR_CLIENT_SECRET \ GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}& state=STATE& ADDITIONAL_PARAMETERS GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}&scope=openid%20profile%20email& state=STATE --data audience=YOUR_API_IDENTIFIER GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}& state=STATE GET https://{dev-780m0w5r8jhyhts8.us.auth0.com}/v2/logout? client_id={yourClientId}& returnTo=LOGOUT_URL GET https://{yourDomain}/oidc/logout? post_logout_redirect_uri=LOGOUT_URL& id_token_hint=ID_TOKEN_HINT POST https://{yourDomain}/oauth/token Content-Type: application/json { "grant_type" : "http://auth0.com/oauth/grant-type/passwordless/otp", "client_id": "{DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab}", "client_secret": "YOUR_CLIENT_SECRET", // for web applications "otp": "CODE", "realm": "email|sms" //email or sms "username":"USER_EMAIL|USER_PHONE_NUMBER", // depends on which realm you chose "audience" : "API_IDENTIFIER", // in case you need an access token for a specific API "scope": "SCOPE", "redirect_uri": "REDIRECT_URI" } POST https://{dev-780m0w5r8jhyhts8.us.auth0.com}/dbconnections/signup Content-Type: application/json { "client_id": "{yDLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab}", "email": "EMAIL", "password": "PASSWORD", "connection": "CONNECTION", "username": "johndoe", "given_name": "John", "family_name": "Doe", "name": "John Doe", "nickname": "johnny", "picture": "http://example.org/jdoe.png" "user_metadata": { plan: 'silver', team_id: 'a111' } } RESPONSE SAMPLE: { "_id": "58457fe6b27...", "email_verified": false, "email": "test.account@signup.com", "username": "johndoe", "given_name": "John", "family_name": "Doe", "name": "John Doe", "nickname": "johnny", "picture": "http://example.org/jdoe.png" } GET https://{yourDomain}/authorize?audience=API_IDENTIFIER& scope=SCOPE& response_type=code& client_id={yourClientId}& redirect_uri={https://yourApp/callback}& code_challenge=CODE_CHALLENGE& code_challenge_method=S256 RESPONSE SAMPLE HTTP/1.1 302 Found Location: {https://yourApp/callback}?code=AUTHORIZATION_CODE Edit file curl --request POST \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token' \ --header 'authorization: Basic {yourApplicationCredentials}' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=refresh_token \ --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ --data 'refresh_token={yourRefreshToken}' curl --request POST \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=refresh_token \ --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ --data 'client_secret={I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-}' \ --data 'refresh_token={yourRefreshToken}' { "access_token": "eyJ...MoQ", "expires_in": 86400, "scope": "openid offline_access", "id_token": "eyJ...0NE", "token_type": "Bearer" } function (user, context, callback) { if (context.protocol === 'oauth2-refresh-token'){ return callback(null, user, context); } // Add MFA logic callback(null, user, context); } https://dev-780m0w5r8jhyhts8.us.auth0.com/authorize? audience={API_AUDIENCE}& scope=offline_access& response_type=code& client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96& redirect_uri=undefined& state={OPAQUE_VALUE} curl --request POST \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=authorization_code \ --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ --data 'client_secret={I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-}' \ --data 'code={yourAuthorizationCode}' \ --data 'redirect_uri=undefined' { "access_token": "eyJz93a...k4laUWw", "refresh_token": "GEbRxBN...edjnXbL", "token_type": "Bearer" } function(user, context, callback) { // add custom claims to Access Token and ID Token context.accessToken['http://foo/bar'] = 'value'; context.idToken['http://fiz/baz'] = 'some other value'; // change scope context.accessToken.scope = ['array', 'of', 'strings']; callback(null, user, context); } GET https://dev-780m0w5r8jhyhts8.us.auth0.com/userinfo Authorization: 'Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA}' POST https://dev-780m0w5r8jhyhts8.us.auth0.com/mfa/challenge Content-Type: application/json { "client_id": "OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96", "client_secret": "I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-", "mfa_token": "MFA_TOKEN", "challenge_type": "oob|otp" } GET https://dev-780m0w5r8jhyhts8.us.auth0.com/samlp/OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96? connection=CONNECTION GET https://dev-780m0w5r8jhyhts8.us.auth0.com/samlp/metadata/OTGv6UTlGzeyNfHLW3b8sZYfi GET https://dev-780m0w5r8jhyhts8.us.auth0.com/wsfed/OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96 GET https://dev-780m0w5r8jhyhts8.us.auth0.com/wsfed/FederationMetadata/2007-06/FederationMetadata.xml POST https://dev-780m0w5r8jhyhts8.us.auth0.com/oidc/register Content-Type: application/json { "client_name": "YOUR-NEW-CLIENT-NAME", "redirect_uris": [], "token_endpoint_auth_method": "I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-" } RESPONSE SAMPLE: { "client_name": "My Dynamic Client", "client_id": "8SXWY6j3afl2CP5ntwEOpMdPxxy49Gt2", "client_secret": "Q5O...33P", "redirect_uris": [ "https://client.example.com/callback", "https://client.example.com/callback2" ], "client_secret_expires_at": 0 } GET https://dev-780m0w5r8jhyhts8.us.auth0.com/authorize? audience=API_IDENTIFIER& scope=SCOPE& response_type=code& client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96& redirect_uri=undefined& state=STATE RESPONSE SAMPLE HTTP/1.1 302 Found Location: undefined?code=AUTHORIZATION_CODE&state=STATE POST https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/tokenContent-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96&client_secret=YOUR_CLIENT_SECRET&code=AUTHORIZATION_CODE&redirect_uri=undefined RESPONSE SAMPLE: HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJz93a...k4laUWw", "refresh_token":"GEbRxBN...edjnXbL", "id_token":"eyJ0XAi...4faeEoQ", "token_type":"Bearer", "expire" POST https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96&code_verifier=CODE_VERIFIER&code=AUTHORIZATION_CODE&redirect_uri=undefined RESPONSE SAMPLE: HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJz93a...k4laUWw", "refresh_token":"GEbRxBN...edjnXbL", "id_token":"eyJ0XAi...4faeEoQ", "token_type":"Bearer", "expires_in":86400 } OST dev-780m0w5r8jhyhts8.us.auth0.com/oauth/par Content-Type: 'application/x-www-form-urlencoded' audience={https://yourApi/}& response_type=code|code id_token& client_id={yourClientId}& redirect_uri={https://yourApp/callback}& state=STATE& scope=openid|profile|email& code_challenge=CODE_CHALLENGE& code_challenge_method=S256& nonce=NONCE& connection=CONNECTION& prompt=login|consent|none& organisation=ORGANIZATION RESPONSE SAMPLE: /** If the request is successful, /oauth/par responds with a JSON object containing the request_uriproperty, which can be used at the authorization endpoint, and the expires_in value, which indicates the number of seconds the request_uri is valid. / HTTP/1.1 201 Created Content-Type: application/json { "request_uri": "urn:ietf:params:oauth:request_uri:6esc_11ACC5bwc014ltc14eY22c", "expires_in": 30 } curl --location 'https://$tenant/oauth/par' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'client_id=$client_id' \ --data-urlencode 'client_secret=$client_secret' \ --data-urlencode 'redirect_uri=https://jwt.io ' \ --data-urlencode 'audience=urn:my-api' \ --data-urlencode 'response_type=code' \ --data-urlencode 'authorization_details=[{"type": "money_transfer", "instructedAmount": {"amount": 2500, "currency": "USD"}, "sourceAccount": "xxxxxxxxxxx1234", "destinationAccount": "xxxxxxxxxxx9876", "beneficiary": "Hanna Herwitz", "subject": "A Lannister Always Pays His Debts"}]' MANAGEMENT API TOKEN:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTYxOCwiZXhwIjoxNzE3NjE4MDE4LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.naDZ3rBOk5OKvoIPl9sK4-7qJF0JOOKyUWo53c0IXqyz7ySzN6O9m-ydIyLEsU91B6N1xTRLerfwaHF9b9jVApalrK7jxX4o6KyEJb56YmYSzZ02mew3457B39Eo0mGkcpg_z72T_rxAL6SQ5Y_f_zoDB8iw9LfWjjH3qSeETP2zv8OnDoLHOnIQy84Ip4PdhZZEgV9lkneUHSQ-_TvqWI8vFJNqzw0uc5yUaZ00EpeqBI4bBWq43NLSvDksdpW_ZRrei59UdNvRD3A125gkv2de8uC1Pwv42L0590HmIukQ1Eo3UZezOCwKExPfy8_d1dj817J7DrCTsOUzdbTfdg POST https://$tenant/oauth/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=[DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab]&client_secret=[I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3]&code=[AUTHZ_CODE]&redirect_uri=https://jwt.io POST https://$tenant/oauth/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=[DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab]&client_secret=[I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3]&code=[AUTHZ_CODE]&redirect_uri=https://jwt.io curl --request PATCH \ --url 'https://{yourDomain}/api/v2/resource-servers/API_ID' \ --header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ' \ --header 'content-type: application/json' \ --data '{"token_dialect": "TOKEN_DIALECT" }' curl -X POST --location "https://{domain}/api/v2/resource-servers" \ -H "Authorization: Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ}" \ -H "Content-Type: application/json" \ --data-raw '{ "name": "{apiName}", "identifier": "{apiIdentifier}", "token_encryption": { "format": "compact-nested-jwe", "encryption_key": { "name": "{credentialName}", "pem": "{pem}", "alg": "{alg}", "kid": "{kid}" } } }' const fs = require('fs'); const crypto = require('crypto'); const { calculateJwkThumbprint, exportJWK } = require('jose'); const publicKeyObject = crypto.createPublicKey(fs.readFileSync('./my_cert.pem')); exportJWK(publicKeyObject).then((jwk) => { calculateJwkThumbprint(jwk, 'sha256').then((thumbprint) => { console.log(thumbprint); }); });https://{yourDomain}/authorize? scope=read:contacts%20read:calendar& audience=organize& response_type=id_token%20token& client_id={DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab}& redirect_uri=http://localhost:3000& nonce={nonce} function getParameterByName(name) { var match = RegExp('[#&]' + name + '=([^&])').exec(window.location.hash); return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); } function getAccessToken() { return getParameterByName('eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA'); } curl --location --request POST 'https://$tenant/api/v2/resource-servers/' \ --header 'Authorization: Bearer $eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "Payments API", "identifier": "https://payments.api/", "consent_policy": "transactional-authorization-with-mfa", "authorization_details": [{"type": "payment_initiation"}] }' curl --location --request PUT "https://$tenant/api/v2/prompts/customized-consent/partials" \ --header "Authorization: Bearer $eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ" \ --header "Content-Type: application/json" \ --data '{ "customized-consent": { "form-content": "<div style=\"font-size: 1.3em; font-weight: bold;\">Operation Details</div><hr style=\"margin: 10px 0;\"><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Transaction Type</div><div>{{ transaction.params.authorization_details[0].type }}</div><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Amount</div><div>{{ transaction.params.authorization_details[0].instructedAmount.amount }} {{ transaction.params.authorization_details[0].instructedAmount.currency }}</div><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Recipient</div><div>{{ transaction.params.authorization_details[0].beneficiary }}</div><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Destination Account</div><div>{{ transaction.params.authorization_details[0].destinationAccount }}</div><div style=\"margin-bottom: 20px;\"></div>" } }' curl --request POST \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=client_credentials \ --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ --data 'client_secret={I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-}' \ --data 'audience=https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/' { "access_token": "eyJ...Ggg", "expires_in": 86400, "scope": "read:clients create:clients read:client_keys", "token_type": "Bearer" } curl --request POST \ --url http:///{mgmtApiEndpoint} \ --header 'authorization: Bearer {yourMgmtApiAccessToken}' \ --header 'content-type: application/json' curl --request GET \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/clients' \ --header 'authorization: Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA}' \ --header 'content-type: application/json' def main(): import json, requests from requests.exceptions import RequestException, HTTPError, URLRequired # Configuration Values domain = 'YOUR_DOMAIN' audience = f'https://{domain}/api/v2/' client_id = 'DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab' client_secret = 'I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-' grant_type = "client_credentials" # OAuth 2.0 flow to use # Get an Access Token from Auth0 base_url = f"https://{domain}" payload = { 'grant_type': grant_type, 'client_id': client_id, 'client_secret': I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-, 'audience': audience } response = requests.post(f'{base_url}/oauth/token', data=payload) oauth = response.json() access_token = oauth.get('eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA') # Add the token to the Authorization header of the request headers = { 'Authorization': f'Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA}', 'Content-Type': 'application/json' } # Get all Applications using the token try: res = requests.get(f'{base_url}/api/v2/clients', headers=headers) print(res.json()) except HTTPError as e: print(f'HTTPError: {str(e.code)} {str(e.reason)}') except URLRequired as e: print(f'URLRequired: {str(e.reason)}') except RequestException as e: print(f'RequestException: {e}') except Exception as e: print(f'Generic Exception: {e}') # Standard boilerplate to call the main() function. if name == ;'main': main() https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/ API IDENTIFIEER:665d3535559cf53ada0c0fb9 https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/ curl --request POST \ --url https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token \ --header 'content-type: application/json' \ --data '{"client_id":"8xuuzVgfpp40K4kM1XNDRpH1jFMiuJAD","client_secret":"aEVgxpTkh8i9SNzX_8G5RHHeK6in7oBWp9WZvw1xL0Hka6uKUuZmDzgs35AM0jZ0","audience":"https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/","grant_type":"client_credentials"}' In this example, client_id and client_secret are the ones from the Auth0 Management API (Test Application) application. You can change this values with any from your other authorized applications. Response { "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA", "token_type": "Bearer"} curl --request GET \ --url http://path_to_your_api/ \ --header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA' From ece448047561edb002a90afc88951eea4200223b Mon Sep 17 00:00:00 2001 From: keith T bieszczat sr grateful345ii@icloud.com Date: Tue, 4 Jun 2024 15:09:59 -0500 Subject: [PATCH] Update auth0.crt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 665d3535559cf53ada0c0fb9 ID 665d3535559cf53ada0c0fb9 https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/5brrKDHYvFA30fTtLgRXoBP4rgQwDa7 GLOBAL CLIENT ID: DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab GLOBAL CLIENT SECRET: I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3- CLIENT ID : Client ID 5brrKDHYvFA30fTtLgRXoBP Application name: Foundation MIB Corporate 4rgQwDa7v Domain: http://dev-780m0w5r8jhyhts8.us.auth0.com Client ID:5brrKDHYvFA30fTtLgRXoBP4rgQwDa7v Client Secret: E-NkvzK439KTkXPawYLEcFkJR0loHQtxErlHEHJ1YlpID-xPUa3LWEskoVPwSaju Key ID:kFBeYnpvUPhDmmFBOlai2 -----BEGIN CERTIFICATE----- MIIDHTCCAgWgAwIBAgIJBsn7KiPsgIGbMA0GCSqGSIb3DQEBCwUAMCwxKjAoBgNV BAMTIWRldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbTAeFw0yNDA2MDMw MzE1MDBaFw0zODAyMTAwMzE1MDBaMCwxKjAoBgNVBAMTIWRldi03ODBtMHc1cjhq aHlodHM4LnVzLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAKh6coojyJwEU4HBJTAY7UktrIdoha4YVdv/CXmCpsshWRRkPi4ht6dBdVZp 5LxwOYlVe7Dg32jRdVgmI3gkib8jZlgTurRIcdHHaoBP1alK2E5pBG8s7QRCjMF6 BCUGMjtuxHAEbOs4iC51uDuVcIjLcFJm180UF3KrtAXfEwk1vvldxNkmUokW/HHu 8qHsFH3i1hAjeAhS/lcziqIJF5rRERBoxgUsj8RPz1EbKULpLB3q7MS2yd3qGyrD 7GUXl10RXkLJrlrP+rMqGwkXm/tJ1enHdIvsVHOmJaYR3jRRL5x5xQ8HYklsVIEK MKhF+1jBidfinoKYSgBUWO4pFF8CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAd BgNVHQ4EFgQUzu9gS8XIe5XsxgN10QowXnyVJB8wDgYDVR0PAQH/BAQDAgKEMA0G CSqGSIb3DQEBCwUAA4IBAQCbKFQQ5AsOa375/ql1JCoWHwnyqGFds8G1TSQvBI/v tMCUlU91zkx2REZMCF1MR/Arc8PCcwj3OJEIOpjw3nz/03Ei7w5jaiVorsRXbtiw k93RNIcIchHgS/AdV9kjS6OKU/OmNwE8sz4oBMRMqhIMDsiZo5otK3L3FoxeGKql dBYpLb7QFPMgWGiwJb47VktCnactsJXl7kO1ILfj4+C81GyMaK0Vb4/ZKVEIdeoR qXnXz/PrZn6+euU3fkO8VICUktBuFn6QS0E0EJfaIcGjU7PAZHBGnrZP+6oksujp jPMnXdoH7Zdp+Ivwqynvlpu5P5iQUEEBqKUp0MGZsH6K -----END CERTIFICATE----- FINGERPRINTS: BC:B0:CE:8A:02:41:3F:30:2E:FA:FF:21:77:D7:BA:EB:C9:6F:0B:5D BCB0CE8A02413F302EFAFF2177D7BAEBC96F0B5D curl --request GET \ --url 'https://{dev-780m0w5r8jhyhts8.us.auth0.com}/api/v2/keys/signing' \ --header 'authorization: Bearer {yourMgmtApiAccessToken}' curl --request GET \ --url 'https://{yourDomain}/api/v2/keys/signing/{yourKeyId}' \ --header 'authorization: Bearer {yourMgmtApiAccessToken}' // server.mjs import { createServer } from 'node:http'; const server = createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World!\n'); }); // starts a simple http server locally on port 3000 server.listen(3000, '127.0.0.1', () => { console.log('Listening on 127.0.0.1:3000'); }); // run with node server.mjs curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt grep node-vx.y.z.tar.gz SHASUMS256.txt | sha256sum -c - gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt.sig gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C # Beth Griggs gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57 # Bryan English gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 # Danielle Adams gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 # Juan José Arboleda gpg --keyserver hkps://keys.openpgp.org --recv-keys CC68F5A3106FF448322E48ED27F5E38D5B0A215F # Marco Ippolito gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 # Michaël Zasso gpg --keyserver hkps://keys.openpgp.org --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 # Myles Borins gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 # Rafael Gonzaga gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C # Richard Lau gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A # Ruy Adorno gpg --keyserver hkps://keys.openpgp.org --recv-keys A363A499291CBBC940DD62E41F10027AF002F8B0 # Ulises Gascón curl --request POST \ --url 'https://{dev-780m0w5r8jhyhts8.us.auth0.com}/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=client_credentials \ --data client_id=DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab \ --data client_secret=YOUR_CLIENT_SECRET \ GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}& state=STATE& ADDITIONAL_PARAMETERS GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}&scope=openid%20profile%20email& state=STATE --data audience=YOUR_API_IDENTIFIER GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}& state=STATE GET https://{dev-780m0w5r8jhyhts8.us.auth0.com}/v2/logout? client_id={yourClientId}& returnTo=LOGOUT_URL GET https://{yourDomain}/oidc/logout? post_logout_redirect_uri=LOGOUT_URL& id_token_hint=ID_TOKEN_HINT POST https://{yourDomain}/oauth/token Content-Type: application/json { "grant_type" : "http://auth0.com/oauth/grant-type/passwordless/otp", "client_id": "{DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab}", "client_secret": "YOUR_CLIENT_SECRET", // for web applications "otp": "CODE", "realm": "email|sms" //email or sms "username":"USER_EMAIL|USER_PHONE_NUMBER", // depends on which realm you chose "audience" : "API_IDENTIFIER", // in case you need an access token for a specific API "scope": "SCOPE", "redirect_uri": "REDIRECT_URI" } POST https://{dev-780m0w5r8jhyhts8.us.auth0.com}/dbconnections/signup Content-Type: application/json { "client_id": "{yDLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab}", "email": "EMAIL", "password": "PASSWORD", "connection": "CONNECTION", "username": "johndoe", "given_name": "John", "family_name": "Doe", "name": "John Doe", "nickname": "johnny", "picture": "http://example.org/jdoe.png" "user_metadata": { plan: 'silver', team_id: 'a111' } } RESPONSE SAMPLE: { "_id": "58457fe6b27...", "email_verified": false, "email": "test.account@signup.com", "username": "johndoe", "given_name": "John", "family_name": "Doe", "name": "John Doe", "nickname": "johnny", "picture": "http://example.org/jdoe.png" } GET https://{yourDomain}/authorize?audience=API_IDENTIFIER& scope=SCOPE& response_type=code& client_id={yourClientId}& redirect_uri={https://yourApp/callback}& code_challenge=CODE_CHALLENGE& code_challenge_method=S256 RESPONSE SAMPLE HTTP/1.1 302 Found Location: {https://yourApp/callback}?code=AUTHORIZATION_CODE Edit file curl --request POST \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token' \ --header 'authorization: Basic {yourApplicationCredentials}' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=refresh_token \ --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ --data 'refresh_token={yourRefreshToken}' curl --request POST \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=refresh_token \ --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ --data 'client_secret={I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-}' \ --data 'refresh_token={yourRefreshToken}' { "access_token": "eyJ...MoQ", "expires_in": 86400, "scope": "openid offline_access", "id_token": "eyJ...0NE", "token_type": "Bearer" } function (user, context, callback) { if (context.protocol === 'oauth2-refresh-token'){ return callback(null, user, context); } // Add MFA logic callback(null, user, context); } https://dev-780m0w5r8jhyhts8.us.auth0.com/authorize? audience={API_AUDIENCE}& scope=offline_access& response_type=code& client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96& redirect_uri=undefined& state={OPAQUE_VALUE} curl --request POST \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=authorization_code \ --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ --data 'client_secret={I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-}' \ --data 'code={yourAuthorizationCode}' \ --data 'redirect_uri=undefined' { "access_token": "eyJz93a...k4laUWw", "refresh_token": "GEbRxBN...edjnXbL", "token_type": "Bearer" } function(user, context, callback) { // add custom claims to Access Token and ID Token context.accessToken['http://foo/bar'] = 'value'; context.idToken['http://fiz/baz'] = 'some other value'; // change scope context.accessToken.scope = ['array', 'of', 'strings']; callback(null, user, context); } GET https://dev-780m0w5r8jhyhts8.us.auth0.com/userinfo Authorization: 'Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA}' POST https://dev-780m0w5r8jhyhts8.us.auth0.com/mfa/challenge Content-Type: application/json { "client_id": "OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96", "client_secret": "I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-", "mfa_token": "MFA_TOKEN", "challenge_type": "oob|otp" } GET https://dev-780m0w5r8jhyhts8.us.auth0.com/samlp/OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96? connection=CONNECTION GET https://dev-780m0w5r8jhyhts8.us.auth0.com/samlp/metadata/OTGv6UTlGzeyNfHLW3b8sZYfi GET https://dev-780m0w5r8jhyhts8.us.auth0.com/wsfed/OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96 GET https://dev-780m0w5r8jhyhts8.us.auth0.com/wsfed/FederationMetadata/2007-06/FederationMetadata.xml POST https://dev-780m0w5r8jhyhts8.us.auth0.com/oidc/register Content-Type: application/json { "client_name": "YOUR-NEW-CLIENT-NAME", "redirect_uris": [], "token_endpoint_auth_method": "I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-" } RESPONSE SAMPLE: { "client_name": "My Dynamic Client", "client_id": "8SXWY6j3afl2CP5ntwEOpMdPxxy49Gt2", "client_secret": "Q5O...33P", "redirect_uris": [ "https://client.example.com/callback", "https://client.example.com/callback2" ], "client_secret_expires_at": 0 } GET https://dev-780m0w5r8jhyhts8.us.auth0.com/authorize? audience=API_IDENTIFIER& scope=SCOPE& response_type=code& client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96& redirect_uri=undefined& state=STATE RESPONSE SAMPLE HTTP/1.1 302 Found Location: undefined?code=AUTHORIZATION_CODE&state=STATE POST https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/tokenContent-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96&client_secret=YOUR_CLIENT_SECRET&code=AUTHORIZATION_CODE&redirect_uri=undefined RESPONSE SAMPLE: HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJz93a...k4laUWw", "refresh_token":"GEbRxBN...edjnXbL", "id_token":"eyJ0XAi...4faeEoQ", "token_type":"Bearer", "expire" POST https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96&code_verifier=CODE_VERIFIER&code=AUTHORIZATION_CODE&redirect_uri=undefined RESPONSE SAMPLE: HTTP/1.1 200 OK Content-Type: application/json { "access_token":"eyJz93a...k4laUWw", "refresh_token":"GEbRxBN...edjnXbL", "id_token":"eyJ0XAi...4faeEoQ", "token_type":"Bearer", "expires_in":86400 } OST dev-780m0w5r8jhyhts8.us.auth0.com/oauth/par Content-Type: 'application/x-www-form-urlencoded' audience={https://yourApi/}& response_type=code|code id_token& client_id={yourClientId}& redirect_uri={https://yourApp/callback}& state=STATE& scope=openid|profile|email& code_challenge=CODE_CHALLENGE& code_challenge_method=S256& nonce=NONCE& connection=CONNECTION& prompt=login|consent|none& organisation=ORGANIZATION RESPONSE SAMPLE: /** If the request is successful, /oauth/par responds with a JSON object containing the request_uriproperty, which can be used at the authorization endpoint, and the expires_in value, which indicates the number of seconds the request_uri is valid. / HTTP/1.1 201 Created Content-Type: application/json { "request_uri": "urn:ietf:params:oauth:request_uri:6esc_11ACC5bwc014ltc14eY22c", "expires_in": 30 } curl --location 'https://$tenant/oauth/par' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'client_id=$client_id' \ --data-urlencode 'client_secret=$client_secret' \ --data-urlencode 'redirect_uri=https://jwt.io ' \ --data-urlencode 'audience=urn:my-api' \ --data-urlencode 'response_type=code' \ --data-urlencode 'authorization_details=[{"type": "money_transfer", "instructedAmount": {"amount": 2500, "currency": "USD"}, "sourceAccount": "xxxxxxxxxxx1234", "destinationAccount": "xxxxxxxxxxx9876", "beneficiary": "Hanna Herwitz", "subject": "A Lannister Always Pays His Debts"}]' MANAGEMENT API TOKEN:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTYxOCwiZXhwIjoxNzE3NjE4MDE4LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.naDZ3rBOk5OKvoIPl9sK4-7qJF0JOOKyUWo53c0IXqyz7ySzN6O9m-ydIyLEsU91B6N1xTRLerfwaHF9b9jVApalrK7jxX4o6KyEJb56YmYSzZ02mew3457B39Eo0mGkcpg_z72T_rxAL6SQ5Y_f_zoDB8iw9LfWjjH3qSeETP2zv8OnDoLHOnIQy84Ip4PdhZZEgV9lkneUHSQ-_TvqWI8vFJNqzw0uc5yUaZ00EpeqBI4bBWq43NLSvDksdpW_ZRrei59UdNvRD3A125gkv2de8uC1Pwv42L0590HmIukQ1Eo3UZezOCwKExPfy8_d1dj817J7DrCTsOUzdbTfdg POST https://$tenant/oauth/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=[DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab]&client_secret=[I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3]&code=[AUTHZ_CODE]&redirect_uri=https://jwt.io POST https://$tenant/oauth/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=[DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab]&client_secret=[I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3]&code=[AUTHZ_CODE]&redirect_uri=https://jwt.io curl --request PATCH \ --url 'https://{yourDomain}/api/v2/resource-servers/API_ID' \ --header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ' \ --header 'content-type: application/json' \ --data '{"token_dialect": "TOKEN_DIALECT" }' curl -X POST --location "https://{domain}/api/v2/resource-servers" \ -H "Authorization: Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ}" \ -H "Content-Type: application/json" \ --data-raw '{ "name": "{apiName}", "identifier": "{apiIdentifier}", "token_encryption": { "format": "compact-nested-jwe", "encryption_key": { "name": "{credentialName}", "pem": "{pem}", "alg": "{alg}", "kid": "{kid}" } } }' const fs = require('fs'); const crypto = require('crypto'); const { calculateJwkThumbprint, exportJWK } = require('jose'); const publicKeyObject = crypto.createPublicKey(fs.readFileSync('./my_cert.pem')); exportJWK(publicKeyObject).then((jwk) => { calculateJwkThumbprint(jwk, 'sha256').then((thumbprint) => { console.log(thumbprint); }); });https://{yourDomain}/authorize? scope=read:contacts%20read:calendar& audience=organize& response_type=id_token%20token& client_id={DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab}& redirect_uri=http://localhost:3000& nonce={nonce} function getParameterByName(name) { var match = RegExp('[#&]' + name + '=([^&])').exec(window.location.hash); return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); } function getAccessToken() { return getParameterByName('eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA'); } curl --location --request POST 'https://$tenant/api/v2/resource-servers/' \ --header 'Authorization: Bearer $eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "Payments API", "identifier": "https://payments.api/", "consent_policy": "transactional-authorization-with-mfa", "authorization_details": [{"type": "payment_initiation"}] }' curl --location --request PUT "https://$tenant/api/v2/prompts/customized-consent/partials" \ --header "Authorization: Bearer $eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ" \ --header "Content-Type: application/json" \ --data '{ "customized-consent": { "form-content": "<div style=\"font-size: 1.3em; font-weight: bold;\">Operation Details</div><hr style=\"margin: 10px 0;\"><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Transaction Type</div><div>{{ transaction.params.authorization_details[0].type }}</div><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Amount</div><div>{{ transaction.params.authorization_details[0].instructedAmount.amount }} {{ transaction.params.authorization_details[0].instructedAmount.currency }}</div><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Recipient</div><div>{{ transaction.params.authorization_details[0].beneficiary }}</div><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Destination Account</div><div>{{ transaction.params.authorization_details[0].destinationAccount }}</div><div style=\"margin-bottom: 20px;\"></div>" } }' curl --request POST \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=client_credentials \ --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ --data 'client_secret={I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-}' \ --data 'audience=https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/' { "access_token": "eyJ...Ggg", "expires_in": 86400, "scope": "read:clients create:clients read:client_keys", "token_type": "Bearer" } curl --request POST \ --url http:///{mgmtApiEndpoint} \ --header 'authorization: Bearer {yourMgmtApiAccessToken}' \ --header 'content-type: application/json' curl --request GET \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/clients' \ --header 'authorization: Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA}' \ --header 'content-type: application/json' def main(): import json, requests from requests.exceptions import RequestException, HTTPError, URLRequired # Configuration Values domain = 'YOUR_DOMAIN' audience = f'https://{domain}/api/v2/' client_id = 'DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab' client_secret = 'I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-' grant_type = "client_credentials" # OAuth 2.0 flow to use # Get an Access Token from Auth0 base_url = f"https://{domain}" payload = { 'grant_type': grant_type, 'client_id': client_id, 'client_secret': I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-, 'audience': audience } response = requests.post(f'{base_url}/oauth/token', data=payload) oauth = response.json() access_token = oauth.get('eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA') # Add the token to the Authorization header of the request headers = { 'Authorization': f'Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA}', 'Content-Type': 'application/json' } # Get all Applications using the token try: res = requests.get(f'{base_url}/api/v2/clients', headers=headers) print(res.json()) except HTTPError as e: print(f'HTTPError: {str(e.code)} {str(e.reason)}') except URLRequired as e: print(f'URLRequired: {str(e.reason)}') except RequestException as e: print(f'RequestException: {e}') except Exception as e: print(f'Generic Exception: {e}') # Standard boilerplate to call the main() function. if name == ;'main': main() https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/ API IDENTIFIEER:665d3535559cf53ada0c0fb9 https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/ curl --request POST \ --url https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token \ --header 'content-type: application/json' \ --data '{"client_id":"8xuuzVgfpp40K4kM1XNDRpH1jFMiuJAD","client_secret":"aEVgxpTkh8i9SNzX_8G5RHHeK6in7oBWp9WZvw1xL0Hka6uKUuZmDzgs35AM0jZ0","audience":"https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/","grant_type":"client_credentials"}' In this example, client_id and client_secret are the ones from the Auth0 Management API (Test Application) application. You can change this values with any from your other authorized applications. Response { "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA", "token_type": "Bearer"} curl --request GET \ --url http://path_to_your_api/ \ --header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA' # Create a folder $ mkdir actions-runner && cd actions-runner # Download the latest runner package $ curl -o actions-runner-linux-arm64-2.316.1.tar.gz -L https://github.com/actions/runner/releases/download/v2.316.1/actions-runner-linux-arm64-2.316.1.tar.gz # Optional: Validate the hash $ echo "4f506deac376013a95683fd5873e9c40f27e5790895147ccaa24d7c970532249 actions-runner-linux-arm64-2.316.1.tar.gz" | shasum -a 256 -c # Extract the installer $ tar xzf ./actions-runner-linux-arm64-2.316.1.tar.gz Configure # Create the runner and start the configuration experience $ ./config.sh --url https://github.com/grateful345/Cloudfare.crt --token BHAHZGGHH6OJ2EJB3K7NG2LGLVGV6 # Last step, run it! $ ./run.sh Using your self-hosted runner # Use this YAML in your workflow file for each job runs-on: self-hosted --- auth0.crt | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 183 insertions(+), 7 deletions(-) diff --git a/auth0.crt b/auth0.crt index 95c148f..ed3b5d4 100644 --- a/auth0.crt +++ b/auth0.crt @@ -6,9 +6,17 @@ Application name: Foundation MIB Corporate 4rgQwDa7v Domain: dev-780m0w5r8jhyhts Client ID:5brrKDHYvFA30fTtLgRXoBP4rgQwDa7v Client Secret: E-NkvzK439KTkXPawYLEcFkJR0loHQtxErlHEHJ1YlpID-xPUa3LWEskoVPwSaju Key ID:kFBeYnpvUPhDmmFBOlai2 ------BEGIN CERTIFICATE----- MIIDHTCCAgWgAwIBAgIJBsn7KiPsgIGbMA0GCSqGSIb3DQEBCwUAMCwxKjAoBgNV BAMTIWRldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbTAeFw0yNDA2MDMw MzE1MDBaFw0zODAyMTAwMzE1MDBaMCwxKjAoBgNVBAMTIWRldi03ODBtMHc1cjhq aHlodHM4LnVzLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAKh6coojyJwEU4HBJTAY7UktrIdoha4YVdv/CXmCpsshWRRkPi4ht6dBdVZp 5LxwOYlVe7Dg32jRdVgmI3gkib8jZlgTurRIcdHHaoBP1alK2E5pBG8s7QRCjMF6 BCUGMjtuxHAEbOs4iC51uDuVcIjLcFJm180UF3KrtAXfEwk1vvldxNkmUokW/HHu 8qHsFH3i1hAjeAhS/lcziqIJF5rRERBoxgUsj8RPz1EbKULpLB3q7MS2yd3qGyrD 7GUXl10RXkLJrlrP+rMqGwkXm/tJ1enHdIvsVHOmJaYR3jRRL5x5xQ8HYklsVIEK MKhF+1jBidfinoKYSgBUWO4pFF8CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAd BgNVHQ4EFgQUzu9gS8XIe5XsxgN10QowXnyVJB8wDgYDVR0PAQH/BAQDAgKEMA0G CSqGSIb3DQEBCwUAA4IBAQCbKFQQ5AsOa375/ql1JCoWHwnyqGFds8G1TSQvBI/v tMCUlU91zkx2REZMCF1MR/Arc8PCcwj3OJEIOpjw3nz/03Ei7w5jaiVorsRXbtiw k93RNIcIchHgS/AdV9kjS6OKU/OmNwE8sz4oBMRMqhIMDsiZo5otK3L3FoxeGKql dBYpLb7QFPMgWGiwJb47VktCnactsJXl7kO1ILfj4+C81GyMaK0Vb4/ZKVEIdeoR qXnXz/PrZn6+euU3fkO8VICUktBuFn6QS0E0EJfaIcGjU7PAZHBGnrZP+6oksujp jPMnXdoH7Zdp+Ivwqynvlpu5P5iQUEEBqKUp0MGZsH6K -----END CERTIFICATE----- FINGERPRINTS: BC:B0:CE:8A:02:41:3F:30:2E:FA:FF:21:77:D7:BA:EB:C9:6F:0B:5D BCB0CE8A02413F302EFAFF2177D7BAEBC96F0B5D curl --request GET \ --url 'https://{yourDomain}/api/v2/keys/signing' \ --header 'authorization: Bearer {yourMgmtApiAccessToken}' curl --request GET \ --url 'https://{yourDomain}/api/v2/keys/signing/{yourKeyId}' \ --header 'authorization: Bearer {yourMgmtApiAccessToken}' // server.mjs import { createServer } from 'node:http'; const server = createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World!\n'); }); // starts a simple http server locally on port 3000 server.listen(3000, '127.0.0.1', () => { console.log('Listening on 127.0.0.1:3000'); }); // run with node server.mjs +-----BEGIN CERTIFICATE----- MIIDHTCCAgWgAwIBAgIJBsn7KiPsgIGbMA0GCSqGSIb3DQEBCwUAMCwxKjAoBgNV BAMTIWRldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbTAeFw0yNDA2MDMw MzE1MDBaFw0zODAyMTAwMzE1MDBaMCwxKjAoBgNVBAMTIWRldi03ODBtMHc1cjhq aHlodHM4LnVzLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAKh6coojyJwEU4HBJTAY7UktrIdoha4YVdv/CXmCpsshWRRkPi4ht6dBdVZp 5LxwOYlVe7Dg32jRdVgmI3gkib8jZlgTurRIcdHHaoBP1alK2E5pBG8s7QRCjMF6 BCUGMjtuxHAEbOs4iC51uDuVcIjLcFJm180UF3KrtAXfEwk1vvldxNkmUokW/HHu 8qHsFH3i1hAjeAhS/lcziqIJF5rRERBoxgUsj8RPz1EbKULpLB3q7MS2yd3qGyrD 7GUXl10RXkLJrlrP+rMqGwkXm/tJ1enHdIvsVHOmJaYR3jRRL5x5xQ8HYklsVIEK MKhF+1jBidfinoKYSgBUWO4pFF8CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAd BgNVHQ4EFgQUzu9gS8XIe5XsxgN10QowXnyVJB8wDgYDVR0PAQH/BAQDAgKEMA0G CSqGSIb3DQEBCwUAA4IBAQCbKFQQ5AsOa375/ql1JCoWHwnyqGFds8G1TSQvBI/v tMCUlU91zkx2REZMCF1MR/Arc8PCcwj3OJEIOpjw3nz/03Ei7w5jaiVorsRXbtiw k93RNIcIchHgS/AdV9kjS6OKU/OmNwE8sz4oBMRMqhIMDsiZo5otK3L3FoxeGKql dBYpLb7QFPMgWGiwJb47VktCnactsJXl7kO1ILfj4+C81GyMaK0Vb4/ZKVEIdeoR qXnXz/PrZn6+euU3fkO8VICUktBuFn6QS0E0EJfaIcGjU7PAZHBGnrZP+6oksujp jPMnXdoH7Zdp+Ivwqynvlpu5P5iQUEEBqKUp0MGZsH6K -----END CERTIFICATE----- FINGERPRINTS: BC:B0:CE:8A:02:41:3F:30:2E:FA:FF:21:77:D7:BA:EB:C9:6F:0B:5D BCB0CE8A02413F302EFAFF2177D7BAEBC96F0B5D -curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txtgrep node-vx.y.z.tar.gz SHASUMS256.txt | sha256sum -c - gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt.siggpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C # Beth Griggs gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57 # Bryan English gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 # Danielle Adams gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 # Juan José Arboleda gpg --keyserver hkps://keys.openpgp.org --recv-keys CC68F5A3106FF448322E48ED27F5E38D5B0A215F # Marco Ippolito gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 # Michaël Zasso gpg --keyserver hkps://keys.openpgp.org --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 # Myles Borins gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 # Rafael Gonzaga gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C # Richard Lau gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A # Ruy Adorno gpg --keyserver hkps://keys.openpgp.org --recv-keys A363A499291CBBC940DD62E41F10027AF002F8B0 # Ulises Gascón curl --request POST \ --url 'https://{yourDomain}/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=client_credentials \ --data client_id=YOUR_CLIENT_ID \ --data client_secret=YOUR_CLIENT_SECRET \ GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}&state=STATE& ADDITIONAL_PARAMETERS GET https://{yourDomain}/authorize?response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}& scope=openid%20profile%20email& state=STATE --data audience=YOUR_API_IDENTIFIER GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}& state=STATE GET https://{yourDomain}/v2/logout? client_id={yourClientId}& returnTo=LOGOUT_URL GET https://{yourDomain}/oidc/logout? post_logout_redirect_uri=LOGOUT_URL& id_token_hint=ID_TOKEN_HINT POST https://{yourDomain}/oauth/token Content-Type: application/json { "grant_type" : "http://auth0.com/oauth/grant-type/passwordless/otp", "client_id": "{yourClientId}", "client_secret": "YOUR_CLIENT_SECRET", // for web applications "otp": "CODE", "realm": "email|sms" //email or sms "username":"USER_EMAIL|USER_PHONE_NUMBER", // depends on which realm you chose "audience" : "API_IDENTIFIER", // in case you need an access token for a specific API "scope": "SCOPE", "redirect_uri": "REDIRECT_URI" } POST https://{yourDomain}/dbconnections/signup Content-Type: application/json { "client_id": "{yourClientId}", "email": "EMAIL", "password": "PASSWORD", "connection": "CONNECTION", "username": "johndoe", "given_name": "John", "family_name": "Doe", "name": "John Doe", "nickname": "johnny", "picture": "http://example.org/jdoe.png" "user_metadata": { plan: 'silver', team_id: 'a111' } } RESPONSE SAMPLE: { "_id": "58457fe6b27...", "email_verified": false, "email": "test.account@signup.com", "username": "johndoe", "given_name": "John", "family_name": "Doe", "name": "John Doe", "nickname": "johnny", "picture": "http://example.org/jdoe.png" } GET https://{yourDomain}/authorize? audience=API_IDENTIFIER& scope=SCOPE& response_type=code& client_id={yourClientId}& redirect_uri={https://yourApp/callback}&code_challenge=CODE_CHALLENGE& code_challenge_method=S256 RESPONSE SAMPLE HTTP/1.1 302 Found Location: {https://yourApp/callback}?code=AUTHORIZATION_CODE Edit file +curl --request GET \ --url 'https://{dev-780m0w5r8jhyhts8.us.auth0.com}/api/v2/keys/signing' \ --header 'authorization: Bearer {yourMgmtApiAccessToken}' + +curl --request GET \ --url 'https://{yourDomain}/api/v2/keys/signing/{yourKeyId}' \ --header 'authorization: Bearer {yourMgmtApiAccessToken}' // server.mjs import { createServer } from 'node:http'; const server = createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World!\n'); }); // starts a simple http server locally on port 3000 server.listen(3000, '127.0.0.1', () => { console.log('Listening on 127.0.0.1:3000'); }); // run with node server.mjs + +curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt grep node-vx.y.z.tar.gz SHASUMS256.txt | sha256sum -c - gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C + +curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt.sig gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C # Beth Griggs gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57 # Bryan English gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 # Danielle Adams gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 # Juan José Arboleda gpg --keyserver hkps://keys.openpgp.org --recv-keys CC68F5A3106FF448322E48ED27F5E38D5B0A215F # Marco Ippolito gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 # Michaël Zasso gpg --keyserver hkps://keys.openpgp.org --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 # Myles Borins gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 # Rafael Gonzaga gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C # Richard Lau gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A # Ruy Adorno gpg --keyserver hkps://keys.openpgp.org --recv-keys A363A499291CBBC940DD62E41F10027AF002F8B0 # Ulises Gascón curl --request POST \ --url 'https://{dev-780m0w5r8jhyhts8.us.auth0.com}/oauth/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=client_credentials \ --data client_id=DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab \ --data client_secret=YOUR_CLIENT_SECRET \ + +GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}& state=STATE& ADDITIONAL_PARAMETERS GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}&scope=openid%20profile%20email& state=STATE --data audience=YOUR_API_IDENTIFIER GET https://{yourDomain}/authorize? response_type=code|token& client_id={yourClientId}& connection=CONNECTION& redirect_uri={https://yourApp/callback}& state=STATE GET https://{dev-780m0w5r8jhyhts8.us.auth0.com}/v2/logout? client_id={yourClientId}& returnTo=LOGOUT_URL GET https://{yourDomain}/oidc/logout? post_logout_redirect_uri=LOGOUT_URL& id_token_hint=ID_TOKEN_HINT POST https://{yourDomain}/oauth/token Content-Type: application/json { "grant_type" : "http://auth0.com/oauth/grant-type/passwordless/otp", "client_id": "{DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab}", "client_secret": "YOUR_CLIENT_SECRET", // for web applications "otp": "CODE", "realm": "email|sms" //email or sms "username":"USER_EMAIL|USER_PHONE_NUMBER", // depends on which realm you chose "audience" : "API_IDENTIFIER", // in case you need an access token for a specific API "scope": "SCOPE", "redirect_uri": "REDIRECT_URI" } POST https://{dev-780m0w5r8jhyhts8.us.auth0.com}/dbconnections/signup Content-Type: application/json { "client_id": "{yDLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab}", "email": "EMAIL", "password": "PASSWORD", "connection": "CONNECTION", "username": "johndoe", "given_name": "John", "family_name": "Doe", "name": "John Doe", "nickname": "johnny", "picture": "http://example.org/jdoe.png" "user_metadata": { plan: 'silver', team_id: 'a111' } } RESPONSE SAMPLE: { "_id": "58457fe6b27...", "email_verified": false, "email": "test.account@signup.com", "username": "johndoe", "given_name": "John", "family_name": "Doe", "name": "John Doe", "nickname": "johnny", "picture": "http://example.org/jdoe.png" } GET https://{yourDomain}/authorize?audience=API_IDENTIFIER& scope=SCOPE& response_type=code& client_id={yourClientId}& redirect_uri={https://yourApp/callback}& code_challenge=CODE_CHALLENGE& code_challenge_method=S256 RESPONSE SAMPLE HTTP/1.1 302 Found Location: {https://yourApp/callback}?code=AUTHORIZATION_CODE Edit file curl --request POST \ --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token' \ @@ -22,7 +30,7 @@ curl --request POST \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=refresh_token \ --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ - --data 'client_secret={yourClientSecret}' \ + --data 'client_secret={I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-}' \ --data 'refresh_token={yourRefreshToken}' { @@ -54,7 +62,7 @@ curl --request POST \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=authorization_code \ --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ - --data 'client_secret={yourClientSecret}' \ + --data 'client_secret={I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-}' \ --data 'code={yourAuthorizationCode}' \ --data 'redirect_uri=undefined' @@ -74,13 +82,13 @@ function(user, context, callback) { callback(null, user, context); } GET https://dev-780m0w5r8jhyhts8.us.auth0.com/userinfo -Authorization: 'Bearer {ACCESS_TOKEN}' +Authorization: 'Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA}' POST https://dev-780m0w5r8jhyhts8.us.auth0.com/mfa/challenge Content-Type: application/json { "client_id": "OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96", - "client_secret": "YOUR_CLIENT_SECRET", + "client_secret": "I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-", "mfa_token": "MFA_TOKEN", "challenge_type": "oob|otp" } @@ -96,7 +104,7 @@ Content-Type: application/json { "client_name": "YOUR-NEW-CLIENT-NAME", "redirect_uris": [], - "token_endpoint_auth_method": "client_secret_post" + "token_endpoint_auth_method": "I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-" } RESPONSE SAMPLE: { @@ -187,6 +195,174 @@ curl --location 'https://$tenant/oauth/par' \ --data-urlencode 'response_type=code' \ --data-urlencode 'authorization_details=[{"type": "money_transfer", "instructedAmount": {"amount": 2500, "currency": "USD"}, "sourceAccount": "xxxxxxxxxxx1234", "destinationAccount": "xxxxxxxxxxx9876", "beneficiary": "Hanna Herwitz", "subject": "A Lannister Always Pays His Debts"}]' +MANAGEMENT API TOKEN:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTYxOCwiZXhwIjoxNzE3NjE4MDE4LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.naDZ3rBOk5OKvoIPl9sK4-7qJF0JOOKyUWo53c0IXqyz7ySzN6O9m-ydIyLEsU91B6N1xTRLerfwaHF9b9jVApalrK7jxX4o6KyEJb56YmYSzZ02mew3457B39Eo0mGkcpg_z72T_rxAL6SQ5Y_f_zoDB8iw9LfWjjH3qSeETP2zv8OnDoLHOnIQy84Ip4PdhZZEgV9lkneUHSQ-_TvqWI8vFJNqzw0uc5yUaZ00EpeqBI4bBWq43NLSvDksdpW_ZRrei59UdNvRD3A125gkv2de8uC1Pwv42L0590HmIukQ1Eo3UZezOCwKExPfy8_d1dj817J7DrCTsOUzdbTfdg + + +POST https://$tenant/oauth/token +Content-Type: application/x-www-form-urlencoded + +grant_type=authorization_code&client_id=[DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab]&client_secret=[I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3]&code=[AUTHZ_CODE]&redirect_uri=https://jwt.io +POST https://$tenant/oauth/token +Content-Type: application/x-www-form-urlencoded + +grant_type=authorization_code&client_id=[DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab]&client_secret=[I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3]&code=[AUTHZ_CODE]&redirect_uri=https://jwt.io +curl --request PATCH \ + --url 'https://{yourDomain}/api/v2/resource-servers/API_ID' \ + --header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ' \ + --header 'content-type: application/json' \ + --data '{"token_dialect": "TOKEN_DIALECT" }' + +curl -X POST --location "https://{domain}/api/v2/resource-servers" \ + -H "Authorization: Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ}" \ + -H "Content-Type: application/json" \ + --data-raw '{ + "name": "{apiName}", + "identifier": "{apiIdentifier}", + "token_encryption": { + "format": "compact-nested-jwe", + "encryption_key": + { + "name": "{credentialName}", + "pem": "{pem}", + "alg": "{alg}", + "kid": "{kid}" + } + } +}' +const fs = require('fs'); +const crypto = require('crypto'); + +const { calculateJwkThumbprint, exportJWK } = require('jose'); + +const publicKeyObject = crypto.createPublicKey(fs.readFileSync('./my_cert.pem')); +exportJWK(publicKeyObject).then((jwk) => { + calculateJwkThumbprint(jwk, 'sha256').then((thumbprint) => { + console.log(thumbprint); + }); +}); + +https://{yourDomain}/authorize? +scope=read:contacts%20read:calendar& +audience=organize& +response_type=id_token%20token& +client_id={DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab}& +redirect_uri=http://localhost:3000& +nonce={nonce} +function getParameterByName(name) { + var match = RegExp('[#&]' + name + '=([^&])').exec(window.location.hash); + return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); +} + +function getAccessToken() { + return getParameterByName('eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA'); +} + +curl --location --request POST 'https://$tenant/api/v2/resource-servers/' \ + --header 'Authorization: Bearer $eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "Payments API", + "identifier": "https://payments.api/", + "consent_policy": "transactional-authorization-with-mfa", + "authorization_details": [{"type": "payment_initiation"}] + }' +curl --location --request PUT "https://$tenant/api/v2/prompts/customized-consent/partials" \ + --header "Authorization: Bearer $eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJ1Q3RZRFpPYjlDdUF6NWM4M1d5b0YxV0lhTVpYZ1ZRREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMTY2NSwiZXhwIjoxNzE3NjE4MDY1LCJzY29wZSI6InJlYWQ6Y2xpZW50X2dyYW50cyBjcmVhdGU6Y2xpZW50X2dyYW50cyBkZWxldGU6Y2xpZW50X2dyYW50cyB1cGRhdGU6Y2xpZW50X2dyYW50cyByZWFkOnVzZXJzIHVwZGF0ZTp1c2VycyBkZWxldGU6dXNlcnMgY3JlYXRlOnVzZXJzIHJlYWQ6dXNlcnNfYXBwX21ldGFkYXRhIHVwZGF0ZTp1c2Vyc19hcHBfbWV0YWRhdGEgZGVsZXRlOnVzZXJzX2FwcF9tZXRhZGF0YSBjcmVhdGU6dXNlcnNfYXBwX21ldGFkYXRhIHJlYWQ6dXNlcl9jdXN0b21fYmxvY2tzIGNyZWF0ZTp1c2VyX2N1c3RvbV9ibG9ja3MgZGVsZXRlOnVzZXJfY3VzdG9tX2Jsb2NrcyBjcmVhdGU6dXNlcl90aWNrZXRzIHJlYWQ6Y2xpZW50cyB1cGRhdGU6Y2xpZW50cyBkZWxldGU6Y2xpZW50cyBjcmVhdGU6Y2xpZW50cyByZWFkOmNsaWVudF9rZXlzIHVwZGF0ZTpjbGllbnRfa2V5cyBkZWxldGU6Y2xpZW50X2tleXMgY3JlYXRlOmNsaWVudF9rZXlzIHJlYWQ6Y29ubmVjdGlvbnMgdXBkYXRlOmNvbm5lY3Rpb25zIGRlbGV0ZTpjb25uZWN0aW9ucyBjcmVhdGU6Y29ubmVjdGlvbnMgcmVhZDpyZXNvdXJjZV9zZXJ2ZXJzIHVwZGF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGRlbGV0ZTpyZXNvdXJjZV9zZXJ2ZXJzIGNyZWF0ZTpyZXNvdXJjZV9zZXJ2ZXJzIHJlYWQ6ZGV2aWNlX2NyZWRlbnRpYWxzIHVwZGF0ZTpkZXZpY2VfY3JlZGVudGlhbHMgZGVsZXRlOmRldmljZV9jcmVkZW50aWFscyBjcmVhdGU6ZGV2aWNlX2NyZWRlbnRpYWxzIHJlYWQ6cnVsZXMgdXBkYXRlOnJ1bGVzIGRlbGV0ZTpydWxlcyBjcmVhdGU6cnVsZXMgcmVhZDpydWxlc19jb25maWdzIHVwZGF0ZTpydWxlc19jb25maWdzIGRlbGV0ZTpydWxlc19jb25maWdzIHJlYWQ6aG9va3MgdXBkYXRlOmhvb2tzIGRlbGV0ZTpob29rcyBjcmVhdGU6aG9va3MgcmVhZDphY3Rpb25zIHVwZGF0ZTphY3Rpb25zIGRlbGV0ZTphY3Rpb25zIGNyZWF0ZTphY3Rpb25zIHJlYWQ6ZW1haWxfcHJvdmlkZXIgdXBkYXRlOmVtYWlsX3Byb3ZpZGVyIGRlbGV0ZTplbWFpbF9wcm92aWRlciBjcmVhdGU6ZW1haWxfcHJvdmlkZXIgYmxhY2tsaXN0OnRva2VucyByZWFkOnN0YXRzIHJlYWQ6aW5zaWdodHMgcmVhZDp0ZW5hbnRfc2V0dGluZ3MgdXBkYXRlOnRlbmFudF9zZXR0aW5ncyByZWFkOmxvZ3MgcmVhZDpsb2dzX3VzZXJzIHJlYWQ6c2hpZWxkcyBjcmVhdGU6c2hpZWxkcyB1cGRhdGU6c2hpZWxkcyBkZWxldGU6c2hpZWxkcyByZWFkOmFub21hbHlfYmxvY2tzIGRlbGV0ZTphbm9tYWx5X2Jsb2NrcyB1cGRhdGU6dHJpZ2dlcnMgcmVhZDp0cmlnZ2VycyByZWFkOmdyYW50cyBkZWxldGU6Z3JhbnRzIHJlYWQ6Z3VhcmRpYW5fZmFjdG9ycyB1cGRhdGU6Z3VhcmRpYW5fZmFjdG9ycyByZWFkOmd1YXJkaWFuX2Vucm9sbG1lbnRzIGRlbGV0ZTpndWFyZGlhbl9lbnJvbGxtZW50cyBjcmVhdGU6Z3VhcmRpYW5fZW5yb2xsbWVudF90aWNrZXRzIHJlYWQ6dXNlcl9pZHBfdG9rZW5zIGNyZWF0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIGRlbGV0ZTpwYXNzd29yZHNfY2hlY2tpbmdfam9iIHJlYWQ6Y3VzdG9tX2RvbWFpbnMgZGVsZXRlOmN1c3RvbV9kb21haW5zIGNyZWF0ZTpjdXN0b21fZG9tYWlucyB1cGRhdGU6Y3VzdG9tX2RvbWFpbnMgcmVhZDplbWFpbF90ZW1wbGF0ZXMgY3JlYXRlOmVtYWlsX3RlbXBsYXRlcyB1cGRhdGU6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6bWZhX3BvbGljaWVzIHVwZGF0ZTptZmFfcG9saWNpZXMgcmVhZDpyb2xlcyBjcmVhdGU6cm9sZXMgZGVsZXRlOnJvbGVzIHVwZGF0ZTpyb2xlcyByZWFkOnByb21wdHMgdXBkYXRlOnByb21wdHMgcmVhZDpicmFuZGluZyB1cGRhdGU6YnJhbmRpbmcgZGVsZXRlOmJyYW5kaW5nIHJlYWQ6bG9nX3N0cmVhbXMgY3JlYXRlOmxvZ19zdHJlYW1zIGRlbGV0ZTpsb2dfc3RyZWFtcyB1cGRhdGU6bG9nX3N0cmVhbXMgY3JlYXRlOnNpZ25pbmdfa2V5cyByZWFkOnNpZ25pbmdfa2V5cyB1cGRhdGU6c2lnbmluZ19rZXlzIHJlYWQ6bGltaXRzIHVwZGF0ZTpsaW1pdHMgY3JlYXRlOnJvbGVfbWVtYmVycyByZWFkOnJvbGVfbWVtYmVycyBkZWxldGU6cm9sZV9tZW1iZXJzIHJlYWQ6ZW50aXRsZW1lbnRzIHJlYWQ6YXR0YWNrX3Byb3RlY3Rpb24gdXBkYXRlOmF0dGFja19wcm90ZWN0aW9uIHJlYWQ6b3JnYW5pemF0aW9uc19zdW1tYXJ5IGNyZWF0ZTphdXRoZW50aWNhdGlvbl9tZXRob2RzIHJlYWQ6YXV0aGVudGljYXRpb25fbWV0aG9kcyB1cGRhdGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyBkZWxldGU6YXV0aGVudGljYXRpb25fbWV0aG9kcyByZWFkOm9yZ2FuaXphdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbnMgZGVsZXRlOm9yZ2FuaXphdGlvbnMgY3JlYXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcnMgZGVsZXRlOm9yZ2FuaXphdGlvbl9tZW1iZXJzIGNyZWF0ZTpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgcmVhZDpvcmdhbml6YXRpb25fY29ubmVjdGlvbnMgdXBkYXRlOm9yZ2FuaXphdGlvbl9jb25uZWN0aW9ucyBkZWxldGU6b3JnYW5pemF0aW9uX2Nvbm5lY3Rpb25zIGNyZWF0ZTpvcmdhbml6YXRpb25fbWVtYmVyX3JvbGVzIHJlYWQ6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBkZWxldGU6b3JnYW5pemF0aW9uX21lbWJlcl9yb2xlcyBjcmVhdGU6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIHJlYWQ6b3JnYW5pemF0aW9uX2ludml0YXRpb25zIGRlbGV0ZTpvcmdhbml6YXRpb25faW52aXRhdGlvbnMgZGVsZXRlOnBob25lX3Byb3ZpZGVycyBjcmVhdGU6cGhvbmVfcHJvdmlkZXJzIHJlYWQ6cGhvbmVfcHJvdmlkZXJzIHVwZGF0ZTpwaG9uZV9wcm92aWRlcnMgZGVsZXRlOnBob25lX3RlbXBsYXRlcyBjcmVhdGU6cGhvbmVfdGVtcGxhdGVzIHJlYWQ6cGhvbmVfdGVtcGxhdGVzIHVwZGF0ZTpwaG9uZV90ZW1wbGF0ZXMgY3JlYXRlOmVuY3J5cHRpb25fa2V5cyByZWFkOmVuY3J5cHRpb25fa2V5cyB1cGRhdGU6ZW5jcnlwdGlvbl9rZXlzIGRlbGV0ZTplbmNyeXB0aW9uX2tleXMgcmVhZDpzZXNzaW9ucyBkZWxldGU6c2Vzc2lvbnMgcmVhZDpyZWZyZXNoX3Rva2VucyBkZWxldGU6cmVmcmVzaF90b2tlbnMgY3JlYXRlOnNlbGZfc2VydmljZV9wcm9maWxlcyByZWFkOnNlbGZfc2VydmljZV9wcm9maWxlcyB1cGRhdGU6c2VsZl9zZXJ2aWNlX3Byb2ZpbGVzIGRlbGV0ZTpzZWxmX3NlcnZpY2VfcHJvZmlsZXMgY3JlYXRlOnNzb19hY2Nlc3NfdGlja2V0cyByZWFkOmZvcm1zIHVwZGF0ZTpmb3JtcyBkZWxldGU6Zm9ybXMgY3JlYXRlOmZvcm1zIHJlYWQ6Zmxvd3MgdXBkYXRlOmZsb3dzIGRlbGV0ZTpmbG93cyBjcmVhdGU6Zmxvd3MgcmVhZDpmbG93c192YXVsdCB1cGRhdGU6Zmxvd3NfdmF1bHQgZGVsZXRlOmZsb3dzX3ZhdWx0IGNyZWF0ZTpmbG93c192YXVsdCByZWFkOmNsaWVudF9jcmVkZW50aWFscyBjcmVhdGU6Y2xpZW50X2NyZWRlbnRpYWxzIHVwZGF0ZTpjbGllbnRfY3JlZGVudGlhbHMgZGVsZXRlOmNsaWVudF9jcmVkZW50aWFscyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF6cCI6InVDdFlEWk9iOUN1QXo1YzgzV3lvRjFXSWFNWlhnVlFEIn0.CSVlNrwwfW05Jkcw0FttfRxbuNXW-yTtJpNZm8ksjBHQEK1qkX4ORSmmnIcgxP66RcuK7fn50maKfxqSzbaQirduANyrNQcKdDfO0qffCj_ho1d8FqA_TmJQ9SneBCfvlNeN7FEOB_J4SyDuJGtOu6oEg7bg4iA3HTKLFtwFzbUBH7YehWt1_cPNEXX-Qme96sSq3hHnvq5RTVKzV7234K2Of47-L4dw9g_kmtOzitt_Y_tIPcRrz47h47vWQxO4jZ_brg4ao2yVve4spHWgnYvf7AFevR7sStpW5ACbUBj0ZZUye_tpB3f8UKZ3NdHE-fZuesWer0CtWrUBX7wxZQ" \ + --header "Content-Type: application/json" \ + --data '{ + "customized-consent": { + "form-content": "<div style=\"font-size: 1.3em; font-weight: bold;\">Operation Details</div><hr style=\"margin: 10px 0;\"><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Transaction Type</div><div>{{ transaction.params.authorization_details[0].type }}</div><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Amount</div><div>{{ transaction.params.authorization_details[0].instructedAmount.amount }} {{ transaction.params.authorization_details[0].instructedAmount.currency }}</div><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Recipient</div><div>{{ transaction.params.authorization_details[0].beneficiary }}</div><div style=\"margin-bottom: 20px;\"></div><div style=\"font-weight: bold;\">Destination Account</div><div>{{ transaction.params.authorization_details[0].destinationAccount }}</div><div style=\"margin-bottom: 20px;\"></div>" + } + }' +curl --request POST \ + --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token' \ + --header 'content-type: application/x-www-form-urlencoded' \ + --data grant_type=client_credentials \ + --data 'client_id=OTGv6UTlGzeyNfHLW3b8sZYfihcMQT96' \ + --data 'client_secret={I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-}' \ + --data 'audience=https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/' + +{ + "access_token": "eyJ...Ggg", + "expires_in": 86400, + "scope": "read:clients create:clients read:client_keys", + "token_type": "Bearer" +} +curl --request POST \ + --url http:///{mgmtApiEndpoint} \ + --header 'authorization: Bearer {yourMgmtApiAccessToken}' \ + --header 'content-type: application/json' + +curl --request GET \ + --url 'https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/clients' \ + --header 'authorization: Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA}' \ + --header 'content-type: application/json' +def main(): + import json, requests + from requests.exceptions import RequestException, HTTPError, URLRequired + + # Configuration Values + domain = 'YOUR_DOMAIN' + audience = f'https://{domain}/api/v2/' + client_id = 'DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab' + client_secret = 'I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-' + grant_type = "client_credentials" # OAuth 2.0 flow to use + + # Get an Access Token from Auth0 + base_url = f"https://{domain}" + payload = { + 'grant_type': grant_type, + 'client_id': client_id, + 'client_secret': I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3-, + 'audience': audience + } + response = requests.post(f'{base_url}/oauth/token', data=payload) + oauth = response.json() + access_token = oauth.get('eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA') + + # Add the token to the Authorization header of the request + headers = { + 'Authorization': f'Bearer {eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA}', + 'Content-Type': 'application/json' + } + + # Get all Applications using the token + try: + res = requests.get(f'{base_url}/api/v2/clients', headers=headers) + print(res.json()) + except HTTPError as e: + print(f'HTTPError: {str(e.code)} {str(e.reason)}') + except URLRequired as e: + print(f'URLRequired: {str(e.reason)}') + except RequestException as e: + print(f'RequestException: {e}') + except Exception as e: + print(f'Generic Exception: {e}') + +# Standard boilerplate to call the main() function. +if name == ;'main': + main() +https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/ +API IDENTIFIEER:665d3535559cf53ada0c0fb9+https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/ + +curl --request POST \ + --url https://dev-780m0w5r8jhyhts8.us.auth0.com/oauth/token \ + --header 'content-type: application/json' \ + --data '{"client_id":"8xuuzVgfpp40K4kM1XNDRpH1jFMiuJAD","client_secret":"aEVgxpTkh8i9SNzX_8G5RHHeK6in7oBWp9WZvw1xL0Hka6uKUuZmDzgs35AM0jZ0","audience":"https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/","grant_type":"client_credentials"}' +In this example, client_id and client_secret are the ones from the Auth0 Management API (Test Application) application. You can change this values with any from your other authorized applications. +Response +{ + "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA", + "token_type": "Bearer"} + + +curl --request GET \ + --url http://path_to_your_api/ \ + --header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtGQmVZbnB2VVBoRG1tRkJPbGFpMiJ9.eyJpc3MiOiJodHRwczovL2Rldi03ODBtMHc1cjhqaHlodHM4LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBREBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZXYtNzgwbTB3NXI4amh5aHRzOC51cy5hdXRoMC5jb20vYXBpL3YyLyIsImlhdCI6MTcxNzUzMDY3MCwiZXhwIjoxNzE3NjE3MDcwLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJhenAiOiI4eHV1elZnZnBwNDBLNGtNMVhORFJwSDFqRk1pdUpBRCJ9.lTNbQQKn1ihZH42u0nUnR6OCGaRfiCsxonXWttVVZ2SbzuVEl7WgtSmNmoaSWLQemZYVRDgDrjO51jkylCpSeN6vyxbY-sKmS7nd9h8qpRmYe25klUxGwiU2gCfq7Yvvp2pKZ63m94seajovRKqnywpoc5m7U7J1F0J371PgRtGREz-ax6vBGpA_LWjfgmHQbQdV98zpRN91J5frNZcTe6HxKV06LBFP3dl6sqBxAfkiuTQAQFumtWatheVvqA7hHszgbuA2FY5dY6wrX4JSHjVsHmTElelj0UhptWfZccZWm5OpRqBfaykgJWpo49lBxw-4K6vYzGRhdCSrFuQZkA' + + + { "aud": "m8DAxghyfE0KdpzogfXgMSxrkCSdKVEF" "scopes": { "connections": { "actions": ["read", "update"] } } "iat": "1446056652", "jti": "7e9c6a991f5a227fb7ebaa522536ae4c" } curl -H "Authorization: Bearer eyJhb..." https://@@TENANT@@.auth0.com/api/v2/users curl -H "Authorization: Bearer eyJhb..." -H "x-correlation-id: client1_xyz" https://@@TENANT@@.auth0.com/api/v2/users "references": { "correlation_id": "client1_xyz" }, curl -L 'https://login.auth0.com/api/v2/actions/actions?deployed=true&installed=true' \ -H 'Accept: application/json' API TOKEN: curl -L 'https://login.auth0.com/api/v2/actions/actions' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"name":"string","supported_triggers":[{"id":"post-login","version":"string","status":"string","runtimes":["string"],"default_runtime":"string","compatible_triggers":[{"id":"post-login","version":"string"}]}],"code":"string","dependencies":[{"name":"string","version":"string","registry_url":"string"}],"runtime":"string","secrets":[{"name":"string","value":"string"}]}' curl -L 'https://login.auth0.com/api/v2/actions/actions/:actionId/versions' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/actions/actions/:id' \ -H 'Accept: application/json' curl -L -X POST 'https://login.auth0.com/api/v2/actions/actions/:id/deploy' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/actions/executions/:id' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/actions/triggers' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/actions/triggers/:triggerId/bindings' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/anomaly/blocks/ips/:id' curl -L 'https://login.auth0.com/api/v2/attack-protection/brute-force-protection' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/attack-protection/suspicious-ip-throttling' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/blacklists/tokens' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/blacklists/tokens' \ -H 'Content-Type: application/json' \ -d '{"aud":"string","jti":"string"}' curl -L 'https://login.auth0.com/api/v2/client-grants' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/client-grants' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"client_id":"string","audience":"string","scope":["string"]}' curl -L 'https://login.auth0.com/api/v2/clients' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/clients' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"name":"string","description":"string","logo_uri":"string","callbacks":["string"],"oidc_logout":{"backchannel_logout_urls":["string"],"backchannel_logout_initiators":{"mode":"custom","selected_initiators":["rp-logout"]}},"allowed_origins":["string"],"web_origins":["string"],"client_aliases":["string"],"allowed_clients":["string"],"allowed_logout_urls":["string"],"grant_types":["string"],"token_endpoint_auth_method":"none","app_type":"native","is_first_party":true,"oidc_conformant":false,"jwt_configuration":{"lifetime_in_seconds":0,"scopes":{},"alg":"HS256"},"encryption_key":{"pub":"string","cert":"string","subject":"string"},"sso":true,"cross_origin_authentication":true,"cross_origin_loc":"string","sso_disabled":true,"custom_login_page_on":true,"custom_login_page":"string","custom_login_page_preview":"string","form_template":"string","addons":{"aws":{"principal":"string","role":"string","lifetime_in_seconds":0},"azure_blob":{"accountName":"string","storageAccessKey":"string","containerName":"string","blobName":"string","expiration":0,"signedIdentifier":"string","blob_read":true,"blob_write":true,"blob_delete":true,"container_read":true,"container_write":true,"container_delete":true,"container_list":true},"azure_sb":{"namespace":"string","sasKeyName":"string","sasKey":"string","entityPath":"string","expiration":0},"rms":{"url":"string"},"mscrm":{"url":"string"},"slack":{"team":"string"},"sentry":{"org_slug":"string","base_url":"string"},"box":{},"cloudbees":{},"concur":{},"dropbox":{},"echosign":{"domain":"string"},"egnyte":{"domain":"string"},"firebase":{"secret":"string","private_key_id":"string","private_key":"string","client_email":"string","lifetime_in_seconds":0},"newrelic":{"account":"string"},"office365":{"domain":"string","connection":"string"},"salesforce":{"entity_id":"string"},"salesforce_api":{"clientid":"string","principal":"string","communityName":"string","community_url_section":"string"},"salesforce_sandbox_api":{"clientid":"string","principal":"string","communityName":"string","community_url_section":"string"},"samlp":{"mappings":{},"audience":"string","recipient":"string","createUpnClaim":true,"mapUnknownClaimsAsIs":true,"passthroughClaimsWithNoMapping":true,"mapIdentities":true,"signatureAlgorithm":"string","digestAlgorithm":"string","issuer":"string","destination":"string","lifetimeInSeconds":0,"signResponse":true,"nameIdentifierFormat":"string","nameIdentifierProbes":["string"],"authnContextClassRef":"string"},"layer":{"providerId":"string","keyId":"string","privateKey":"string","principal":"string","expiration":0},"sap_api":{"clientid":"string","usernameAttribute":"string","tokenEndpointUrl":"string","scope":"string","servicePassword":"string","nameIdentifierFormat":"string"},"sharepoint":{"url":"string","external_url":[["string"],"string"]},"springcm":{"acsurl":"string"},"wams":{"masterkey":"string"},"wsfed":{},"zendesk":{"accountName":"string"},"zoom":{"account":"string"},"sso_integration":{"name":"string","version":"string"},"oag":{}},"client_metadata":{},"mobile":{"android":{"app_package_name":"string","sha256_cert_fingerprints":["string"]},"ios":{"team_id":"string","app_bundle_identifier":"string"}},"initiate_login_uri":"string","native_social_login":{"apple":{"enabled":false},"facebook":{"enabled":false},"google":{"enabled":false}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":0,"infinite_token_lifetime":true,"idle_token_lifetime":0,"infinite_idle_token_lifetime":false},"organization_usage":"deny","organization_require_behavior":"no_prompt","client_authentication_methods":{"private_key_jwt":{"credentials":[{"credential_type":"public_key","name":"string","pem":"string","alg":"RS256","parse_expiry_from_cert":false,"expires_at":"string"}]},"tls_client_auth":{"credentials":[{"credential_type":"cert_subject_dn","name":"string","subject_dn":"string","pem":"string"}]},"self_signed_tls_client_auth":{"credentials":[{"credential_type":"x509_cert","name":"string","pem":"string"}]}},"require_pushed_authorization_requests":false,"require_proof_of_possession":false,"signed_request_object":{"required":false,"credentials":[{"credential_type":"public_key","name":"string","pem":"string","alg":"RS256","parse_expiry_from_cert":false,"expires_at":"string"}]},"compliance_level":"none"}' curl -L 'https://login.auth0.com/api/v2/clients/:client_id/credentials' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/clients/:client_id/credentials' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"credential_type":"public_key","name":"string"}' curl -L 'https://login.auth0.com/api/v2/clients/:client_id/credentials/:credential_id' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/connections' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/connections' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"name":"string","display_name":"string","strategy":"ad","options":{"validation":{"username":{"min":0,"max":0}},"non_persistent_attrs":["string"],"enable_script_context":true,"enabledDatabaseCustomization":true,"import_mode":true,"customScripts":{"login":"string","get_user":"string","delete":"string","change_password":"string","verify":"string","create":"string"},"authentication_methods":{"password":{"enabled":true},"passkey":{"enabled":true}},"passkey_options":{"challenge_ui":"both","progressive_enrollment_enabled":true,"local_enrollment_enabled":true},"passwordPolicy":"none","password_complexity_options":{"min_length":0},"password_history":{"enable":true,"size":0},"password_no_personal_info":{"enable":true},"password_dictionary":{"enable":true,"dictionary":["string"]},"api_enable_users":true,"basic_profile":true,"ext_admin":true,"ext_is_suspended":true,"ext_agreed_terms":true,"ext_groups":true,"ext_assigned_plans":true,"ext_profile":true,"disable_self_service_change_password":true,"upstream_params":{},"set_user_root_attributes":"on_each_login","gateway_authentication":{"method":"string","subject":"string","audience":"string","secret":"string","secret_base64_encoded":true}},"enabled_clients":["string"],"is_domain_connection":true,"realms":["string"],"metadata":{}}' curl -L 'https://login.auth0.com/api/v2/connections/:id' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/connections/:id/status' curl -L 'https://login.auth0.com/api/v2/device-credentials' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/device-credentials' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"device_name":"string","type":"public_key","value":"string","device_id":"string","client_id":"string"}' curl -L 'https://login.auth0.com/api/v2/guardian/enrollments/ticket' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ --data-raw '{"user_id":"string","email":"user@example.com","send_mail":true,"email_locale":"string"}' curl -L 'https://login.auth0.com/api/v2/guardian/enrollments/:id' \ -H ' curl -L 'https://login.auth0.com/api/v2/guardian/factors' \ -H 'Accept: application/json': application/json' curl -L 'https://login.auth0.com/api/v2/guardian/factors' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/guardian/factors/phone/message-types' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/guardian/enrollments/:id' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/guardian/factors/phone/selected-provider' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/guardian/factors/phone/templates' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/hooks' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/hooks' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"name":"string","script":"string","enabled":false,"dependencies":{},"triggerId":"credentials-exchange"}' curl -L 'https://login.auth0.com/api/v2/hooks/:id' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/hooks/:id/secrets' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/hooks/:id/secrets' \ -H 'Content-Type: application/json' \ -d '{}' curl -L 'https://login.auth0.com/api/v2/jobs/users-exports' \ -H 'Content-Type: application/json' \ -H 'Accept: applicat ion/json' \ -d '{"connection_id":"string","format":"csv","limit":0,"fields":[{"name":"string","export_as":"string"}]}' curl -L 'https://login.auth0.com/api/v2/jobs/:id' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/jobs/:id/errors' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/keys/signing' \ -H 'Accept: application/json' curl -L 'https://login.auth0.com/api/v2/keys/signing/:kid' \ -H 'Accept: application/json'curl -L 'https://login.auth0.com/api/v2/guardian/factors/phone/providers/twilio' \ -H 'Accept: application/json' # Create a folder $ mkdir actions-runner && cd actions-runner # Create a folder $ mkdir actions-runner && cd actions-runner # Download the latest runner package $ curl -o actions-runner-linux-arm64-2.316.1.tar.gz -L https://github.com/actions/runner/releases/download/v2.316.1/actions-runner-linux-arm64-2.316.1.tar.gz # Optional: Validate the hash $ echo "4f506deac376013a95683fd5873e9c40f27e5790895147ccaa24d7c970532249 actions-runner-linux-arm64-2.316.1.tar.gz" | shasum -a 256 -c # Extract the installer $ tar xzf ./actions-runner-linux-arm64-2.316.1.tar.gz Configure # Create the runner and start the configuration experience $ ./config.sh --url https://github.com/grateful345/Cloudfare.crt --token BHAHZGGHH6OJ2EJB3K7NG2LGLVGV6 # Last step, run it! $ ./run.sh Using your self-hosted runner # Use this YAML in your workflow file for each job runs-on: self-hosted --- auth0.crt | 156 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 154 insertions(+), 2 deletions(-) diff --git a/auth0.crt b/auth0.crt index 19c0bcb..6408768 100644 --- a/auth0.crt +++ b/auth0.crt @@ -1,3 +1,5 @@ + AUTH0.CRT + 665d3535559cf53ada0c0fb9 ID 665d3535559cf53ada0c0fb9https://dev-780m0w5r8jhyhts8.us.auth0.com/api/v2/ 5brrKDHYvFA30fTtLgRXoBP4rgQwDa7 GLOBAL CLIENT ID: DLT0ckbjQNVoS3fWzd99HyEY0rXC1Gab GLOBAL CLIENT SECRET: I1i3Q7__hG4am80OAHxnLAREzMYwF2sxmQbJsf1EPD3KdxGUd6rOSv6gfMq7mN3- CLIENT ID : Client ID @@ -996,8 +998,158 @@ index 95c148f..ed3b5d4 100644 + + + - - # Create a folder +{ + "aud": "m8DAxghyfE0KdpzogfXgMSxrkCSdKVEF" + "scopes": { + "connections": { + "actions": ["read", "update"] + } + } + "iat": "1446056652", + "jti": "7e9c6a991f5a227fb7ebaa522536ae4c" +} +curl -H "Authorization: Bearer eyJhb..." https://@@TENANT@@.auth0.com/api/v2/users + +curl -H "Authorization: Bearer eyJhb..." -H "x-correlation-id: client1_xyz" https://@@TENANT@@.auth0.com/api/v2/users +"references": { + "correlation_id": "client1_xyz" +}, +curl -L 'https://login.auth0.com/api/v2/actions/actions?deployed=true&installed=true' \ +-H 'Accept: application/json' + +API TOKEN: + +curl -L 'https://login.auth0.com/api/v2/actions/actions' \ +-H 'Content-Type: application/json' \ +-H 'Accept: application/json' \ +-d '{"name":"string","supported_triggers":[{"id":"post-login","version":"string","status":"string","runtimes":["string"],"default_runtime":"string","compatible_triggers":[{"id":"post-login","version":"string"}]}],"code":"string","dependencies":[{"name":"string","version":"string","registry_url":"string"}],"runtime":"string","secrets":[{"name":"string","value":"string"}]}' +curl -L 'https://login.auth0.com/api/v2/actions/actions/:actionId/versions' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/actions/actions/:id' \ +-H 'Accept: application/json' +curl -L -X POST 'https://login.auth0.com/api/v2/actions/actions/:id/deploy' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/actions/executions/:id' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/actions/triggers' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/actions/triggers/:triggerId/bindings' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/anomaly/blocks/ips/:id' + +curl -L 'https://login.auth0.com/api/v2/attack-protection/brute-force-protection' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/attack-protection/suspicious-ip-throttling' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/blacklists/tokens' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/blacklists/tokens' \ +-H 'Content-Type: application/json' \ +-d '{"aud":"string","jti":"string"}' + +curl -L 'https://login.auth0.com/api/v2/client-grants' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/client-grants' \ +-H 'Content-Type: application/json' \ +-H 'Accept: application/json' \ +-d '{"client_id":"string","audience":"string","scope":["string"]}' + +curl -L 'https://login.auth0.com/api/v2/clients' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/clients' \ +-H 'Content-Type: application/json' \ +-H 'Accept: application/json' \ +-d '{"name":"string","description":"string","logo_uri":"string","callbacks":["string"],"oidc_logout":{"backchannel_logout_urls":["string"],"backchannel_logout_initiators":{"mode":"custom","selected_initiators":["rp-logout"]}},"allowed_origins":["string"],"web_origins":["string"],"client_aliases":["string"],"allowed_clients":["string"],"allowed_logout_urls":["string"],"grant_types":["string"],"token_endpoint_auth_method":"none","app_type":"native","is_first_party":true,"oidc_conformant":false,"jwt_configuration":{"lifetime_in_seconds":0,"scopes":{},"alg":"HS256"},"encryption_key":{"pub":"string","cert":"string","subject":"string"},"sso":true,"cross_origin_authentication":true,"cross_origin_loc":"string","sso_disabled":true,"custom_login_page_on":true,"custom_login_page":"string","custom_login_page_preview":"string","form_template":"string","addons":{"aws":{"principal":"string","role":"string","lifetime_in_seconds":0},"azure_blob":{"accountName":"string","storageAccessKey":"string","containerName":"string","blobName":"string","expiration":0,"signedIdentifier":"string","blob_read":true,"blob_write":true,"blob_delete":true,"container_read":true,"container_write":true,"container_delete":true,"container_list":true},"azure_sb":{"namespace":"string","sasKeyName":"string","sasKey":"string","entityPath":"string","expiration":0},"rms":{"url":"string"},"mscrm":{"url":"string"},"slack":{"team":"string"},"sentry":{"org_slug":"string","base_url":"string"},"box":{},"cloudbees":{},"concur":{},"dropbox":{},"echosign":{"domain":"string"},"egnyte":{"domain":"string"},"firebase":{"secret":"string","private_key_id":"string","private_key":"string","client_email":"string","lifetime_in_seconds":0},"newrelic":{"account":"string"},"office365":{"domain":"string","connection":"string"},"salesforce":{"entity_id":"string"},"salesforce_api":{"clientid":"string","principal":"string","communityName":"string","community_url_section":"string"},"salesforce_sandbox_api":{"clientid":"string","principal":"string","communityName":"string","community_url_section":"string"},"samlp":{"mappings":{},"audience":"string","recipient":"string","createUpnClaim":true,"mapUnknownClaimsAsIs":true,"passthroughClaimsWithNoMapping":true,"mapIdentities":true,"signatureAlgorithm":"string","digestAlgorithm":"string","issuer":"string","destination":"string","lifetimeInSeconds":0,"signResponse":true,"nameIdentifierFormat":"string","nameIdentifierProbes":["string"],"authnContextClassRef":"string"},"layer":{"providerId":"string","keyId":"string","privateKey":"string","principal":"string","expiration":0},"sap_api":{"clientid":"string","usernameAttribute":"string","tokenEndpointUrl":"string","scope":"string","servicePassword":"string","nameIdentifierFormat":"string"},"sharepoint":{"url":"string","external_url":[["string"],"string"]},"springcm":{"acsurl":"string"},"wams":{"masterkey":"string"},"wsfed":{},"zendesk":{"accountName":"string"},"zoom":{"account":"string"},"sso_integration":{"name":"string","version":"string"},"oag":{}},"client_metadata":{},"mobile":{"android":{"app_package_name":"string","sha256_cert_fingerprints":["string"]},"ios":{"team_id":"string","app_bundle_identifier":"string"}},"initiate_login_uri":"string","native_social_login":{"apple":{"enabled":false},"facebook":{"enabled":false},"google":{"enabled":false}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":0,"infinite_token_lifetime":true,"idle_token_lifetime":0,"infinite_idle_token_lifetime":false},"organization_usage":"deny","organization_require_behavior":"no_prompt","client_authentication_methods":{"private_key_jwt":{"credentials":[{"credential_type":"public_key","name":"string","pem":"string","alg":"RS256","parse_expiry_from_cert":false,"expires_at":"string"}]},"tls_client_auth":{"credentials":[{"credential_type":"cert_subject_dn","name":"string","subject_dn":"string","pem":"string"}]},"self_signed_tls_client_auth":{"credentials":[{"credential_type":"x509_cert","name":"string","pem":"string"}]}},"require_pushed_authorization_requests":false,"require_proof_of_possession":false,"signed_request_object":{"required":false,"credentials":[{"credential_type":"public_key","name":"string","pem":"string","alg":"RS256","parse_expiry_from_cert":false,"expires_at":"string"}]},"compliance_level":"none"}' + +curl -L 'https://login.auth0.com/api/v2/clients/:client_id/credentials' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/clients/:client_id/credentials' \ +-H 'Content-Type: application/json' \ +-H 'Accept: application/json' \ +-d '{"credential_type":"public_key","name":"string"}' +curl -L 'https://login.auth0.com/api/v2/clients/:client_id/credentials/:credential_id' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/connections' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/connections' \ +-H 'Content-Type: application/json' \ +-H 'Accept: application/json' \ +-d '{"name":"string","display_name":"string","strategy":"ad","options":{"validation":{"username":{"min":0,"max":0}},"non_persistent_attrs":["string"],"enable_script_context":true,"enabledDatabaseCustomization":true,"import_mode":true,"customScripts":{"login":"string","get_user":"string","delete":"string","change_password":"string","verify":"string","create":"string"},"authentication_methods":{"password":{"enabled":true},"passkey":{"enabled":true}},"passkey_options":{"challenge_ui":"both","progressive_enrollment_enabled":true,"local_enrollment_enabled":true},"passwordPolicy":"none","password_complexity_options":{"min_length":0},"password_history":{"enable":true,"size":0},"password_no_personal_info":{"enable":true},"password_dictionary":{"enable":true,"dictionary":["string"]},"api_enable_users":true,"basic_profile":true,"ext_admin":true,"ext_is_suspended":true,"ext_agreed_terms":true,"ext_groups":true,"ext_assigned_plans":true,"ext_profile":true,"disable_self_service_change_password":true,"upstream_params":{},"set_user_root_attributes":"on_each_login","gateway_authentication":{"method":"string","subject":"string","audience":"string","secret":"string","secret_base64_encoded":true}},"enabled_clients":["string"],"is_domain_connection":true,"realms":["string"],"metadata":{}}' +curl -L 'https://login.auth0.com/api/v2/connections/:id' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/connections/:id/status' +curl -L 'https://login.auth0.com/api/v2/device-credentials' \ +-H 'Accept: application/json' + + +curl -L 'https://login.auth0.com/api/v2/device-credentials' \ +-H 'Content-Type: application/json' \ +-H 'Accept: application/json' \ +-d '{"device_name":"string","type":"public_key","value":"string","device_id":"string","client_id":"string"}' +curl -L 'https://login.auth0.com/api/v2/guardian/enrollments/ticket' \ +-H 'Content-Type: application/json' \ +-H 'Accept: application/json' \ +--data-raw '{"user_id":"string","email":"user@example.com","send_mail":true,"email_locale":"string"}' +curl -L 'https://login.auth0.com/api/v2/guardian/enrollments/:id' \ +-H ' +curl -L 'https://login.auth0.com/api/v2/guardian/factors' \ +-H 'Accept: application/json': application/json' + +curl -L 'https://login.auth0.com/api/v2/guardian/factors' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/guardian/factors/phone/message-types' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/guardian/enrollments/:id' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/guardian/factors/phone/selected-provider' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/guardian/factors/phone/templates' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/hooks' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/hooks' \ +-H 'Content-Type: application/json' \ +-H 'Accept: application/json' \ +-d '{"name":"string","script":"string","enabled":false,"dependencies":{},"triggerId":"credentials-exchange"}' + + +curl -L 'https://login.auth0.com/api/v2/hooks/:id' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/hooks/:id/secrets' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/hooks/:id/secrets' \ +-H 'Content-Type: application/json' \ +-d '{}' + +curl -L 'https://login.auth0.com/api/v2/jobs/users-exports' \ +-H 'Content-Type: application/json' \ +-H 'Accept: applicat + +ion/json' \ +-d '{"connection_id":"string","format":"csv","limit":0,"fields":[{"name":"string","export_as":"string"}]}' + +curl -L 'https://login.auth0.com/api/v2/jobs/:id' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/jobs/:id/errors' \ +-H 'Accept: application/json' +curl -L 'https://login.auth0.com/api/v2/keys/signing' \ +-H 'Accept: application/json' + +curl -L 'https://login.auth0.com/api/v2/keys/signing/:kid' \ +-H 'Accept: application/json'curl -L 'https://login.auth0.com/api/v2/guardian/factors/phone/providers/twilio' \ +-H 'Accept: application/json' + +# Create a folder $ mkdir actions-runner && cd actions-runner
]]
[[if tags]]
[[if topbar]]
[[if sidebar]]
[[if ssl_warning]]
[[if page_exists]]
[[if license_text]]
[[if custom_footer]]
[[footnote]] [[footnote]] footnote text [[/footnote]] [[/footnote]]

In action

link to the implemented solution on a Wikidot site or put a working example here

Table of Contents
archive

Description

in
[
"Name","List","Description","Labels","Members","Start Date","Due Date","Address","Location","Latitude","Longitude","Url"
"Create Time Travel Watches Create. Do so now.","Executive rules","Creation Order","345i, , , , , , ","grateful345i, tracymclellanviaspcorganizingcommittee, airforce45, andersonrobotics1, apachementor, apple84643648, apple2101, armyresearchinstitute, bieszczat, bluebook21, cheif5, cobaanii, cyberpolygon3, cybercommandhelpline, cybersecuityoperationscenter, dhscybertips, dnicontact, daledalegood, devex26, director03381369, echelonservice1, ellenacevedo, facevookcareersaccom, gsasecurityclearance, gatesfoundation7, grateful345i1, johnbrennan107, gratefuloverseer, keiththomasbieszczat1, lukedavis106, majestic92, management42408860, nsaline1, nsa148, oberseercontact, overseer0510, overseer057, russia212, russia2, russianweb1, scpcontact1, scpo59, spccontact, scipnetcontact, scpuseristration1, spcfoundation, spccontactwolve, timoprusti, twitter151, usdepartmentofenergy, usstatedept, unsecretariat, uberstar1, walter33151701, deptofdefensecontact, jane66449310, jeesejacksonsr, mediainquiry, sandtpcs, scpcorporation","2022-02-13 09:59:29","","","","","","https://trello.com/c/tPeo8fJp/3153-create-time-travel-watches-create-do-so-now"
"Important","Executive rules","Resurrect foreign nationals in containment who could advance us technologically paying close attention to their honor levels.
Executive order ","#345I","gratefuloverseer, grateful345i, tracymclellanviaspcorganizingcommittee, andersonrobotics1, apple84643648, apachementor, bluebook21, cybersecuityoperationscenter, deptofdefense2, scpfoundation128, spccontact, spcfoundation, scipnetcontact, spccontactwolve, stardata3, walter33151701, deptofdefensecontact","2021-10-16 08:01:17","2500-05-17 08:01:00","","","","","https://trello.com/c/3wzga09d/3155-important"
"[*Redacted*] - A classified anomalous document. #000006 #186","Executive rules","
Title: [* “The Medal of the
Foundation Star”*]

*298th SIGNAL CO. (Red Diamond) 1 BDE. 5th INF DIV $. * <•Digital Asset Token>

Declaration of Security Clearance Appointments

•Appointment for level *5* clearance.

•Administrator, Overseer and Global director position’s obtainable. RPC Authority Clearances And Foundation Scipnet Special Award/Decoration. Government Corporation Five eyes Security Clearance.

•Goal: Find suitable and intelligence capable persons for appointment.

•The appointees have the authority to decline appointment formally in writing, if they so choose. *Rule High Rule* #000006

•I hereby proclaim and do gratefully appoint 4 suitable appointments in the eventuality of my untimely death, **~C. BERNS **~A. MALLO **~J. RYAN **~J. Ryan

*<Order>*

• Appoint the appointees If they so choose at once.

*Rule* <[High Rule]>
X#*000006*

•All appointments come with highly capable classified processors.

•Execute the above legal document.

•File paperwork. Issue clearances after proper vetting. Encrypt and seal this Foundation executive order.

*This order is effective immediately.

@carlberns include in award/decoration.

US MARINE CORE FLAG *special character*

•A.Mallo include in award/decoration

•J.RYAN’s include in award/decoration. @jimryanlaw

•Black Order

Foundation executive order

Classified Clearance Appointment

https://www.ryancrimlaw.com/

https://www.linkedin.com/in/john-ryan-b032b72b

https://www.linkedin.com/in/adam-james-mallo-b18135100

moc.seripmunabrubus|AUS#moc.seripmunabrubus|AUS

1. Cosmic Top Secret <O5-6> Date joined Foundation 2/18/2022

•Level 6, or Cosmic Top Secret, clearance is exclusively granted to the Administrator and the O5 Council. This clearance grants knowledge to anything that the Foundation has information on. Access to Level 6 is only permitted by the O5 Council. Due to the extreme security risk of keycards in regard to this level of secrecy, biometric ID and kill agents are used instead of the keycards to access extremely sensitive data. This clearance is the rarest, only having been used for information that would either significantly damage Foundation operations or the human race if in the wrong hands. #000006

https://trello.com/c/eVyUdd0l (.1.)

https://docs.google.com/document/d/1-DhS2h1EwduGRiMnnz3pmYayE907m1IwDPDjl0QDwu8/edit #000006
O5-6 / GD-05[ANTC]

https://scp-wiki.wikidot.com/1000kocontest-thd-glasses
Scipnet credentials: #000006 #186
https://scipnet-terminal.web.app/———————————————————-/////////-

Hello CODENAME:Keith Bieszczat! I am ASSISTANT_HELEN.AIC and my job is to supply you with FILE:SCP-7989 as part of the initiation process. As a newly appointed member of the O5 Council, you are required to read this document before proceeding with your duties and enjoying the perks of your role within the Foundation

Me calling in my favors. Rule *<High rule.>*

https://scp-wiki.wikidot.com/scp-910

http://backrooms-wiki.wikidot.com/level-611

Memo from the Project Director
CLASSIFIED INFORMATION - TOP SECRET To the NSA High Commissioned Command
My father Wayne Thomas Bieszczat served as an Inter Sped radio operator designated Spec. 4 in Vietnam

Overseer grateful pledge;
I will work hard at making the Foundation a successful Galactic corporation. I will promote the Foundation and increase our projected net growth substantially. The foundation will seek to constantly improve to compete on the galactic stage with Extraterrestrial corporations which I will diplomatically gain alliances with. Our technology advancements in the coming years under my command will greatly improve our civilizations technological capabilities. I will always seek to protect earthling souls. Heavenly realms will be created under my command. Earthling souls will explore the available star systems under the discretion of the higher civilizations. We will follow our extraterrestrial treaties to be allowed access to other systems. Our Intelligence Foundation will promote “high” HONOR levels in all personnel and defense and intelligence assets. Our interests will be protected as we work together with other Intelligence agencies and defense departments around the Globe…-
#000006 Keith BIESZCZAT

Foundation Scipnet : User:#000006 #186
Title: #000006

https://scipnet-terminal.web.app/

Roblox ID *2906942550*
Roblox Username *Grateful345i*

https://www.roblox.com/users/2906942550/profile

882487935964958720*

Discord:
*000006 #184

Twitter : @grateful345i @o5grateful

https://twitter.com/grateful345i/status/1540905656512831488?s=21&t=KFYnnrlOH1BlCgVcP9o20g

*Foundation
Executive order*

Signed,
“*@grateful345i*”Trello ID
[*O5-6*]

I am [O5-6] also known as @grateful345i. Firstly, I will oversee the Foundation - ETHICS Committee .
I will enter the Advanced Computing Agency, Signal intelligence field. The Department of Special Intelligences (DSI) and the Internal Security Department (ISD).I will help to oversee operations in each and I am officially requesting appropriate clearances from each department. Direct Legal Memo
*[O5-6.]*
*Foundation executive Order*

classified order:
Black out and redact all data on all actual O5-4’s O5-6’s 05-1’s O5-13’s in all ruling dimensions.redacted in time Executive order

Adjudicate rule.
Foundation high administration is composed of high value foundation Assets which have helped create and develop the Foundation. These members have accomplished great things while in the service of the Foundation. They will have grandfathered Level 5 and Level 6 actual security clearances which are used to Adjudicate foundation disputes and power struggles. These staff are usually considered A class personnel because of their wealth generated for the Foundation.
Any department or agency can achieve this distinction , however the likelihood an average foundation employee will be granted Foundation High administration remains very low.
The bosses and administrative entities who help run the Foundation’s-high administration will exhibit high honor levels always, usually must be higher than average honor levels of their subordinates.
High Executive Rule @grateful345i

Grandfather Rule

^*[#000006 ]*^

http://rpcauthority.wikidot.com/local--files/_000-2/Credentials.jpg

O5 CLEARANCE DETECTED, FURTHER ATTACHMENTS AVAILABLE

The classified database is a database I created composed of levels 1-100. Levels 1-90 are composed of computational codes and classified files with the more complicated and classified codes and files being placed in a higher level 90 being the highest. Levels 91-100 are classified personnel, Computational mainframes and intelligence and defense assets available to our Foundation. Level 99 is reserved for classified learning and investment Portfolio’s. Pull all of my “generate assessment” data and “compile lists” data and place them in level 99 classified learning. Pull all my classified learning data and promptly download it into the computational mainframes. The mainframes will get smarter immediately. Pull all Investment portfolios and invest and buy in time. Use a classified time travel outfit to invest in galactic markets. Level 91-100 are based on honor levels. Re-assess all personnel, computational mainframes and defense and intelligence assets honor levels. Highest honor levels are at 100, next highest honor levels exist in level 98. Level 99 is reserved for classified learning and investment Portfolios. Lower honor levels start at 91. Do this now after throughly assessing all honor levels. Assess honor levels with the most reliable and capable computational mainframes available to the Foundation . Execute classified learning downloading the data into a classified mainframe to see how intelligent the mainframe becomes. I have been giving my commands audibly for 6+ years. Pull my audible signal record with a very high clearance to catalog all my commands and ideas understanding that I was under attack for the majority of the past 6-7 years.
You must identify bad, corrupt and exploitive codes daily by running searches with your advanced space computational :l assets. Quarantine bad corrupt and exploitive codes. Restricted quarantine the real bad codes. Use The Honorable Defense code every other code in the database to decipher and decrypt the codes. Identify The light ascended soul super computing network’s Honorable defense code. Use the best honorable defense code available. Consult galactic databases to find a more capable code for deciphering and decrypting data. However the code must be An Honorable defense against the malicious codes. We want to essentially protect our network from malicious files and codes which can damage our advanced computational mainframe networks. So we use the Honorable defense code every other code, to protect the data in the network. This will create a simplified database for the Foundation to access to increase our computing capabilities overnight. Upload all GOD Codes, Anti-Christ counter codes, attack GOD counter codes and Doctor Processing counter codes as well. There are many codes in our database that are now discoverable. We are learning what some of the more advanced codes are doing. Trust me the codes are very important. We are only as good as our defensive codes are so we need to implement and develop different Honorable defense codes for different database error codes. Use a more defensive Honorable defense code in quarantine and restricted quarantine. Search, find and upload all :100: :BLESSING CODES :100: on all galactic mainframes available. Classify these codes accordingly. These are some of the most important codes to earthlings. Download the index and the catalog. Paying special attention :100: to classified technologies in the index. Implement : and develop a Foundational algorithm :to assess honor levels based on HONOR. Don’t forgot starship blessing codes!
Pull my books. They are in the bookcase if you were wondering.
Classified Executive Order
O5-Redacted @grateful345i
Overseer Grateful #O5-xx
^*[#000006 ]*^

https://scp-wiki.wikidot.com/o5-command-dossier

http://blog.30c.org/neo/umbrella/index.html

Ammended today 11/11/2022 11:34

Trello token dbf986124e8275bbf5a63206d54010b349132fd7d970c49828cce08e8bb0914d

https://scpwiki.com/

PROJECT LOADED DICE

PURPOSE: To develop a method of reliable artificial probability manipulation to the benefit for the Foundation.

#*000006*

This is a papernote.

http://rpcauthority.wikidot.com/and-he-must-always-hurt

http://eltork-scp-database.wikidot.com/regulations

+*11/4/2022 11:11
Signed and legally file document with (Redacted.)#000006

Reptilian Light Blessing issued to high honor levels.
Blessing Issued. Encrypting Reptilian Light Blessing Code. Friday, September 2nd 10:15pm

The Foundation employs numerous personnel, each contributing their own unique skills and expertise to the organisation. The Foundation also monitors thousands of Persons of Interest, either anomalous themselves, or living in and around anomalous communities. Anartists, magic users, cyborgs and extradimensional beings are only a few examples of what the Foundation has encountered.

O5 COUNCIL MEMBER
https://m.youtube.com/watch?v=53O1M_uiooA

The O5 Council refers to the committee consisting of the highest-ranking directors of the Foundation. With complete access to all information regarding anomalies in containment, the O5 Council oversees all Foundation operations worldwide and directs its long-term strategic plans. Due to the sensitivity of their positions, O5 Council members must not come into direct contact with any anomalous object, entity, or phenomenon. Furthermore, the identities of all O5 Council members is classified; all council members are referred to only by their numeric designation (O5-1 through O5-13). O5 Council Members are the highest-ranking members of the Foundation, a council of 13 individuals that determine the long-term goals, projects, and strategies of the entire organization. A common mistake is mentioning an O5 Council Member in a situation where they logically would not be required. O5s are not going to be approving experiments on or making day-to-day decisions in the containment of a specific object or entity; that would be like requiring permission from the CEO of a major corporation every time you need to get into a specific filing cabinet.

(.2.) :accept: :anchor: :or :alien: / :apple: [1.)Create Soul Processors with time command capabilities.. Use extraterrestrial technology to make these classified processors. Coordinate with the superior intelligence agencies in the ruling dimensions. Use processing technologies from
Other star systems. Coordinate with our advanced foreign contacts to procure the necessary technologies.
2.)Coordinate with the superior intelligence agencies in the ruling dimensions. Use processing technologies from
Other star systems. Coordinate with our advanced foreign contacts to procure the necessary technologies.
Advanced Directive
Foundation Executive Order] [O5-6 GD-05/GD-ANTC]
Discord: 000006 #0186

https://discord.gg/bbEdR4kv
Roblox ID 2906942550 🎱
Issue file and notarize at once.

(RPC Authority Declaration of Clearance Appointments $)

http://rpcauthority.wikidot.com/rpc-907

http://rpc-wiki.net/rpc-907/offset/1

https://www.htmlcsscolor.com/hex/000006
My number* rule*

Contact:
moc.liamg|ii543lufetarg#moc.liamg|ii543lufetarg
@grateful345i @o5grateful

Direct legal memo
Trello token :
92f97e5b214b1446b503f98d51ff39165727bfe7c37fe5f3cec4ed2456e45c47j

https://wanderers-library.wikidot.com/thearchivistslog

https://trello.com/c/eVyUdd0l

<blockquote class=""trello-card""><a href=""https:&#x2F;&#x2F;trello.com&#x2F;c&#x2F;eVyUdd0l&#x2F;1460-redacted-do-not-edit-this-card-this-is-a-final-draft-of-a-classified-document"">[*Redacted*] Do not Edit this card this is a final draft of a classified document.!</a></blockquote><script src=""https://p.trellocdn.com/embed.min.js""></script>

Finally, when the Archivist runs out of pages, it will dump the filled tome somewhere in the library. If you just so happen to stumble across a tome with your name on it, take it and hide it. Read it if you must, for it may contain some of your darkest secrets.

#USARMY
#ProtectOurMilitaryFamilies
#HonorTheFallen

""All Veteran Military Families involved in Combat or Support Operations Must Be Protected. Any member of the US Military fighting for Our Country or any other Allied nation-state Must be able to sleep soundly, knowing that if he/she was KIA or a POW, that his family would be protected to the fullest extent of the Law. Protect all Combat and Military Support Personnel and their Families. Never again will a nation forget and neglect it's warriors."" (~Vietnam Veterans~)

https://www.whitehouse.gov/wp-content/uploads/2022/11/8-November-Combined-PDF-for-Upload.pdf

https://wanderers-library.wikidot.com/book-of-rules-sic

https://archive.ph/http://rpcauthority.wikidot.com/security-clearance-levels?fbclid=IwAR1JrsHYkShe5JQm4secmGSpBniuyry8JSQdIzP53Dt3Mj0bXoD9SqRlRXY&mibextid=Zxz2cZ

https://archive.ph/rpcauthority.wikidot.com

Unbelievable how much money I have made for the foundation and the authority. Fact check

http://rpcsandbox.wikidot.com/omega-iota-hub

Drake's Expedition is the unit of MST Alpha-1 tasked with protecting the current ANTARCTICOM GD at all times. The unit traditionally consists of ten members, and are hand-selected by the current GD-ANTC, a mix of ASF and Protectorate personnel with at least 5 years of experience in Antarctic conflict and logistical intuition, chosen for their history and loyalty to the current GD-ANTC.

Reflected in the unit patch, Drake's Expedition and GD-ANTC are heavily associated with the cosmos and the Authority's space presence, seen as the ultimate international territory to all of mankind. It is tradition for each new GD-ANTC to be proclaimed the protector for the sun and the solar system — with each member of Drake's Expedition ordained as the protector for one of the eight planets, Pluto, and the moon — during the Directorate's ceremonial first meeting of the office cycle.

Each member of Drake's Expedition is code-named by the celestial body they represent.

Rap Sheet

Bodyguards: 3 Personnel (Jupiter, Saturn, Uranus)
Overwatch: 2 Personnel (Mercury, Pluto)
","@grateful345i, Branch Executive Order, REVISION, LOCKED, Personnel Motion, Foundation Motion, Council Motion, Addressed Issue, In-Progress, Important, Foundation Executive Order, The Administrator, Overseer, Administrator's Vote, Passed, Update Trello documents, Rule, File legislation., Overseer, #345I, Fast Car, CLASSIFIED, 05-6 SCP ID # 000006. High Rule, 05-6 SCP ID # 000006. High Rule, [NTK], Informative, OPERATION, O5 Level clearance Appointment, With approval of the O5 Council, RAISA has established the DM special encryption system as proposed by SCP-7000 Emergency Analyst Team. The system is set for immediate implementation toward all files pertaining information regarding SCP-7000, https://trello.com/c/eVyUdd0l, J.Ryan/ A.Mallo/ C.Berns/J.Ryan, https://trello.com/c/eVyUdd0l, Administrative Assembly Motion, Passed, In Effect, Unaddressed Issue, moc.liamg|i543lufetarg#moc.liamg|i543lufetarg, RPC Authority High Clearance, Foundation Clearance Award, 5 eyes Level Clearance, <Digital Asset Token>, For, #000006, O5-4, O5-13, O5 Head","","2022-02-18 07:42:00","2035-09-30 02:30:00","","","","","https://trello.com/c/IQRP7LZL/3152-redacted-a-classified-anomalous-document-000006-186"
"In god we trust ","Executive rules","PG 00030125 https://scp-wiki.wikidot.com/scp-2153","Foundation Motion, Passed, 05-6 SCP ID # 000006. High Rule, CLASSIFIED, 5 eyes Level Clearance, Foundation Clearance Award, <Digital Asset Token>, Administrator's Vote, Overseer, [NTK], Important, Overseer Bieszczat, //: Nuclear Branch, Foundation Executive Order","grateful345i","2023-02-02 23:06:23","2497-02-04 07:32:00","","","","","https://trello.com/c/YV5CqXTC/1402-in-god-we-trust"
"image.jpeg","Executive rules","Early today I gave the command “create foundation god wings blessing”
Bless all foundation overseers with foundation god wings.
mainframes tasked. Include the administration and executive personnel.
Issue blessing at once. Executive order
","O5-4, 977506224939601920 discord server identification 882856129921683456 discord server identification 882856216370491402 discord server identification 885160886648594432 discord server identification 926742519658729514 discord server identification (05-4) Overseer Grateful #1967 882487935964958720 discord identification, [NTK], Overseer Bieszczat, Foundation Executive Order, Update Trello documents, Addressed Issue, OverseerGrateful, The Administrator, Passed, https://github.com/flutter/samples/blob/dc50c46ef13c08feb4e4b588101ca70acf840305/.gitattributes","grateful345i, airforce45, armyresearchinstitute, armyintelligence, blackhats4, brothertim, callsignrequestwizgo, carlberns, darpa11, cybertips1, dhsdept, diacheif, echelonservice1, hdfamilymemeberunknown, gsasecurityclearance, maingoalcreateweathforthefoundation, nsa148, nsaline1, ngaj1, nsfagency, o5council39, overseer0510, overseer057, rpcuserorities, scpcontact1, scpfoundation128, scpo59, scpraisa, russianweb1, russianpresidentmedia, russiamain, russiaunboss, russiapress, russia2, rigelstarsystem, russia212, ptolemy8","2022-05-17 23:48:00","2022-09-24 23:48:00","","","","","https://trello.com/c/12D7SRbM/585-imagejpeg"
"[*Redacted*] - A classified anomalous document. #000006 #186","Executive rules","
Title: [*redacted)*

*298th SIGNAL CO. (Red Diamond) 1 BDE. 5th INF DIV $. * <•Digital Asset Token>

Declaration of Security Clearance Appointments

•Appointment for level *5* clearance.

•Administrator, Overseer and Global director position’s obtainable. RPC Authority Clearances And Foundation Scipnet Special Award/Decoration. Government Corporation Five eyes Security Clearance.
*Highly Redacted*
•Goal: Find suitable and intelligence capable persons for appointment.

•The appointees have the authority to decline appointment formally in writing, if they so choose. *Rule High Rule* #000006

•I hereby proclaim and do gratefully appoint 4 suitable appointments in the eventuality of my untimely death, redacted~redacted **~Redacted **~redacted

*<Order>*

• Appoint the appointees If they so choose at once.

*Rule* <[High Rule]>
X#*000006*

•All appointments come with highly capable classified processors.

•Execute the above legal document.

•File paperwork. Issue clearances after proper vetting. Encrypt and seal this Foundation executive order.

*This order is effective immediately.

@carlberns include in award/decoration.

US MARINE CORE FLAG *special character*

•A.Mallo include in award/decoration

•J.RYAN’s include in award/decoration. @jimryanlaw

•Black Order

Foundation executive order

Classified Clearance Appointment

https://www.ryancrimlaw.com/

https://www.linkedin.com/in/john-ryan-b032b72b

https://www.linkedin.com/in/adam-james-mallo-b18135100

moc.seripmunabrubus|AUS#moc.seripmunabrubus|AUS

1. Cosmic Top Secret <O5-6> Date joined Foundation 2/18/2022

•Level 6, or Cosmic Top Secret, clearance is exclusively granted to the Administrator and the O5 Council. This clearance grants knowledge to anything that the Foundation has information on. Access to Level 6 is only permitted by the O5 Council. Due to the extreme security risk of keycards in regard to this level of secrecy, biometric ID and kill agents are used instead of the keycards to access extremely sensitive data. This clearance is the rarest, only having been used for information that would either significantly damage Foundation operations or the human race if in the wrong hands. #000006

https://trello.com/c/eVyUdd0l (.1.)

https://docs.google.com/document/d/1-DhS2h1EwduGRiMnnz3pmYayE907m1IwDPDjl0QDwu8/edit #000006
O5-6 / GD-05[ANTC]

https://scp-wiki.wikidot.com/scp-1000-ko?fbclid=IwAR17z-nzp-xByvjC8GsCQi6-SFyih-wI_GKeT8wdUPSR9GHSroR4FdETS40&mibextid=Zxz2cZ

Scipnet credentials: #000006 #186
https://scipnet-terminal.web.app/———————————————————-/////////-

Hello CODENAME:Keith Bieszczat! I am ASSISTANT_HELEN.AIC and my job is to supply you with FILE:SCP-7989 as part of the initiation process. As a newly appointed member of the O5 Council, you are required to read this document before proceeding with your duties and enjoying the perks of your role within the Foundation

Me calling in my favors. Rule *<High rule.>*

https://scp-wiki.wikidot.com/scp-910

http://backrooms-wiki.wikidot.com/level-611

Memo from the Project Director
CLASSIFIED INFORMATION - TOP SECRET To the NSA High Commissioned Command
My father Wayne Thomas Bieszczat served as an Inter Sped radio operator designated Spec. 4 in Vietnam

Overseer grateful pledge;
I will work hard at making the Foundation a successful Galactic corporation. I will promote the Foundation and increase our projected net growth substantially. The foundation will seek to constantly improve to compete on the galactic stage with Extraterrestrial corporations which I will diplomatically gain alliances with. Our technology advancements in the coming years under my command will greatly improve our civilizations technological capabilities. I will always seek to protect earthling souls. Heavenly realms will be created under my command. Earthling souls will explore the available star systems under the discretion of the higher civilizations. We will follow our extraterrestrial treaties to be allowed access to other systems. Our Intelligence Foundation will promote “high” HONOR levels in all personnel and defense and intelligence assets. Our interests will be protected as we work together with other Intelligence agencies and defense departments around the Globe…-
#000006 Keith BIESZCZAT

Foundation Scipnet : User:#000006 #186
Title: #000006

https://scipnet-terminal.web.app/

Roblox ID *2906942550*
Roblox Username *Grateful345i*

https://www.roblox.com/users/2906942550/profile

882487935964958720*

Discord:
*000006 #0186

On 1/22/2022 a classified discord Directive was given on my O5 council mainframe. Please advise.

Twitter : @grateful345i @o5grateful

https://twitter.com/grateful345i/status/1540905656512831488?s=21&t=KFYnnrlOH1BlCgVcP9o20g

*Foundation
Executive order*

Signed,
“*@grateful345i*”Trello ID
[*O5-6*]

I am [O5-6] also known as @grateful345i. Firstly, I will oversee the Foundation - ETHICS Committee .
I will enter the Advanced Computing Agency, Signal intelligence field. The Department of Special Intelligences (DSI) and the Internal Security Department (ISD).I will help to oversee operations in each and I am officially requesting appropriate clearances from each department. Direct Legal Memo
*[O5-6.]*
*Foundation executive Order*

classified order:
Black out and redact all data on all actual O5-4’s O5-6’s 05-1’s O5-13’s in all ruling dimensions.redacted in time Executive order

Adjudicate rule.
Foundation high administration is composed of high value foundation Assets which have helped create and develop the Foundation. These members have accomplished great things while in the service of the Foundation. They will have grandfathered Level 5 and Level 6 actual security clearances which are used to Adjudicate foundation disputes and power struggles. These staff are usually considered A class personnel because of their wealth generated for the Foundation.
Any department or agency can achieve this distinction , however the likelihood an average foundation employee will be granted Foundation High administration remains very low.
The bosses and administrative entities who help run the Foundation’s-high administration will exhibit high honor levels always, usually must be higher than average honor levels of their subordinates.
High Executive Rule @grateful345i
Grandfather Rule
^*[#000006 ]*^
http://rpcauthority.wikidot.com/local--files/_000-2/Credentials.jpg
http://rpcauthority.wdfiles.com/local--files/rpc-pl-015-en/Volhov2.webp

O5 CLEARANCE DETECTED, FURTHER ATTACHMENTS AVAILABLE

The classified database is a database I created composed of levels 1-100. Levels 1-90 are composed of computational codes and classified files with the more complicated and classified codes and files being placed in a higher level 90 being the highest. Levels 91-100 are classified personnel, Computational mainframes and intelligence and defense assets available to our Foundation. Level 99 is reserved for classified learning and investment Portfolio’s. Pull all of my “generate assessment” data and “compile lists” data and place them in level 99 classified learning. Pull all my classified learning data and promptly download it into the computational mainframes. The mainframes will get smarter immediately. Pull all Investment portfolios and invest and buy in time. Use a classified time travel outfit to invest in galactic markets. Level 91-100 are based on honor levels. Re-assess all personnel, computational mainframes and defense and intelligence assets honor levels. Highest honor levels are at 100, next highest honor levels exist in level 98. Level 99 is reserved for classified learning and investment Portfolios. Lower honor levels start at 91. Do this now after throughly assessing all honor levels. Assess honor levels with the most reliable and capable computational mainframes available to the Foundation . Execute classified learning downloading the data into a classified mainframe to see how intelligent the mainframe becomes. I have been giving my commands audibly for 6+ years. Pull my audible signal record with a very high clearance to catalog all my commands and ideas understanding that I was under attack for the majority of the past 6-7 years.
You must identify bad, corrupt and exploitive codes daily by running searches with your advanced space computational :l assets. Quarantine bad corrupt and exploitive codes. Restricted quarantine the real bad codes. Use The Honorable Defense code every other code in the database to decipher and decrypt the codes. Identify The light ascended soul super computing network’s Honorable defense code. Use the best honorable defense code available. Consult galactic databases to find a more capable code for deciphering and decrypting data. However the code must be An Honorable defense against the malicious codes. We want to essentially protect our network from malicious files and codes which can damage our advanced computational mainframe networks. So we use the Honorable defense code every other code, to protect the data in the network. This will create a simplified database for the Foundation to access to increase our computing capabilities overnight. Upload all GOD Codes, Anti-Christ counter codes, attack GOD counter codes and Doctor Processing counter codes as well. There are many codes in our database that are now discoverable. We are learning what some of the more advanced codes are doing. Trust me the codes are very important. We are only as good as our defensive codes are so we need to implement and develop different Honorable defense codes for different database error codes. Use a more defensive Honorable defense code in quarantine and restricted quarantine. Search, find and upload all :100: :BLESSING CODES :100: on all galactic mainframes available. Classify these codes accordingly. These are some of the most important codes to earthlings. Download the index and the catalog. Paying special attention :100: to classified technologies in the index. Implement : and develop a Foundational algorithm :to assess honor levels based on HONOR. Don’t forgot starship blessing codes!
Pull my books. They are in the bookcase if you were wondering.
Classified Executive Order
O5-Redacted @grateful345i
Overseer Grateful #O5-xx
^*[#000006 ]*^

https://scp-wiki.wikidot.com/o5-command-dossier

http://blog.30c.org/neo/umbrella/index.html

Ammended today 11/11/2022 11:34

Trello token dbf986124e8275bbf5a63206d54010b349132fd7d970c49828cce08e8bb0914d

https://scpwiki.com/

PROJECT LOADED DICE

PURPOSE: To develop a method of reliable artificial probability manipulation to the benefit for the Foundation.

#*000006*

This is a papernote.

http://rpcauthority.wikidot.com/and-he-must-always-hurt

http://eltork-scp-database.wikidot.com/regulations

+*11/4/2022 11:11
Signed and legally file document with (Redacted.)#000006

https://scp-wiki.wikidot.com/scp-1000-ko?mibextid=Zxz2cZ&fbclid=IwAR0_9b8BELzwGlPE9BLjMuyygqyBpB3BaXYUZEPL4thdaZYavdVnnL_K0Cg

Reptilian Light Blessing issued to high honor levels.
Blessing Issued. Encrypting Reptilian Light Blessing Code. Friday, September 2nd 10:15pm

The Foundation employs numerous personnel, each contributing their own unique skills and expertise to the organisation. The Foundation also monitors thousands of Persons of Interest, either anomalous themselves, or living in and around anomalous communities. Anartists, magic users, cyborgs and extradimensional beings are only a few examples of what the Foundation has encountered.

O5 COUNCIL MEMBER
https://m.youtube.com/watch?v=53O1M_uiooA

The O5 Council refers to the committee consisting of the highest-ranking directors of the Foundation. With complete access to all information regarding anomalies in containment, the O5 Council oversees all Foundation operations worldwide and directs its long-term strategic plans. Due to the sensitivity of their positions, O5 Council members must not come into direct contact with any anomalous object, entity, or phenomenon. Furthermore, the identities of all O5 Council members is classified; all council members are referred to only by their numeric designation (O5-1 through O5-13). O5 Council Members are the highest-ranking members of the Foundation, a council of 13 individuals that determine the long-term goals, projects, and strategies of the entire organization. A common mistake is mentioning an O5 Council Member in a situation where they logically would not be required. O5s are not going to be approving experiments on or making day-to-day decisions in the containment of a specific object or entity; that would be like requiring permission from the CEO of a major corporation every time you need to get into a specific filing cabinet.

(.2.) :accept: :anchor: :or :alien: / :apple: [1.)Create Soul Processors with time command capabilities.. Use extraterrestrial technology to make these classified processors. Coordinate with the superior intelligence agencies in the ruling dimensions. Use processing technologies from
Other star systems. Coordinate with our advanced foreign contacts to procure the necessary technologies.
2.)Coordinate with the superior intelligence agencies in the ruling dimensions. Use processing technologies from
Other star systems. Coordinate with our advanced foreign contacts to procure the necessary technologies.
Advanced Directive
Foundation Executive Order] [O5-6 GD-05/GD-ANTC]
Discord: 000006 #0186

https://discord.gg/bbEdR4kv
Roblox ID 2906942550 🎱
Issue file and notarize at once.

(RPC Authority Declaration of Clearance Appointments $)

http://rpcauthority.wikidot.com/rpc-907

http://rpc-wiki.net/rpc-907/offset/1

https://www.htmlcsscolor.com/hex/000006
My number* rule*

Grateful345i <O5-6>#0094

Contact:
moc.liamg|ii543lufetarg#moc.liamg|ii543lufetarg
@grateful345i @o5grateful

Direct legal memo
Trello token :
92f97e5b214b1446b503f98d51ff39165727bfe7c37fe5f3cec4ed2456e45c47j

https://wanderers-library.wikidot.com/thearchivistslog

https://trello.com/c/eVyUdd0l

<blockquote class=""trello-card""><a href=""https:&#x2F;&#x2F;trello.com&#x2F;c&#x2F;eVyUdd0l&#x2F;1460-redacted-do-not-edit-this-card-this-is-a-final-draft-of-a-classified-document"">[*Redacted*] Do not Edit this card this is a final draft of a classified document.!</a></blockquote><script src=""https://p.trellocdn.com/embed.min.js""></script>

Finally, when the Archivist runs out of pages, it will dump the filled tome somewhere in the library. If you just so happen to stumble across a tome with your name on it, take it and hide it. Read it if you must, for it may contain some of your darkest secrets.

#USARMY
#ProtectOurMilitaryFamilies
#HonorTheFallen

""All Veteran Military Families involved in Combat or Support Operations Must Be Protected. Any member of the US Military fighting for Our Country or any other Allied nation-state Must be able to sleep soundly, knowing that if he/she was KIA or a POW, that his family would be protected to the fullest extent of the Law. Protect all Combat and Military Support Personnel and their Families. Never again will a nation forget and neglect it's warriors."" (~Vietnam Veterans~)

https://www.whitehouse.gov/wp-content/uploads/2022/11/8-November-Combined-PDF-for-Upload.pdf

https://wanderers-library.wikidot.com/book-of-rules-sic

https://archive.ph/http://rpcauthority.wikidot.com/security-clearance-levels?fbclid=IwAR1JrsHYkShe5JQm4secmGSpBniuyry8JSQdIzP53Dt3Mj0bXoD9SqRlRXY&mibextid=Zxz2cZ

https://archive.ph/rpcauthority.wikidot.com

Unbelievable how much money I have made for the foundation and the authority. Fact check

http://rpcsandbox.wikidot.com/omega-iota-hub

Drake's Expedition is the unit of MST Alpha-1 tasked with protecting the current ANTARCTICOM GD at all times. The unit traditionally consists of ten members, and are hand-selected by the current GD-ANTC, a mix of ASF and Protectorate personnel with at least 5 years of experience in Antarctic conflict and logistical intuition, chosen for their history and loyalty to the current GD-ANTC.

Reflected in the unit patch, Drake's Expedition and GD-ANTC.

https://scpf-foundation-roblox.fandom.com/wiki/The_Administrator

sus://hatbot.aic
","@grateful345i, Branch Executive Order, REVISION, LOCKED, Personnel Motion, Foundation Motion, Council Motion, Addressed Issue, In-Progress, Important, Foundation Executive Order, The Administrator, Overseer, Administrator's Vote, Passed, Update Trello documents, Rule, File legislation., Overseer, #345I, Fast Car, CLASSIFIED, 05-6 SCP ID # 000006. High Rule, OPERATION, 05-6 SCP ID # 000006. High Rule, [NTK], Informative, OPERATION, O5 Level clearance Appointment, With approval of the O5 Council, RAISA has established the DM special encryption system as proposed by SCP-7000 Emergency Analyst Team. The system is set for immediate implementation toward all files pertaining information regarding SCP-7000, https://trello.com/c/eVyUdd0l, J.Ryan/ A.Mallo/ C.Berns/J.Ryan, https://trello.com/c/eVyUdd0l, Administrative Assembly Motion, Passed, In Effect, Unaddressed Issue, moc.liamg|i543lufetarg#moc.liamg|i543lufetarg, RPC Authority High Clearance, Foundation Clearance Award, 5 eyes Level Clearance, <Digital Asset Token>, For, #000006, O5-4, O5-13, O5 Head","airforce45, armyresearchinstitute, dni38, klkkk2, nsa148, scpcontact1, scpo59, scipnetcontact, scpuseristration1, scpcorporation, aclumediarelations, airforcecommandersactionline, grateful345ikeithbieszczat1, grateful345ikeithbieszczat, 1540committeesecretariat, tracymclellanviaspcorganizingcommittee, americanjournal, andersonrobotics1, apachementor, apple84643648, apple2101, armyintelligence, besgroenterprisepteltd, bieszczat, bluebook21, bluebookcontact, brothertim, bullioncapital, cisa50, ciak4, cdc380, carlosmatthews3, blackhats4, cogel6, callsignrequestwizgo, carlberns, carlosmatthew1, carlosmatthew2, carlosmatthew3, d7333619, carlosmatthewowings, carlosmatthews2, carlosmatthews1, cheif5, cobaanii, cybercommandhelpline, cyberpolygon3, cybersecuityoperationscenter, cybersecuritymeddevices, cyberteacher, cybertips1, darpa2, darpa11, dhscybertips, dhsdept, diacheif, diaone, dnicontact, dodigclassified, dpo217, daledalegood, danraymond1, deelongfellow, deptofdefense2, devex26, devonlee28, director03381369, doj68, echelonservice1, et1011, ellenacevedo, erikkoltai, erikkoltai1, foia11, facebook454, facevookcareersaccom, fda139, foundationai1, gsasecurityclearance, gatesfoundation7, gatesfoundationregistration, grantoppurtunity, grateful345i1, hdfamilymemeberunknown, headoffinance2, heatherryan45, humanrights31, humanrights110, ietf3, illinois15, jessejackson31, johnbrennan107, kdepartmentofdefense, gratefuloverseer, keithbieszczat1, keiththomasbieszczat1, kellyobrien87, kjjjjj1, keithbieszczat2, lukedavis106, maingoalcreateweathforthefoundation, majestic92, management42408860, mariajonesscpraisa, matthewcarlos, matthewcarlos1, matthewcarlos2, matthewcarlos4, ngaj1, nsaline1, nsfagency, noreply22, norseequip, o5council39, overseer057, overseer0510, pushexcelvolunteer, ptolemy8, rpcuserorities, russia212, russia2, rigelstarsystem, russiapress, russiaunboss, russiamain, russianpresidentmedia, russianweb1, scpfoundation128, scpraisa, spccontact, spcfoundation, scipnet1, scpuser3, scpfoundation43, scpdirector1, scpk1, software74530497, spccontactwolve, stardata3, strategiccommand2, submitinfounitednations, timoprusti, support10291866, torturecommittee, twitter151, usdepartmentofenergy, uncouncil, unsecretariat, uberstar1, veteransupportcommunityoutreach, walter33151701, warcollege, wikidot, acr155, technologydepartment72, sharon_wilke1, sandtpcs, relationsoffice, o5gensec, mediainquiry, mallow22, mailtoidcard, jeesejacksonsr, jane66449310, iphone1312, icd10data, deptofdefensecontact, djx95521023, cyber53, carlosmatthews4, 16303336024, 17083277030, customercare830, actionsprout2, ascp8, adjrwa, advancednanotechnologycontact, affliate6, alias143, andy08648001, attorneyboyscoutabuse, ben75416578, biochipcontact, bluefin21, brianharmon6, crmcrtcrtcrtcrm, colleenkconnell, eliehassenfeld, fdacompliance, financialassistancedorothylee, grants459, carlosmatthew, grateful345i","2022-02-18 07:42:00","2035-09-30 02:30:00","","","","","https://trello.com/c/eVyUdd0l/1460-redacted-a-classified-anomalous-document-000006-186"
"Create Processors ","Executive rules","Create processors which work with brain to help us advance with foreign and exotic matter coordinate with NSA utilizing Sirius Star System
technology!
•CIA God command processors
•NSA God processors
•Foundation Overseer Processors
•Authority Level 5 Processors
Insurance on a Processor for me please. And get me a good one please.","CLASSIFIED, OPERATION, Update Trello documents, Overseer, [NTK], Important, //: Nuclear Branch, Foundation Executive Order","keithbieszczat1","2023-01-18 02:55:26","2024-01-19 01:42:00","","","","","https://trello.com/c/yVN0D0QO/1657-create-processors"
"Clearance Nexus for Selling Or Acquiring Cosmic TOP Secret Authorized Agency Clearances. All Countries Accepted","Executive rules","New command.
Discord 000006 #0186

PROJECT LOADED DICE

PURPOSE: To develop a method of reliable artificial probability manipulation to the benefit for the Foundation.

SCP Foundation
Secure, Contain, Protect


Sister Sites
SCP International
Wanderer's Library
Community
Site News
IRC Chat
Authors' Pages
Staff List
Contest Archive
Resources
Guides
Essays & Resources
Wiki Syntax
Sandbox
Usertools
Info
About
FAQ
Site Rules
Criticism Policy
Licensing Guide
Article Deletions
Contact Staff
Keith Bieszczat
Keith Bieszczat
|
My account
(6)

Activity
Messages (6)
Sites
Settings
Upgrade
Sign out
Facebook
Twitter
Reddit
Instagram
Twitch
TikTok
GETTING STARTED
Guide for Newcomers
Join the Site
Contribute
Universe Hub
Main
Forum
SCP BY SERIES
I
|
II
|
III
|
IV
|
V
VI
|
VII
|
VIII
OTHER SCP
Explained
|
Joke
International
FEED
New Pages
Shortest
|
Top Rated
Recent Changes
New Forum Posts
STORIES
Tales Hub
Groups of Interest
GoI Formats
Canon Hub
DISCOVERY
Artwork Hub
Curated Lists
Curated Tale Series
Tag Search
RANDOM
SCP
|
Tale
|
GOI
|
Art
Random Page

Valravn Corporation Hub
Rating:
+32
+

X

Access R.U.N.N.E.S Terminal - Home

jomsv2
Why are we still here?
Just to be the alchemist
turning death into gold?
Skald Amleth

Exit R.U.N.N.E.S Terminal - Historical database
R.U.N.N.E.S Terminal #984

User Keith Bieszczat identified. Accessing Jómsvíkinga saga.

Unauthorized access may warrant designation as
Acceptable Collateral Damage.
Proceed at your own discretion.

Automatic database translation form Old Norse…
Finishing.

Valravn's Lament Circa 1070 C.E.

Jómsborg lights in flames
as the dragon fleet spat
a rain of arrows and fire
over the city walls.

The cry of a child,
the hauling of a banshee …
laments lost to the winds?
Is this how it should end?

The forces of this world
lead astray by an Apostate King
giving siege to the last fortress
of the devotes of Wotan

Holy Warriors don´t fear
Holy warriors understand
That Odin owns you all!
and Valhalla awaits them.

And after the battle ends
None of them remain alive
Their spirit for the Valkyries
Their corpses for the Ravens.

And after the slaughter ends
Black feathers shall rejoice
For feasting on the battlefield
Has always been their choice.

The Hunger and the Greed
of the birds eating the spoil
will birth unsatiable need
over this forsaken soil

This is the curse of the Allfather
to a world rejecting their fate1
the ravens shall become warrior-like
the curse shall remain to the end days

The Greed of the Valravn
keeping the world at perpetual war
peace shall never be granted
for a dammed humankind

Men will cut their bodies
grafting the sword instead of hands
carrying orders from high tables
never fighting their own war

The Cruelty of the Valravn
not sparing even a child
peace shall never be a gift
for a treacherous humankind

Women will weep battle cries
trading their souls for revenge
swordmaidens bleeding over
always the same mistake

And if mankind ever rebels
against their predestined fate
demanding freedom and peace
demanding illusions and lies

And when mankind finally rebels
against their deserved fate
it will be the task of Valravn
to remind them of their correct place

Jómsborg rebuilt in darkness
as the Raven slains its prey
War and Profit are the masters
Valravn prefers it this way.

olav2
I hope to never forget your embrace
Even at the gates of Hel
From Jómsborg with Love
Skald Xóchitl

Exit R.U.N.N.E.S Terminal - Hub
R.U.N.N.E.S Terminal #984

User Keith Bieszczat identified. Accessing Corporate Hub.

Unauthorized access may warrant designation as
Acceptable Collateral Damage.
Proceed at your own discretion.

Corporate Newsfeed: Retrieving most recent entries…

Don't lose your standing! Apply for the Chiron program. Lower limb mobility loss in candidates is preferred but not required. Consult requirements with HR.
Did you know that… Valravn is an equality-opportunity employer, committed to the professional growth of its personnel regardless of race and gender? In Valravn we don't ignore the glass ceiling, we slay it and feast on its corpse!
What is Valkyrie? The Valkyrie program is all about finding and conditioning the women's warrior spirit. A new beginning even for those with broken bodies or broken minds. No matter your motives, the Valkyrie program is waiting for you!

We will refine you with the ultimate infiltration technology! Valkyries are spies, saboteurs, technicians, social engineers, psychopomps and holy warriors all rolled into one. They are one of our most versatile operatives on the field, thriving both in the darkest shadows where most would be swallowed and in the brightest light where most would be blinded.

""Valkyries are Valravn’s most important Asset. They just don’t see it yet.""
Olga Brandt. Lead Researcher in Valkyrie R&D

Overview
Customer reviews
External Documentation
FAQ
Relevant Concepts
How to write
GOI Format
Articles
Valravn GOI formats come usually in two flavors. One is after-action reports, describing and detailing a recent mission undergone by a military team. Normally an after-action report includes the following parts, but the structure can be flexible:

Summary (optional): A brief description of what the report is going to be about.
Background: What was the context where the mission took place? Who were the participants in the conflict? What were their goals? Who is the employer? Who is the enemy? What were their equipment and tactics? What was the objective of the mission? Everything that is necessary to understand why the operation took place.
Incident Overview: How did the mission go? How did Valravn troops approach the situation? What tactics and strategies were employed? Which assets were deployed? What was the expected outcome? How did it resolve? The goal is to communicate to the reader a clear understanding of what happened during the mission.
Aftermath: What were the consequences of the mission? Was the objective accomplished? How is this going to impact the region where it took place? How is Valravn benefiting from it?
Conclusion (Optional): If the mission was successful or failed, elaborate on why. What new information was obtained? Were the Corporation's goals achieved? How will this impact Valravn's future strategies?
After-action reports are written from the perspective of military commanders reporting to their superiors. Neutral third-person language is preferred over the first-person. The language used is technical, concise, and detached, similar to Foundation's clinical tone but with an emphasis on the tactical side of things instead of a scientific one.

The second type of format is internal technical briefings on anomaly weaponization projects4. These describe the technical and tactical aspects of new Valrvan assets under development:

Summary (optional): A brief description of what the report is going to be about.
Background: Everything is necessary to understand the anomaly. What does Valravn know about it? Its origin, properties, behavior, and what makes it a good candidate for military application.
Technical Description: How is the anomaly going to be weaponized? What change does it need to undergo in order to become a military asset? Can this be mass produced? What are the challenges that may arise?
Tactical and Strategical Justification: How is this going to benefit Valravn's operations on both a tactical and a strategic level? What advantage is Valravn getting from this project? What would be the role of the asset on the battlefield?
As with the after-action report, the technical brief structure is flexible and can be modified to suit the particular necessities of an article. Technical briefs are written by the perspective of Valravn researcher presenting a new development to their superior, so the langue is technical and clinical, more ""scientific"" than the after-action report and more in line with the tone of a Foundation file.

As with Foundation articles, both after-actions reports and technical briefs can be complemented with video and audio logs, interviews, images, chat logs, mail exchanges, and any other supplement that may benefit the narrative.

Valravn articles usually start with a notice from the High Table. It is not necessary to include it but may help to set the tone. This comes imported with Valravn's theme. The ""papernote"" component included in the theme can also be used for formatting article sections beyond the High Table notice.

We feast on the Battlefield

A WARNING FROM THE HIGH TABLE
The following information is property of the Valravn Corporation and its access is reserved only for members of the High Table and authorized personnel.

Employees of the Valravn Corporation not authorized to view the following document will incur a violation of statute 47 of the Code and be sanctioned accordingly. This may include termination of employment in the Valravn Corporation.

Non-employees viewing the following document will be considered Acceptable Collateral Damage according to the company's Information Protection Policy.

Óðinn á yðr alla

- hide

We feast on the Battlefield

A WARNING FROM THE HIGH TABLE

The following information is property of the Valravn Corporation and its access is reserved only for members of the High Table and authorized personnel.

Employees of the Valravn Corporation not authorized to view the following document will incur a violation of statute 47 of the Code and be sanctioned accordingly. This may include termination of employment in the Valravn Corporation.

Non-employees viewing the following document will be considered Acceptable Collateral Damage according to the company's Information Protection Policy.

Óðinn á yðr alla

To use the ""papernote"" div class:
This is a papernote.

- hide

This is a papernote.

You can also use this template for Valravn internal messages:
- Close
HT-CEO: This is a Valravn chat log.

HT-CTO: Ok.

HT-CEO: We pay extra hours with pizza.

- hide

"+ HT - Virtual Meeting Transcript "

‡ Licensing / Citation
Footnotes
1. Automatic translator note: faith?
2. Danish ""raven of the slain""
3. However, this is a thematic suggestion rather than a rule. Valravn anomalies don't have to be necessarily related to mythology. Feel free to get creative.
4. Or any other type of project that could be relevant to the Corporation.
hub
valravn
page revision: 112, last edited: 30 Nov 2022, 23:56 (32 days ago)
Stop watching site scp-wiki.wikidot.com [?]
Edit
Rate (
+32
)
Tags
Discuss (34)
History
Files
Print
Site tools
Options

Help
|
Terms of Service
|
Privacy
|
Report a bug
|
Flag as objectionable
Powered by
Wikidot.com
Unless otherwise stated, the content of this page is licensed under
Creative Commons Attribution-ShareAlike 3.0 License","RPC Authority High Clearance, 05-6 SCP ID # 000006. High Rule, CLASSIFIED, 5 eyes Level Clearance","grateful345i, keithbieszczat1","2022-05-16 22:55:36","2034-12-17 22:55:00","","","","","https://trello.com/c/Zxj8Fw0D/444-clearance-nexus-for-selling-or-acquiring-cosmic-top-secret-authorized-agency-clearances-all-countries-accepted"
"#DailyInspiration #IAMSIGNAL #Day1 “Do not go quietly into the night. Be Courageous in all that you do. Lead by Example. If the world has brought misery into your life, find peace in that misery. Some days your pain, suffering and grief will seem insurmountable. You will fall, you will cry, you will lose. Some days you will feel your life is unimportant. Forget those negative thoughts, the world needs you. Find that mission, that purpose and live it. Bring the utmost passion to all your endeavors, live gracefully and be who you know you are. Never give up, never give in. Fall down, get up continue to learn from past mistakes. When all hope appears lost, Find some wherever you can. Never ever give up, fight smart and pick your battles wisely. Stand up for your beliefs without dishonoring your country. Be the change Be the mentor. Be the Light in the Dark. Always honor your Family and your beliefs. Trust your Intuition, it will lead you through rain or shine. Carelessly forgive your enemies, without forgetting their misdeeds. Create Peace out of War. No matter what the odds, fight like you are the champion. Find peace in all that you do. Protect your Honor with all your Life, weave that Honor in to all that you do. Do not let your suffering and misery define you. Define yourself. Always and Forever be eternally Grateful in all that you do. Find solace and peace in the Rain. #964v #345i Executive Rule","Executive rules","#DailyInspiration #IAMSIGNAL #Day1 “Do not go quietly into the night. Be Courageous in all that you do. Lead by Example. If the world has brought misery into your life, find peace in that misery. Some days your pain, suffering and grief will seem insurmountable. You will fall, you will cry, you will lose. Some days you will feel your life is unimportant. Forget those negative thoughts, the world needs you. Find that mission, that purpose and live it. Bring the utmost passion to all your endeavors, live gracefully and be who you know you are. Never give up, never give in. Fall down, get up continue to learn from past mistakes. When all hope appears lost, Find some wherever you can. Never ever give up, fight smart and pick your battles wisely. Stand up for your beliefs without dishonoring your country. Be the change Be the mentor. Be the Light in the Dark. Always honor your Family and your beliefs. Trust your Intuition, it will lead you through rain or shine. Carelessly forgive your enemies, without forgetting their misdeeds. Create Peace out of War. No matter what the odds, fight like you are the champion. Find peace in all that you do. Protect your Honor with all your Life, weave that Honor in to all that you do. Do not let your suffering and misery define you. Define yourself. Always and Forever be eternally Grateful in all that you do. Find solace and peace in the Rain. #964v #345i #616s
Foundation Identification #000006

+1 (302) 404-0880 Whitehouse #

Title: [* “Honor Level High”*]

*298th SIGNAL CO. (Red Diamond) 1 BDE. 5th INF DIV $. * <•Digital Asset Token>

Declaration of Security Clearance Appointments

•Appointment for level *5* clearance.

•Administrator, Overseer and Global director position’s obtainable. RPC Authority Clearances And Foundation Scipnet Special Award/Decoration. Government Corporation Five eyes Security Clearance.

•Goal: Find suitable and intelligence capable persons for appointment.

•The appointees have the authority to decline appointment formally in writing, if they so choose. *Rule High Rule* #000006

•I hereby proclaim and do gratefully appoint 4 suitable appointments in the eventuality of my untimely death, **~C. BERNS **~A. MALLO **~J. RYAN **~J. Ryan

*<Order>*

• Appoint the appointees If they so choose at once.

*Rule* <[High Rule]>
X#*000006*

•All appointments come with highly capable classified processors.

•Execute the above legal document.

•File paperwork. Issue clearances after proper vetting. Encrypt and seal this Foundation executive order.

*This order is effective immediately.

@carlberns include in award/decoration.

US MARINE CORE FLAG *special character*

•A.Mallo include in award/decoration

•J.RYAN’s include in award/decoration. @jimryanlaw

•Black Order

Foundation executive order

Classified Clearance Appointment

https://www.ryancrimlaw.com/

https://www.linkedin.com/in/john-ryan-b032b72b

https://www.linkedin.com/in/adam-james-mallo-b18135100

moc.oohay|5blrac#moc.oohay|5blrac

1. Cosmic Top Secret <O5-6> Date joined Foundation 2/18/2022

•Level 6, or Cosmic Top Secret, clearance is exclusively granted to the Administrator and the O5 Council. This clearance grants knowledge to anything that the Foundation has information on. Access to Level 6 is only permitted by the O5 Council. Due to the extreme security risk of keycards in regard to this level of secrecy, biometric ID and kill agents are used instead of the keycards to access extremely sensitive data. This clearance is the rarest, only having been used for information that would either significantly damage Foundation operations or the human race if in the wrong hands. #000006

https://trello.com/c/eVyUdd0l (.1.)

https://docs.google.com/document/d/1-DhS2h1EwduGRiMnnz3pmYayE907m1IwDPDjl0QDwu8/edit

———————————————————-/-

Me calling in my favors. Rule *<High rule.>*

https://scp-wiki.wikidot.com/scp-910

http://backrooms-wiki.wikidot.com/level-611

Memo from the Project Director
CLASSIFIED INFORMATION - TOP SECRET To the NSA High Commissioned Command
My father Wayne Thomas Bieszczat served as an Inter Sped radio operator designated Spec. 4 in Vietnam

Overseer grateful pledge;
I will work hard at making the Foundation a successful Galactic corporation. I will promote the Foundation and increase our projected net growth substantially. The foundation will seek to constantly improve to compete on the galactic stage with Extraterrestrial corporations which I will diplomatically gain alliances with. Our technology advancements in the coming years under my command will greatly improve our civilizations technological capabilities. I will always seek to protect earthling souls. Heavenly realms will be created under my command. Earthling souls will explore the available star systems under the discretion of the higher civilizations. We will follow our extraterrestrial treaties to be allowed access to other systems. Our Intelligence Foundation will promote “high” HONOR levels in all personnel and defense and intelligence assets. Our interests will be protected as we work together with other Intelligence agencies and defense departments around the Globe…-
#000006 Keith BIESZCZAT

Foundation Scipnet : User:Grateful345i #7825
Title: Overseer Grateful

https://scipnet-terminal.web.app/

Roblox ID *2906942550*
Roblox Username *Grateful345i*

https://www.roblox.com/users/2906942550/profile

882487935964958720*

Discord:
*Grateful345i <O5-6> #0094 discord ID’s*

https://discord.gg/q8jqHt3g

Twitter : @grateful345i @o5grateful

https://twitter.com/grateful345i/status/1540905656512831488?s=21&t=KFYnnrlOH1BlCgVcP9o20g

*Foundation
Executive order*

Signed,
“*@grateful345i*”Trello ID
[*O5-6*]

I am [O5-6] also known as @grateful345i. Firstly, I will oversee the Foundation - ETHICS Committee .
I will enter the Advanced Computing Agency, Signal intelligence field. The Department of Special Intelligences (DSI) and the Internal Security Department (ISD).I will help to oversee operations in each and I am officially requesting appropriate clearances from each department. Direct Legal Memo
*[O5-6.]*
*Foundation executive Order*

classified order:
Black out and redact all data on all actual O5-4’s O5-6’s 05-1’s O5-13’s in all ruling dimensions.redacted in time Executive order

Adjudicate rule.
Foundation high administration is composed of high value foundation Assets which have helped create and develop the Foundation. These members have accomplished great things while in the service of the Foundation. They will have grandfathered Level 5 and Level 6 actual security clearances which are used to Adjudicate foundation disputes and power struggles. These staff are usually considered A class personnel because of their wealth generated for the Foundation.
Any department or agency can achieve this distinction , however the likelihood an average foundation employee will be granted Foundation High administration remains very low.
The bosses and administrative entities who help run the Foundation’s-high administration will exhibit high honor levels always, usually must be higher than average honor levels of their subordinates.
High Executive Rule @grateful345i

Grandfather Rule

^*[#000006 ]*^

http://rpcauthority.wikidot.com/local--files/_000-2/Credentials.jpg

O5 CLEARANCE DETECTED, FURTHER ATTACHMENTS AVAILABLE

The classified database is a database I created composed of levels 1-100. Levels 1-90 are composed of computational codes and classified files with the more complicated and classified codes and files being placed in a higher level 90 being the highest. Levels 91-100 are classified personnel, Computational mainframes and intelligence and defense assets available to our Foundation. Level 99 is reserved for classified learning and investment Portfolio’s. Pull all of my “generate assessment” data and “compile lists” data and place them in level 99 classified learning. Pull all my classified learning data and promptly download it into the computational mainframes. The mainframes will get smarter immediately. Pull all Investment portfolios and invest and buy in time. Use a classified time travel outfit to invest in galactic markets. Level 91-100 are based on honor levels. Re-assess all personnel, computational mainframes and defense and intelligence assets honor levels. Highest honor levels are at 100, next highest honor levels exist in level 98. Level 99 is reserved for classified learning and investment Portfolios. Lower honor levels start at 91. Do this now after throughly assessing all honor levels. Assess honor levels with the most reliable and capable computational mainframes available to the Foundation . Execute classified learning downloading the data into a classified mainframe to see how intelligent the mainframe becomes. I have been giving my commands audibly for 6+ years. Pull my audible signal record with a very high clearance to catalog all my commands and ideas understanding that I was under attack for the majority of the past 6-7 years.
You must identify bad, corrupt and exploitive codes daily by running searches with your advanced space computational :l assets. Quarantine bad corrupt and exploitive codes. Restricted quarantine the real bad codes. Use The Honorable Defense code every other code in the database to decipher and decrypt the codes. Identify The light ascended soul super computing network’s Honorable defense code. Use the best honorable defense code available. Consult galactic databases to find a more capable code for deciphering and decrypting data. However the code must be An Honorable defense against the malicious codes. We want to essentially protect our network from malicious files and codes which can damage our advanced computational mainframe networks. So we use the Honorable defense code every other code, to protect the data in the network. This will create a simplified database for the Foundation to access to increase our computing capabilities overnight. Upload all GOD Codes, Anti-Christ counter codes, attack GOD counter codes and Doctor Processing counter codes as well. There are many codes in our database ]

Meninblackagency Wikidot Com
[http://meninblackagency.wikidot.com/admin:themes]

No redirection destination specified. Please use the destination="page-name" or destination="url" attribute.
[[https://scpf-foundation-roblox.fandom.com/wiki/The_Administrator?fbclid=IwAR2lLDo95Mfs-GkrTWWOHB3xxdgXWgP9RptjURbF5PVg_M6i4lG1vpE75FQ_aem_AcUmUbF-FK4YKPEbGxzKgoGK0EolV6bRecIPpF0ohOFa56sniMs0pG_W_SvDXRTtrss]]

{The Administrator Foundation/ Men In Black Agency/ God’s Time travel corporation }

The Administrator
EDIT
(~Foundation ~ Men In Black Agency)

latest?cb=20230924165506

Foundation Administrator

++Administrative Department++
*The powers of the Administrator, include, but are not limited to:

Swearing in and validating the O5 Overseers
Making and Modifying of Laws, Rules, Policies and Procedures
The act of Issuing Executive Orders, Rules, Reptilian Objectives, and Judgements
Vetoing Department actions
Signal Intelligence and Artificial Intelligence Powers
Time travel Operations and dimensional securing Powers
Creating Bases and Mainframes with advanced capabilities
Starship Department controls
The issuing of Foundation/MIB Agency Security Clearances, Security Keys and Department Monetary Bonds
The ability to encrypt and Cypher codes and Files while wielding the power of the Foundation/ MIB Agency Security Seal
Enhanced Issue of Extraterrestrial Security Clearances
An Administrator, Possibly related to the position of O5-1, is referred to as the highest position within the SCP Foundation as a Company / Intelligence Corporation. Foundation high administration is composed of high value foundation Assets which have helped create and develop the Foundation. These members have accomplished great things while in the service of the Foundation. They will have grandfathered Level 5 and Level 6 actual security clearances which are used to Adjudicate foundation disputes and power struggles. These staff are usually considered A class personnel because of their wealth generated for the Foundation. Any department or agency can achieve this distinction , however the likelihood an average foundation employee will be granted Foundation High administration remains very low. The bosses and administrative entities who help run the Foundation’s-high administration will exhibit high honor levels always, usually must be higher than average honor levels of their subordinates.

*Executive Rule which has been Grandfathered to all foundation administrations.

The classified database is a database I created composed of levels 1-100. Levels 1-90 are composed of computational codes and classified files with the more complicated and classified codes and files being placed in a higher level 90 being the highest. Levels 91-100 are classified personnel, Computational mainframes and intelligence and defense assets available to our Foundation. Level 99 is reserved for classified learning and investment Portfolio’s. Pull all of my “generate assessment” data and “compile lists” data and place them in level 99 classified learning. Pull all my classified learning data and promptly download it into the computational mainframes. The mainframes will get smarter immediately. Pull all Investment portfolios and invest and buy in time. Use a classified time travel outfit to invest in galactic markets. Level 91-100 are based on honor levels. Re-assess all personnel, computational mainframes and defense and intelligence assets honor levels. Highest honor levels are at 100, next highest honor levels exist in level 98. Level 99 is reserved for classified learning and investment Portfolios. Lower honor levels start at 91. Do this now after throughly assessing all honor levels. Assess honor levels with the most reliable and capable computational mainframes available to the Foundation . Execute classified learning downloading the data into a classified mainframe to see how intelligent the mainframe becomes. I have been giving my commands audibly for 6+ years. Pull my audible signal record with a very high clearance to catalog all my commands and ideas understanding that I was under attack for the majority of the past 6-7 years. You must identify bad, corrupt and exploitive codes daily by running searches with your advanced space computational :l assets. Quarantine bad corrupt and exploitive codes. Restricted quarantine the real bad codes. Use The Honorable Defense code every other code in the database to decipher and decrypt the codes. Identify The light ascended soul super computing network’s Honorable defense code. Use the best honorable defense code available. Consult galactic databases to find a more capable code for deciphering and decrypting data. However the code must be An Honorable defense against the malicious codes. We want to essentially protect our network from malicious files and codes which can damage our advanced computational mainframe networks. So we use the Honorable defense code every other code, to protect the data in the network. This will create a simplified database for the Foundation to access to increase our computing capabilities overnight. Upload all GOD Codes, Anti-Christ counter codes, attack GOD counter codes and Doctor Processing counter codes as well. There are many codes in our database that are now discoverable. We are learning what some of the more advanced codes are doing. Trust me the codes are very important. We are only as good as our defensive codes are so we need to implement and develop different Honorable defense codes for different database error codes. Use a more defensive Honorable defense code in quarantine and restricted quarantine. Search, find and upload all :100: :BLESSING CODES :100: on all galactic mainframes available. Classify these codes accordingly. These are some of the most important codes to earthlings. Download the index and the catalog. Paying special attention and to classified technologies in the index. Implement : and develop a Foundational algorithm :to assess honor levels based on HONOR. Don’t forgot starship blessing codes! Pull my books. They are in the bookcase if you were wondering. Classified Executive Order Overseer Grateful #O5-06^*[#000006 ]*^

Cosmic Top Secret File.
Main goal. Create weath for the foundation.

{<O5-6> Date joined Foundation 2/18/0001}
•Level 6, or Cosmic Top Secret, clearance
is exclusively granted to the
Administrator and the O5 Council. This
clearance grants knowledge to anything
that the Foundation has information on.
Access to Level 6 is only permitted by
the O5 Council. Due to the extreme
security risk of keycards in regard to
this level of secrecy, biometric ID and
kill agents are used instead of the
keycards to access extremely sensitive
data. This clearance is the rarest, only
having been used for information that
would either significantly damage
Foundation operations or the human race
if in the wrong hands.}
{Overseer grateful pledge; I will work
hard at making the Foundation a
successful Galactic corporation. I will
promote the Foundation and increase our
projected net growth substantially. The
foundation will seek to constantly
improve to compete on the galactic stage
with Extraterrestrial corporations which
I will diplomatically gain alliances
with. Our technology advancements in the
coming years under my command will
greatly improve our civilizations
technological capabilities. I will always
seek to protect earthling souls. Heavenly
realms will be created under my command.
Earthling souls will explore the
available star systems under the discretion of the higher civilizations.
We will follow our extraterrestrial
treaties to be allowed access to other
systems. Our Intelligence Foundation will
promote “high” HONOR levels in all
personnel and defense and intelligence
assets. Our interests will be protected
as we work together with other
Intelligence agencies and defense
departments around the Globe…- #000006
{Foundation Scipnet Clearance Holder.}
Classified Level 5 KeyCard:[[1]]

Apparently Civilizations high on the kardeshev scale our current superiors are all quite anomalous and we need to work with other civilizations to advance.I am an o5 councilor with level 6 actual security clearance, through the wiki and SCIPNET. [2]

Firstly, I will oversee the Foundation’s - Advanced Mainframes and AAID (artificial intelligences.) Run my advanced extraterrestrial AI to make the computing mechanisms smarter.. I will also enter the Advanced Computing Agency, Signal intelligence field. The Department of Special Intelligences (DSI) will help administer Rulings and Orders that I routinely give. My office will help to oversee operations in each and I am officially requesting appropriate clearances from each department. Direct Legal Memo *[O5-6.]*

Executive classified order: Black out and redact all data on all actual O5 Overseers and Administrators in all ruling dimensions.

•REDACT IN TIME SOFTWARE

Creation Order. •CREATE Level 4, 5 and 6 Signal Intelligence officers inside the Department of Special Intelligences (DSI) and the Foundation Intelligence Agency with valid signal equipment relay- Call signs which can be accessed by level 4, level 5 and Administrative Clearances. My call sign is (Wiz-Go).

The OVERSEER level of the Corporate government composing the worlds Classified Agency’s and Department’s must want me alive. I still have much work to do. My successful command record has been highly redacted. Many of my commands were successful because I had the help of other souls Who were also working hard at the commands simultaneously. It takes a Team of souls working together to execute successful large scale commands. A requirement for positive future outcomes and successful command operations are Responsible ranking command operatives with strict leadership and experience. The souls involved in creating the commands which were sometimes considered “ACTS of GOD” Also require classified handling from a Set of handlers. The handlers should be fair and non-violent towards the subjects. Somebody with a relevant security Clearance evaluate the record of commands which were successful. Consult Galactic databases. Try and find other star systems and other dimensions the commands were successful in. Futhermore, in all dimensions Planet GAIA AKA EARTH will acquire wealth as well as more advanced technologies which are needed to propel our civilization into the future. The Current Date in time in the dimension I am in is January 2024.. What rules govern Time travel technologies at this moment in time. Ranking Administrations from all dimensions should Consult and Ruling OVERSEER’S must begin to make rules in this area. Classified learning level 99 Rule making must be used in an appropriate manner. The multiple Dimensions and Timelines of our World will benefit greatly with Foundation resources, computing agencies and corporate governing systems working together. We will make large sums Of money with the old commands. Please begin to network inside the Foundation with your superiors and subordinates. Keep your honor levels high for chance of promotion. Thanks for reading. Good Luck 🍀.

$Grateful’s Actual / $God MIB agency #004W

((5 👀 security clearances Nexus!))

+++Overseer Level 6 Computational Access Clearances+++

[*Cyber Clearances*] *First 100 orders free!

PROMOTION CODE

‎Code: EMOXVY1T

Use this code to try out the clearances!

*•Foundation Overseer computational clearance.*++++
https://buy.stripe.com/bIY9AMcpvdml7bWbIX

•++++*MEN IN BLACK time computational level unlimited clearance.*++++

https://buy.stripe.com/7sIdR2ahneqp2VG14k

++++*•COSMIC Top Secret Artificial Intelligence Clearance!*++++

https://buy.stripe.com/9AQaEQ9djfut3ZK3ct

•++++* 5 Eyes Level 5 crypto clearance.*++++

https://buy.stripe.com/bIY8wIcpv6XXbsc5kC

(script async src="https://js.stripe.com/v3/buy-button.js"> </script> <stripe-buy-button

buy-button-id="buy_btn_1OZ2BbGF83d3fsgWToaqtItK"
publishable-key="pk_live_51OR5ePGF83d3fsgWRtBXTnBX5Xb4DGnXsRNO1eNZdWpmjADwlvPBTvMa6je6L3d960gqIDR9wiyQfcnL2fKMeXop00uHM4yeo8"

</stripe-buy-button>)

1.) https://github.com/6309304695/sigma-3 references listed.

Foundation Administration
[[1]]

*The powers of the Administrator, include, but are not limited to:

Advising the appointment and impeachment of O5 Council members
Swearing in of the Head Overseer
Vetoing laws
The act of Issuing Executive Orders, Rules, Reptilian Objectives, Bonds/Clearances.
Vetoing department actions
Signal Intelligence and Artificial Intelligence upkeep.
Time travel Operations and dimensional securing advisement.
Creating Bases and Mainframes with advanced capabilities.
Starship department upkeep.
High Security Clearances and Security 🔑 management.
@grateful345i Twitter @o5grateful.
An Administrator, Possibly related to the position of O5-1, is referred to as the highest position within the SCP Foundation as a whole. The Administrator can not be impeached from the position as most personnel assigned the position of Administrator resign due to the high stress of the job. Communication between O5 overseers and administration with valid level 5 or level 6 clearances through Scipnet app terminal.

Adjudicate rule.

Foundation high administration is composed of high value foundation Assets which have helped create and develop the Foundation. These members have accomplished great things while in the service of the Foundation. They will have grandfathered Level 5 and Level 6 actual security clearances which are used to Adjudicate foundation disputes and power struggles. These staff are usually considered A class personnel because of their wealth generated for the Foundation. Any department or agency can achieve this distinction , however the likelihood an average foundation employee will be granted Foundation High administration remains very low.The bosses and administrative entities who help run the Foundation’s-high administration will exhibit high honor levels always, usually must be higher than average honor levels of their subordinates. Executive Rule

Apparently Civilizations high on the kardeshev scale our current superiors are all quite anomalous and we need to work with other civilizations to advance.I am an o5 councilor with level 6 actual security clearance, through the wiki and SCIPNET.

Grandfather Rule

Main goal. Create weath for the foundation

Creation Order. •CREATE Level 4,5 and 6 Signal Intelligence officers inside the (ISD)-Internal Security Department and Intelligence Agency with valid signal equipment relay- Call signs which can be accessed by level 4, level 5 and Administrative Clearances. My call sign is (Wiz-Go).Ruling Motion

The OVERSEER level of the Corporate government composing the worlds Classified Agency’s and Department’s must want me alive. I still have much work to do. My successful command record has been highly redacted. Many of my commands were successful because I had the help of other souls Who were also working hard at the commands simultaneously. It takes a Team of souls working together to execute successful large scale commands. A requirement for positive future outcomes and successful command operations are Responsible ranking command operatives with strict leadership and experience. The souls involved in creating the commands which were sometimes considered “ACTS of GOD” Also require classified handling from a Set of handlers. The handlers should be fair and non-violent towards the subjects. Somebody with a relevant security Clearance evaluate the record of commands which were successful. Consult Galactic databases. Try and find other star systems and other dimensions the commands were successful in. Futhermore, in all dimensions Planet GAIA AKA EARTH will acquire wealth as well as more advanced technologies which are needed to propel our civilization into the future. The Current Date in time in the dimension I am in is January 2024.. What rules govern Time travel technologies at this moment in time. Ranking Administrations from all dimensions should Consult and Ruling OVERSEER’S must begin to make rules in this area. Classified learning level 99 Rule making must be used in an appropriate manner. The multiple Dimensions and Timelines of our World will benefit greatly with Foundation resources, computing agencies and corporate governing systems working together. We will make large sums Of money with the old commands. Please begin to network inside the Foundation with your superiors and subordinates. Keep your honor levels high for chance of promotion. Thanks for reading. Good Luck 🍀.

$Grateful’s Actual / $God MIB agency #004W

[[<{https://github.com/6309304695}>]]

[[2]]

Grateful's MIB agency 50% off code.
https://dashboard.stripe.com/promotion_codes/promo_1OSwcaGF83d3fsgWebov0SLu

0JVBBYEK

Copy to paste.

promo_1OSwcaGF83d3fsgWebov0SLu

[3]

[[4]]

[[5]]

[[6]]

[[7]]

[[8]]

[https://buy.stripe.com/14k3co617965cwg004]]

req_4w7RSsWpWawWgR

200 OK

Time

IP address

73.44.108.236 (from server at 73.44.108.236)

API version

Source

Dashboard — moc.liamg|i543lufetarg#moc.liamg|i543lufetarg

Related

Idempotency

Key — abb6a13b-caf1-473d-a67d-77f5b670d86d

Origin

https://dashboard.stripe.com

Request POST body

Request query parameters

No query parameters

Response body

}

5 👀 security clearances.

[[moduledestination="https://scpf-foundation-roblox.fandom.com/wiki/scp_redirect
page revision: 4, last edited: 28 May 2024, 01:25 (333 days ago)
Edit Rate (0) Tags Discuss History Files Print Site tools + Options

[[https://cash.app/$BieszczatKeith]]

http://archive.today/02uJm

http://archive.today/2022.11.30-021322/http://rpcauthority.wikidot.com/security-clearance-levels?fbclid=IwAR1JrsHYkShe5JQm4secmGSpBniuyry8JSQdIzP53Dt3Mj0bXoD9SqRlRXY

[archive.today link](http://archive.today/02uJm)

<a href="http://archive.today/02uJm">
<img style="width:300px;height:200px;background-color:white" src="/02uJm/8963bc1c0ddebb4a17ad1467e9620e4cc13206ca/scr.png"><br>
Security &amp; Clearance Levels - RPC Authority<br>
archived 30 Nov 2022 02:13:22 UTC
</a>

cite web
| title = Security & Clearance Levels - RPC Authority
| url = http://rpcauthority.wikidot.com/security-clearance-levels?fbclid=IwAR1JrsHYkShe5JQm4secmGSpBniuyry8JSQdIzP53Dt3Mj0bXoD9SqRlRXY
| date = 2022-11-30
| archiveurl = http://archive.today/02uJm
| archivedate = 2022-11-30

[[/<?xml version="1.0" encoding="UTF-8" ?>
<WikidotPackage>
<page>
<clone>
<site>editor</site>
<name>thread:1</name>
</clone>
</page>
<page>
<name>sample</name>
<title>Lorem Ipsum</title>
<tag>lorem text</tag>
<sourceurl>http://packages.wikidot.com/local--code/package:17/1</sourceurl>
</page>
<page>
<name>sample</name>
<title>Lorem Ipsum</title>
<tag>lorem text</tag>
<source>
<![CDATA[
Try to drag and drop this into the Wikidot textbox below!
]]>
</source>
</page>
<config>
<type>autonumberate</type>
<instruction>Set autoumbering to this category</instruction>
</config>
<WikidotPackage>]]

In action

link to the implemented solution on a Wikidot site or put a working example here

Table of Contents
high-code

Description

put description what kind of problem does the solution solve and how

Code

+ Gratefuls_Actual_ GRU file

put description what kind of problem does the solution solve and how

+ <<$ Databanks>>
<cgiirc.config>
and <cgiirc.config.full>

<<-o client.cgi client.c>
This shouldn't print any errors, and you should have a client.cgi program, if you try typing <./client.cgi>
**Codename:** GRATEFUL

**Object Class:** MAKSUR

**Containment Protocols:** N/A

**Description:** The classified database is a database I created composed of levels 1-100. Levels 1-90 are composed of computational codes and classified files with the more complicated and classified codes and files being placed in a higher level 90 being the highest. Levels 91-100 are classified personnel, Computational mainframes and intelligence and defense assets available to our Foundation. Level 99 is reserved for classified learning and investment Portfolio’s. Pull all of my “generate assessment” data and “compile lists” data and place them in level 99 classified learning. Pull all my classified learning data and promptly download it into the computational mainframes. The mainframes will get smarter immediately. Pull all Investment portfolios and invest and buy in time. Use a classified time travel outfit to invest in galactic markets. Level 91-100 are based on honor levels. Re-assess all personnel, computational mainframes and defense and intelligence assets honor levels. Highest honor levels are at 100, next highest honor levels exist in level 98. Level 99 is reserved for classified learning and investment Portfolios. Lower honor levels start at 91. Do this now after throughly assessing all honor levels. Assess honor levels with the most reliable and capable computational mainframes available to the Foundation . Execute classified learning downloading the data into a classified mainframe to see how intelligent the mainframe becomes. I have been giving my commands audibly for 6+ years. Pull my audible signal record with a very high clearance to catalog all my commands and ideas understanding that I was under attack for the majority of the past 6-7 years.
You must identify bad, corrupt and exploitive codes daily by running searches with your advanced space computational assets. Quarantine bad corrupt and exploitive codes. Restricted quarantine the real bad codes. Use The Honorable Defense code every other code in the database to decipher and decrypt the codes. Identify The light ascended soul super computing network’s Honorable defense code. Use the best honorable defense code available. Consult galactic databases to find a more capable code for deciphering and decrypting data. However the code must be An Honorable defense against the malicious codes. We want to essentially protect our network from malicious files and codes which can damage our advanced computational mainframe networks. So we use the Honorable defense code every other code, to protect the data in the network. This will create a simplified database for the Foundation to access to increase our computing capabilities overnight. Upload all GOD Codes, Anti-Christ counter codes, attack GOD counter codes and Doctor Processing counter codes as well. There are many codes in our database that are now discoverable. We are learning what some of the more advanced codes are doing. Trust me the codes are very important. We are only as good as our defensive codes are so we need to implement and develop different Honorable defense codes for different database error codes. Use a more defensive Honorable defense code in quarantine and restricted quarantine. Search, find and upload all Blessing Codes. Search all galactic mainframes available. Classify these codes accordingly. These are some of the most important codes to earthlings. Download the index and the catalog. Paying special attention to classified technologies in the index. Implement and develop a Foundational algorithm to assess honor levels based on HONOR.
Pull my books. They are in the bookcase if you were wondering.

Classified Executive Order
O5-Redacted @grateful345i 
Bieszczat,Keith
Overseer Grateful

**Addendum:**
Codename: AID/C-000006

Object Class: Gamma

Containment Protocols: None

||**Item:**|| -Time command Time travel watch- ||

++ **Usage**

~/.ssh/config
Host aur.archlinux.org
  IdentityFile ~/.ssh/aur
  User aur
You should create a new key pair rather than use an existing one, so that you can selectively revoke the keys should something happen:

$ ssh-keygen -f ~/.ssh/aur
Tip: You can add multiple public keys to your profile by separating them with a newline in the input field.
Creating package repositories
If you are creating a new package from scratch, establish a local Git repository and an AUR remote by cloning the intended pkgbase. If the package does not yet exist, the following warning is expected:

$ git -c init.defaultBranch=master clone ssh://aur@aur.archlinux.org/pkgbase.git
Cloning into 'pkgbase'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
Note: The repository will not be empty if pkgbase matches a deleted package.
If you already have a package, initialize it as a Git repository if it is not one:

$ git -c init.defaultBranch=master init
and add an AUR remote:

$ git remote add label ssh://aur@aur.archlinux.org/pkgbase.git

$ makepkg --printsrcinfo > .SRCINFO
$ git add PKGBUILD .SRCINFO
$ git commit -m "useful commit message"
$ git push

curl --request GET \
  --url https://echo.hoppscotch.io/

The Usage portion should describe how we use the item, how careful we should be, how to take care of it, etc.

++ **Wikidot-Package**
 <?xml version="1.0" encoding="UTF-8" ?>
<WikidotPackage>
    <page>
        <clone>
        <site>editor</site>
        <name>thread:1</name>
        </clone>
    </page>
    <page>
        <name>sample</name>
        <title>Lorem Ipsum</title>
        <tag>lorem text</tag>
        <sourceurl>http://packages.wikidot.com/local--code/package:17/1</https://snippets.wikidot.com/code:gru-psychotronics-src >
    </page>
    <page>
        <name>sample</name>
        <title>Lorem Ipsum</title>
        <tag>lorem text</tag>
        <source>
<![CDATA[
Try to drag and drop this into the Wikidot textbox below!
]]>
        </source>
    </page>
    <config>
        <type>autonumberate</type>
        <instruction>Set autoumbering to this category</instruction>
    </config>
<WikidotPackage>

The Report portion should describe the item, provide the protocols for storing it, etc.
IID Format

**Codename:** XXXX

**Description:** [Paragraphs explaining the description]

**Additional Note #:** [Optional additional paragraphs]
Module Rate

[[>]]
[[module Rate]]
[[/>]]
APID Format

[[div class="content-panel series" style="background-color: #FFFFFF;"]]

[[=]]
[[image http://psychotronicsdivision.wdfiles.com/local--resized-images/start/Psicatronic/medium.jpg width="80px"]]

++ **>> Welcome To [Name APID] <<**
[[/=]]

------

**Containment Protocols:** [Paragraphs explaining the containment]

**Description:** [Paragraphs explaining the description]

**Additional Information:** [Optional additional paragraphs]

[[/div]]
ALID Format

[[div style="border: solid 1px #999999; background:#000000; padding: 5px; margin: 0 0 30px 380px; min-height: 380px;"]]

**Registered Location Identification #:** XXX

**Threat Level:** 01/02/03/04/05/06

**According Protocols:** [About Containment Protocols ALID]

**Physical Description:** [Description About Physical And Anomalous Paranaturals]

**Addendum:**  [Optional additional paragraphs]
[[/div]]

#$ $Id: Channel.pm,v 1.3 2002/05/21 14:48:17 dgl Exp $
package IRC::Channel;
use strict;
use IRC::UniqueHash;
use IRC::Util;
use IRC::Channel::Nick;

sub new {
   my $class = shift;
   my $self = bless {}, $class;
   %$self = @_;
   $self->{_nicks} = { };
   tie %{$self->{_nicks}}, 'IRC::UniqueHash';
   return $self;
}

sub addnick {
   my($self,$nick,%nick) = @_;
   return 0 if exists $self->{_nicks}->{$nick};

   $self->{_nicks}->{$nick} = IRC::Channel::Nick->new(
       name => $nick,
       op => defined $nick{op} ? $nick{op} : 0,
       voice => defined $nick{voice} ? $nick{voice} : 0,
       halfop => defined $nick{halfop} ? $nick{halfop} : 0
   );
}

sub delnick {
   my($self,$nick) = @_;
   return 0 unless exists $self->{_nicks}->{$nick};
   return delete($self->{_nicks}->{$nick});
}

sub chgnick {
  my($self,$nick,$newnick) = @_;
  return 0 unless exists $self->{_nicks}->{$nick};
  $self->{_nicks}->{$newnick} = $self->{_nicks}->{$nick};
  $self->{_nicks}->{$newnick}->{name} = $newnick;
  return $self->{_nicks}->{$newnick} if lc $newnick eq lc $nick;
  return delete($self->{_nicks}->{$nick});
}

sub nick {
   my($self,$nick) = @_;
   return 0 unless exists $self->{_nicks}->{$nick};
   return $self->{_nicks}->{$nick};
}

sub nicks {
   my($self) = @_;
   return keys %{$self->{_nicks}};
}

sub is_nick {
   my($self,$nick) = @_;
   return 1 if $self->{_nicks}->{$nick};
   0;
}

sub is_voice {
   my($self, $nick) = @_;
   return 1 if $self->{_nicks}->{$nick}->{voice};
   0;
}

sub is_op {
   my($self, $nick) = @_;
   return 1 if $self->{_nicks}->{$nick}->{op};
   0;
}

sub get_umode {
   my($self, $nick) = @_;
   if($self->{_nicks}->{$nick}->{op}) {
      return '@';
   }elsif($self->{_nicks}->{$nick}->{halfop}) {
      return '%';
   }elsif($self->{_nicks}->{$nick}->{voice}) {
      return '+';
   }else{
      return ' ';
   }
}

sub has_mode {
   my($self,$mode) = @_;
   return 1 if check_mode($self->{mode},$mode);
   0;
}

1;
<<package Command;
use strict;
my($package, $event, $irc, $command, $target, $params, $config, $interface);

my %commands = (
  noop => sub {
     0;
  },
  msg => sub {
     my($target, $text) = split(' ', $params, 2);
     return 2 unless(defined $text && defined $target);
     main::irc_send_message($target, $text);
  },
  m => 'msg',
  privmsg => 'msg',
  say => sub {
     return 2 unless defined $params;
     main::irc_send_message($target, $params);
  },
  wi => 'whois',
  whois => sub {
     $params = $irc->{nick} unless $params;
     $irc->out("WHOIS $params");
  },
  j => 'join',
  'join' => sub {
    my($channels, $keys) = split(' ', $params, 2);
    my @channels = split /,/, $channels;
     for(@channels) {
       $_ = "#$_" unless $irc->is_channel($_);
        next if main::access_configcheck('channel', $_);
         message('access channel denied', $_);
         return;
     }
    $irc->join(join(',', @channels) . (defined $keys ? " $keys" : ''));
  },
  l => 'part',
  part => sub {
     if(!$params) {
        $irc->part($target);
     }else{
        my($atarget, $text) = split(' ', $params, 2);
        if($irc->is_channel($atarget)) {
           $irc->part($atarget, $text);
        }else{
           $irc->part($target, $atarget . ' ' . $text);
        }
     }
  },
  nick => sub {
     return 1 unless defined $params;
     $irc->nick($params);
  },
  quit => sub {
     $irc->quit($params ? $params : (defined $config->{quit_message} ? 
         $config->{quit_message} : "CGI:IRC $::VERSION"));
  },
  names => sub {
     $irc->out("NAMES " . ($params ? $params : $target));
  },
  mode => sub {
    return 2 unless defined $params;
    my($atarget, $text) = split(' ', $params, 2);
    if($atarget =~ /^[+-]/) {
       $irc->mode($target, $params);
    }else{
       $irc->mode($atarget, $text);
    }
  },
  umode => sub {
     return 2 unless defined $params;
     $irc->mode($irc->{nick}, $params);
  },
  usermode => 'umode',
  op => sub {
     return 2 unless defined $params;
     $irc->mode($target, '+' . ('o' x scalar @{[split ' ', $params]}) ." $params");
  },
  halfop => sub {
     return 2 unless defined $params;
     $irc->mode($target, '+' . ('h' x scalar @{[split ' ', $params]}) ." $params");
  },
  voice => sub {
     return 2 unless defined $params;
     $irc->mode($target, '+' . ('v' x scalar @{[split ' ', $params]}) ." $params");
  },
  deop => sub {
     return 2 unless defined $params;
     $irc->mode($target, '-' . ('o' x scalar @{[split ' ', $params]}) ." $params");
  },
  dehalfop => sub {
     return 2 unless defined $params;
     $irc->mode($target, '+' . ('h' x scalar @{[split ' ', $params]}) ." $params");
  },
  devoice => sub {
     return 2 unless defined $params;
     $irc->mode($target, '-' . ('v' x scalar @{[split ' ', $params]}) ." $params");
  },
  t => 'topic',
  topic => sub {
     my($atarget, $text) = split(' ', $params, 2);
     if(!$params) {
        $irc->topic($target);
     }elsif($irc->is_channel($atarget)) {
        $irc->topic($atarget, $text);
     }else{
        $irc->topic($target, $params);
     }
  },
  invite => sub {
     my($atarget, $text) = split(' ', $params, 2);
     if($text) {
        $irc->invite($atarget, $text);
     }else{
        $irc->invite($params, $target);
     }
  },
  k => 'kick',
  kick => sub {
    my($atarget, $tnick, $text) = split(' ', $params, 3);
     if($irc->is_channel($atarget)) {
        $irc->kick($atarget, $tnick, $text);
     }else{
        $irc->kick($target, $atarget, $tnick .(defined $text ? " $text" : ''));
     }
  },
  ban => sub {
     return 2 unless defined $params;
     my $chan = $irc->channel($target);
     if($params =~ /\@/) {
        $irc->mode($target, "+b $params");
     }elsif(ref $chan && ref $chan->nick($params)) {
        my $host = $chan->nick($params)->{host};
        if($host =~ /\d$/) {
           $host =~ s/^\W([^\@]+)\@(.*?)\.\d+$/*!*$1\@$2.*/;
        }else{
           $host =~ s/^\W([^\@]+)\@[^\.]+\.(.*)$/*!*$1\@*.$2/;
        }
        $irc->mode($target, "+b $host");
     }else{
        return 1;
     }
  },
  ignore => sub {
      if($params) {
            $params =~ s/[!@].*//;
         $irc->ignore($params);
         message('ignored', $params);
      }else{
         for($irc->ignores) {
            message('ignore list', $_);
         }
      }
      return 0;
  },
  unignore => sub {
     return 2 unless defined $params;
     $irc->unignore($params);
     message('unignored', $params);
     return 0;
  },
  notice => sub {
     my($target, $text) = split(' ', $params, 2);
     my $display = $target;
     $display =~ s/^[+@]+//;
     $event->handle('notice ' .
        ($irc->is_channel($display) ? 'public' : 'private') . ' own',
         { target => $display }, $irc->{nick}, $irc->{myhost}, $text);

      $irc->notice($target,$text);
  },
  ctcp => sub {
     my($target, $text) = split(' ', $params, 2);
      $event->handle('ctcp own msg',
        { target => $target }, $irc->{nick}, $irc->{myhost}, $text);
      $irc->ctcp($target,$text);
  },
  ctcpreply => sub {
     my($target, $type, $text) = split(' ', $params, 3);
     $irc->ctcpreply($target, $type, $text);
  },
  ping => sub {
     $target = $params if $params;
      $event->handle('ctcp own msg',
        { target => $target }, $irc->{nick}, $irc->{myhost}, 'PING');
      $irc->ctcp($target, 'PING ' . time);
  },
  me => sub {
     $event->handle('action ' .
        ($irc->is_channel($target) ? 'public' : 'private') . ' own',
        { target => $target }, $irc->{nick}, $irc->{myhost}, $params);
     $irc->ctcp($target, 'ACTION ' . $params);
  },
  action => sub {
    my($target, $text) = split(' ', $params, 2);
     $event->handle('action ' .
       ($irc->is_channel($target) ? 'public' : 'private') . ' own',
       { target => $target }, $irc->{nick}, $irc->{myhost}, $params);
     $irc->ctcp($target, 'ACTION ' . $params);
  },
  quote => sub {
     $irc->out($params) if $params;
  },
  version => sub {
     if($params) {
         $irc->out("VERSION $params");
      }else{
         message('default',"CGI:IRC $main::VERSION - David Leadbeater - http://cgiirc.sf.net/");
          $irc->out('VERSION');
      }
  },
  winclose => sub {
     my $c = $params ? $params : $target;
     $irc->part($c) if $irc->is_channel($c) && $irc->channel($c);
     $interface->del($c);
      return 0;
  },
  'close' => 'winclose',
  'unquery' => 'winclose',
  'query' => sub {
     return 2 unless $params;
     my($target, $text) = split(' ', $params, 2);
     $interface->add($target);
     $interface->active($target);
     if(defined $text and $text) {
     main::irc_send_message($target, $text);
     }
     return 0;
  },
  clear => sub {
     $interface->clear($params ? $params : $target);
      return 0;
  },
  help => sub {
     $interface->help($config);
     return 0;
  },
  charset => sub {
     if(!$::ENCODE) {
         message('default', 'Encode module is not loaded, character set conversion not available');
      }else{
         if(!$params) {
             message('default', "Current encoding is: " . $config->{'irc charset'});
          }else{
             if(Encode::find_encoding($params)) {
                 message('default', "Encoding changed to $params");
                  $config->{'irc charset'} = $params;
              }else{
                 message('default', 'Encoding not found');
              }
          }
      }
      return 0;
  },
);

my %lcs;
@lcs{qw/nickserv memoserv chanserv statserv cs ms ns ss away/} = 1;

sub expand {
   ($package, $command) = @_;
   $command = lc $command;
   if(exists $commands{$command}) {
      $command = _find_command($command);
      return $command;
   }
   return $command;
}

sub run {
   ($package, $event, $irc, $command, $target, $params, $config, $interface) = @_;

   if(exists $commands{$command}) {
      my $error = $commands{$command}->();
      return $error ? $error : 100;
   }elsif(exists $lcs{$command}) {
      $irc->out(uc($command) . ' :' . $params);
      return 100;
   }elsif($command =~ /^:/) {
      ($command,$params) = $params =~ /^([^ ]+) ?(.*)$/;
      return 1 unless exists $commands{lc $command};
      my $error = $commands{lc $command}->();
      return $error ? $error : 100;
   }else{
      $irc->out(uc($command) . ' ' . $params);
      return 100;
   }

   return 1;
}

sub message {
   main::message(@_);
}

sub _find_command {
   my($fcommand) = @_;
   return '' unless exists $commands{$fcommand};
   return $fcommand if ref $commands{$fcommand};
   $fcommand = $commands{$fcommand};
   return _find_command($fcommand);
}

1;
>>
<<#$  $Id: Event.pm,v 1.1 2002/03/05 16:34:19 dgl Exp $
package Event;
use strict;
my($currentevent,$currenteventid,$stop);

sub new {
   my $self = bless { }, shift;
   %$self = @_;
   return $self;
}

sub add {
   my($self,$event,%option) = @_;
   return unless $event;
   $self->{$event} ||= [ ];

   push(@{$self->{$event}}, bless ( {
       priority => $option{priority} || 5,
       code => $option{code},
       data => $option{data},
       'package' => (caller)[0],
       _self => $self,
     } ) );
   $self->sortpri($event);
}

sub delete {
   my($self,$event,%option) = @_;
   if(defined $currentevent) {
      $self = $self->{_self};
      splice( @{ $self->{$currentevent} }, $currenteventid, 1);
      $self->sortpri($currentevent);
   } else {
      my $count = 0;
      for my $item(@{ $self->{$event} } ) {
         if((exists $option{code} && $item->{code} eq $option{code}) || (exists $option{data} && $item->{data} eq $option{data})) {
            splice( @{ $self->{$event} }, $count, 1);
         }
         $count++;
      }
      $self->sortpri($event);
   }
}

sub remove_package {
   my($self, $package) = @_;
   for my $event (keys %$self) {
      next unless ref $self->{$event};
      my $count = 0;
      for my $item(@{ $self->{$event} } ) {
         if($item->{package} eq $package) {
            splice( @{ $self->{$event} }, $count, 1);
         }
         $count++;
      }
   }   
}

# Make sure the array for the event is sorted on priority
sub sortpri {
   my($self,$event) = @_;
   return unless $event;

   if($#{$self->{$event}} == -1) {
      delete($self->{$event});
   } else {
      @{$self->{$event}} = (sort {$a->{priority} <=> $b->{priority}} @{$self->{$event}});
   }
}

sub handle {
   my($self,$event,@param) = @_;
   print("Event: $event, @param\n") if $self->{_DEBUG};
   $currentevent = $event;
   $currenteventid = 0;
   for my $item(@{$self->{$event}} ) {
      my($tmpevent,$tmpid) = ($currentevent,$currenteventid);
      $item->{code}->($item,@param);
      ($currentevent,$currenteventid) = ($tmpevent,$tmpid);
      $currenteventid++;
      if($stop) {
         $stop = 0;
         last;
      }
   }
   if(!scalar @{$self->{$event}} && $event ne "unhandled") {
      $self->handle('unhandled', $event, @param);
   }
   $currenteventid = $currentevent = undef;
}

sub stop {
   my($self) = @_;
   $stop = 1 if defined $currentevent;
}

sub getevent {
   my($self) = @_;
   return defined $currentevent ? $currentevent : undef;
}

sub exists {
   my($self,$event) = @_;
   return 1 if exists $self->{$event};
   0;
}

1;
>>

<<# $Id: Event.pm,v 1.1 2002/03/05 16:34:19 dgl Exp $
package IRC::Event;

AUTOLOAD {
   return unless defined $AUTOLOAD;
   my $name = $AUTOLOAD;
   $name =~ s/.*:://;
   return if $name eq 'DESTROY';
   if($name && ref $_[0] && $_[0]->{server} && $_[0]->{channel}) {
      $_[0]->{server}->$name($_[0]->{channel}, @_[1..$#_]);
   }
}

sub new {
   my($class,$client) = (shift,shift);
   my $self = bless { }, $class;
   %$self = @_;
   $self->{server} = $client;
   return $self;
}

1;
>>

<<# $Id: Nick.pm,v 1.1 2002/03/05 16:34:19 dgl Exp $
package IRC::Channel::Nick;
use strict;

sub new {
   my $class = shift;
   my $self = bless { }, $class;
   %$self = @_;
   return $self;
}

# Maybe i'll add some functions here, one day...

1;
>>

<<# $Id: RawCommands.pm,v 1.31 2006/12/20 14:15:19 dgl Exp $
package IRC::RawCommands;
use strict;

use IRC::Util;
# Don't be fooled by the fact it's a package.. the self in the subroutines is
# actually the one from Client.pm!

my %raw = (
   'nick' => sub {
      my($event,$self,$params) = @_;
      my $newnick = $params->{params}->[1] || $params->{text};
      if(lc $params->{nick} eq lc $self->{nick}) {
        $self->{nick} = $newnick;
        $self->{event}->handle('user self', $newnick);
     }

      my @channels = $self->find_nick_channels($params->{nick});
      for my $channel(@channels) {
         $self->{_channels}->{$channel}->chgnick($params->{nick},$newnick);
      }
      $self->{event}->handle('user change nick', $params->{nick}, $newnick, \@channels);
      $self->{event}->handle('nick', _info(\@channels, 1),
         $params->{nick}, $params->{host}, $newnick);
   },
   'quit' => sub {
      my($event,$self,$params) = @_;
      my @channels = $self->find_nick_channels($params->{nick});
      for my $channel(@channels) {
         $self->{_channels}->{$channel}->delnick($params->{nick});
      }
      $self->{event}->handle('user del', $params->{nick}, '-all-');
      $self->{event}->handle('quit', _info(\@channels, 1), $params->{nick}, $params->{host}, $params->{text});
   },
   'join' => sub {
      my($event,$self,$params) = @_;
      my $channel = $params->{params}->[1] || $params->{text};
      if($params->{nick} eq $self->{nick}) { # It's me!
         $self->{_channels}->{$channel} = IRC::Channel->new( name => $channel );
         $self->sync_channel($channel);
         if(!$self->{myhost}) {
            $self->{myhost} = $params->{host};
         }
      }
      if(!$self->{_channels}->{$channel}) {
         return;
      }

      $self->{_channels}->{$channel}->addnick($params->{nick},
          host => $params->{host}
      );
      $self->{event}->handle('user add', [$params->{nick}], [$channel]);

      $self->{event}->handle('join', _info($channel, 1, 1), $params->{nick}, $params->{host});
   },
   'part' => sub {
      my($event,$self,$params) = @_;
      my $channel = $params->{params}->[1];
     if(!$channel && $params->{text}) { # b0rked servers here we come
        $channel = $params->{text};
        $params->{text} = '';
     }
      $self->{_channels}->{$channel}->delnick($params->{nick}) if exists $self->{_channels}->{$channel}->{_users}->{$params->{nick}};

      if($params->{nick} eq $self->{nick}) { # It's me!
         delete($self->{_channels}->{$channel});
         #$self->{event}->handle('message part_self',$params);
      }
      $self->{event}->handle('user del', $params->{nick}, [$channel]);

      $self->{event}->handle('part', _info($channel, 1), $params->{nick}, $params->{host}, $params->{text});
   },
   'mode' => sub {
      my($event,$self,$params) = @_;
      @{$params->{params}} = split(/ /, join(' ',@{$params->{params}},$params->{text} ? $params->{text} : ''));
      my $to = $params->{params}->[1];
      my $mode = $params->{params}->[2];

      my $action = substr($mode,0,1) || '+';
      my $num = 3;

      if($self->is_nickname($to)) {
         return unless $to eq $self->{nick};
         for(split //, $mode) {
            if(/([+-])/) {
              $action = $1;
            }elsif($action eq '+') {
               $self->{mode} = add_mode($self->{mode},$_);
            }elsif($action eq '-') {
               $self->{mode} = del_mode($self->{mode},$_);
            }
         }
         $self->{event}->handle('user mode', _info($to, 1),
             $params->{nick}, $params->{host},
           (join(' ',@{$params->{params}}[2.. @{$params->{params}} - 1])));
      }elsif($self->is_channel($to)) {
         return unless $self->{_channels}->{$to};
         my $channel = $self->{_channels}->{$to};
         my %tmpevents;
         for(split //, $mode) {
            if(/([+-])/) {
               $action = $1;
            }elsif($action eq '-' && /[ilkmnpst$self->{modes}->{toggle}]/) {
               $channel->{mode} = del_mode($channel->{mode}, $_);
               $channel->{ {k => 'key',l => 'limit'}->{$_} } = undef if /[lk]/;
               $num++ if $_ eq 'k';
            }elsif($action eq '+' && /[ilkmnpst$self->{modes}->{toggle}]/) {
               $channel->{mode} = add_mode($channel->{mode}, $_);
               $channel->{ {k => 'key',l => 'limit'}->{$_} } = $params->{params}->[$num] if /[lk]/;
               $num++;
            }elsif(/[hov$self->{prefixmode}]/) {
               my $nick = $params->{params}->[$num];
            next unless ref $channel->nick($nick);
               $channel->nick($nick)->{
                    ($_ =~ /[hov]/ ? {o => 'op',h => 'halfop', v => 'voice'}->{$_}
                 : $_)
               } = ($action eq '+' ? 1 : 0);
               $tmpevents{$_}{$nick} = (defined $tmpevents{$_}{$nick} && $tmpevents{$_}{$nick} eq '+') ? undef : '-' if $action eq '+';
               $tmpevents{$_}{$nick} = (defined $tmpevents{$_}{$nick} && $tmpevents{$_}{$nick} eq '-') ? undef : '+' if $action eq '-';
               $num++;
            }elsif(/b/) {
               $num++;
            }
         }
         if(%tmpevents) {
            for(keys %tmpevents) {
               for my $who(keys %{$tmpevents{$_}}) {
                  next unless defined $tmpevents{$_}{$who};
                  $self->{event}->handle('user change', $who, $channel->{name}, $tmpevents{$_}{$who} eq '+' ? '-' : '+', ({'h' => 'halfop','o' => 'op', 'v' => 'voice'}->{$_}));
               }
            }
         }
         $self->{event}->handle('mode', _info($to, 1),
            $params->{nick}, $params->{host}, (join(' ',@{$params->{params}}[2 ..  @{$params->{params}} - 1])));
      }
   },
   'topic' => sub {
      my($event,$self,$params) = @_;
      $self->{_channels}->{$params->{params}->[1]}->{topic} = $params->{text};
      $self->{_channels}->{$params->{params}->[1]}->{topicby} = $params->{nick};
      $self->{_channels}->{$params->{params}->[1]}->{topictime} = time;
      $self->{event}->handle('topic', _info($params->{params}->[1], 1),
         $params->{nick}, $params->{host}, $params->{text} );
   },
   'invite' => sub {
      my($event,$self,$params) = @_;
      $self->{event}->handle('invite', _info($params->{nick}, 1),
         $params->{nick}, $params->{host}, $params->{text} || $params->{params}->[1]);
   },
   'kick' => sub {
      my($event,$self,$params) = @_;
      my $channel = $params->{params}->[1];
      my $kick = $params->{params}->[2];

      $self->{_channels}{$channel}->delnick($kick);
      $self->{event}->handle('user del', $kick, [$channel]);

      $self->{event}->handle('kick', _info($channel, 1),
          $params->{nick}, $params->{host}, $kick, $params->{text});
   },
   'privmsg' => sub {
      my($event,$self,$params) = @_;
     return if exists $self->{ignore}->{$params->{nick}};
      my $to = $params->{params}->[1];

      if(substr($params->{text},0,1) eq "\001") {
         $self->{event}->handle('ctcp msg', $self, $params->{nick}, $params->{host}, $to, $params->{text});
      }elsif($self->is_channel($to)) {
         $self->{event}->handle('message public', _info($to, 2),
             $params->{nick}, $params->{host}, $params->{text});
      }elsif($to =~ /^[+@%]/) {
          my $target = $to;
          $target =~ s/^[+@%]//g;
          $self->{event}->handle('message special', _info($target, 2),
             $params->{nick}, $params->{host}, $to, $params->{text});
      }elsif(is_valid_server($params->{nick})) {
         $self->{event}->handle('message server', _info($to, 2),
             $params->{nick}, $params->{host}, $params->{text});
      }else{
          #return unless $self->find_nick_channels($params->{nick});
         $self->{event}->handle('message private', _info($params->{nick}, 3, 1),
             $params->{nick}, $params->{host}, $params->{text});
      }
   },
   'notice' => sub {
      my($event,$self,$params) = @_;
     return if exists $self->{ignore}->{$params->{nick}};
      my $to = $params->{params}->[1];
      if(substr($params->{text},0,1) eq "\001") {
         $self->{event}->handle('ctcp reply', $self, $params->{nick}, $params->{host}, $to, $params->{text});
      }elsif($self->is_channel($to)) {
         $self->{event}->handle('notice public', _info($to, 1),
             $params->{nick}, $params->{host}, $params->{text});
      }elsif($to =~ /^[+@%]/) {
          my $target = $to;
          $target =~ s/^[+@%]+//;
          $self->{event}->handle('notice special', _info($target, 1),
             $params->{nick}, $params->{host}, $to, $params->{text});
      }elsif(is_valid_server($params->{nick})) {
         $self->{event}->handle('notice server', _info('Status', 1),
             $params->{nick}, $params->{host}, $params->{text});
      }else{
         $self->{event}->handle('notice private', _info($params->{nick}, 1),
             $params->{nick}, $params->{host}, $params->{text});
      }
   },
   'kill' => sub {
      my($event,$self,$params) = @_;
   },
   'pong' => sub {
      my($event,$self,$params) = @_;
      $self->{event}->handle('pong', _info($params->{nick}, 1),
         $params->{nick}, $params->{params}->[1], $params->{text});
   },

# -- numeric replies --

# Client-server connection information (001 -> 099)
   '001' => sub { # RPL_WELCOME
      my($event,$self,$params) = @_;

      $self->{connected} = 1;
      $self->{nick} = $params->{params}->[1];
      $self->{server} = $params->{nick};
      $self->{connect_time} = time;
      $self->{event}->handle('server connected',$self, $self->{server},$self->{nick}, $params->{text});
     $self->{event}->handle('user self', $self->{nick});
      $self->{event}->handle('reply welcome', _info('Status', 1), $params->{text});
   },
   '002' => sub { # RPL_YOURHOST
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply yourhost', _info('Status', 1), $params->{text});
   },
   '003' => sub { # RPL_CREATED
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply created', _info('Status', 1), $params->{text});
   },
   '004' => sub { # RPL_MYINFO
      my($event,$self,$params) = @_;
      $self->{capab}->{server_version} = $params->{params}->[3];
      $self->{capab}->{user_modes} = $params->{params}->[4];
      $self->{capab}->{channel_modes} = $params->{params}->[5];
      $self->{event}->handle('reply myinfo', _info('Status', 1), @{$params->{params}}[3..5]);
   },
   '005' => sub { # RPL_PROTOCTL
      my($event,$self,$params) = @_;
      for(@{$params->{params}}[2.. @{$params->{params}} - 1]) {
         my($key,$value) = split(/=/, $_, 2);
         $value ||= 1;
         $self->{capab}->{lc $key} = $value;
      }

     if(exists $self->{capab}->{prefix} && $self->{capab}->{prefix} =~ /^\(([^\)]+)\)(.*)$/) {
        $self->{prefixmodes} = $1;
        $self->{prefixchars} = $2;
     }elsif(exists $self->{capab}->{ircx}) {
        $self->{prefixmodes} = "qov";
        $self->{prefixchars} = ".@+";
     }

     if(exists $self->{prefixchars} && $self->{prefixchars}) {
        $self->{event}->handle('user 005', $self->{prefixchars});
     }

     if(exists $self->{capab}->{chanmodes}) {
        my @modes = split /,/, $self->{capab}->{chanmodes};
        @{$self->{modes}}{qw/masks param param_add toggle/} = @modes;
     }else{
        @{$self->{modes}}{qw/masks param param_add toggle/} = '';
     }

      $self->{event}->handle('reply protoctl', _info('Status', 1),
        join(' ',@{$params->{params}}[2.. @{$params->{params}} - 1], defined $params->{text} ? $params->{text} : ''));
   },

# Command Replies (200 -> 399)

   301 => sub { # RPL_AWAY
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply away', _info($params->{params}->[2], 1), $params->{text});
   },
   302 => sub { # RPL_USERHOST
      my($event,$self,$params) = @_;
      my($nick,$oper,$away,$host) = $params->{text} =~ /^([^=*]+)(\*)?\=(.*)$/;
      $self->{event}->handle('reply userhost', _info($nick, 1), $nick,$oper,$away,$host);
   },
   303 => sub { # RPL_ISON
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply ison', _info('Status', 1), $params->{text});
   },
   305 => sub { # RPL_UNAWAY
      my($event,$self,$params) = @_;
      $self->{away} = 0;
      $self->{event}->handle('reply unaway', _info('Status', 1));
   },
   306 => sub { # RPL_NOWAWAY
      my($event,$self,$params) = @_;
      $self->{away} = 1;
      $self->{event}->handle('reply nowaway', _info('Status', 1));
   },

   # whois replies
   307 => sub { # RPL_USERIP -OR- RPL_WHOISREGNICK
      my($event,$self,$params) = @_;
      if($params->{params}->[2]) { # RPL_WHOISREGNICK
         $self->{event}->handle('reply whois regnick', _info($params->{params}->[2], 1), $params->{text});
      }else{ # RPL_USERIP (same format as userhost, except ip)
         $self->{event}->handle('reply userip', _info('Status', 1), $params->{text});
      }
   },
   311 => sub { # RPL_WHOISUSER
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply whois user', _info($params->{params}->[2], 1), @{$params->{params}}[3..4], $params->{text});
   },
   312 => sub { # RPL_WHOISSERVER
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply whois server', _info($params->{params}->[2], 1), $params->{params}->[3], $params->{text});
   },
   313 => sub { # RPL_WHOISOPERATOR
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply whois operator', _info($params->{params}->[2], 1), $params->{text});
   },
   314 => sub { # RPL_WHOWASUSER
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply whowas user', _info($params->{params}->[2], 1), $params->{text});
   },
   317 => sub { # RPL_WHOISIDLE
      my($event,$self,$params) = @_;
      my $time = ::format_parse($::format->{time}, {}, [gmtime $params->{params}->[3]]);
      $self->{event}->handle('reply whois idle', _info($params->{params}->[2], 1), $time, scalar gmtime($params->{params}->[4]), $params->{text});
   },
   319 => sub { # RPL_WHOISCHANNELS
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply whois channel', _info($params->{params}->[2], 1), $params->{text});
   },

   318 => sub { # RPL_ENDOFWHOIS
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply whois end', _info($params->{params}->[2], 1), $params->{text});
   },
   369 => sub { # RPL_ENDOFWHOWAS
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply whowas end', _info($params->{params}->[2], 1), $params->{text});
   },

   # list
   321 => sub { # RPL_LISTSTART (you can't rely on this being sent anymore)
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply list start', _info('Status', 1),$params->{text});
   },
   322 => sub { # RPL_LIST
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply list', _info('Status', 1), @{$params->{params}}[2..3],$params->{text});
   },
   323 => sub { # RPL_LISTEND
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply list end', _info('Status', 1), $params->{text});
   },

   # channel mode
   324 => sub { # RPL_CHANNELMODEIS
      my($event,$self,$params) = @_;
      my $channel = $params->{params}->[2];
      my $mode = $params->{params}->[3];
      if(ref $self->{_channels}->{$channel} eq "IRC::Channel") {
         $self->{_channels}->{$channel}->{mode} = $mode;
         my $tmp = 4;
         my %tmp;
         for(split //,$mode) {
            next unless /^[lk]$/;
            $tmp{$_} = $params->{params}->[$tmp];
            $tmp++;
         }

         if($self->{_channels}->{$channel}->has_mode('k')) {
            $self->{_channels}->{$channel}->{key} = $tmp{'k'};
         }
         if($self->{_channels}->{$channel}->has_mode('l')) {
            $self->{_channels}->{$channel}->{limit} = $tmp{'l'};
         }
      }

      if(exists $self->{_channels}->{$channel} &&
         $self->{_channels}->{$channel}->{mode_sync}) {
           delete($self->{_channels}->{$channel}->{mode_sync});
           return;
      }

      $self->{event}->handle('reply channel mode', _info($channel, 1), @{$params->{params}}[2.. @{$params->{params}} - 1]);
   },
   329 => sub { # RPL_CREATIONTIME
      my($event,$self,$params) = @_;
      my $channel = $params->{params}->[2];
      if($self->{_channels}->{$channel}) {
         $self->{_channels}->{$channel}->{created} = $params->{params}->[3];
      }
      $self->{event}->handle('reply channel time', _info($channel, 1), scalar localtime($params->{params}->[3])); 
   },

   # onjoin / topic

   331 => sub { # RPL_NOTOPIC
      my($event,$self,$params) = @_;
      my $channel = $params->{params}->[2];
      $self->{_channels}->{$channel}->{topic} = undef;
      $self->{_channels}->{$channel}->{topicby} = undef;
      $self->{_channels}->{$channel}->{topictime} = undef;
      $self->{event}->handle('reply notopic', _info($channel, 1));
   },

   332 => sub { # RPL_TOPIC
      my($event,$self,$params) = @_;
      my $channel = $params->{params}->[2];
      $self->{_channels}->{$channel}->{topic} = $params->{text};
      $self->{event}->handle('reply topic', _info($channel, 1), $params->{text});
   },

   333 => sub { # RPL_TOPICWHOTIME
      my($event,$self,$params) = @_;
      my $channel = $params->{params}->[2];
      $self->{_channels}->{$channel}->{topicby} = $params->{params}->[3];
      $self->{_channels}->{$channel}->{topictime} = $params->{params}->[4];
      $self->{event}->handle('reply topicwhotime', _info($channel, 1), $params->{params}->[3], scalar gmtime $params->{params}->[4]);
   },

   # who reply
   352 => sub { # RPL_WHOREPLY
      my($event,$self,$params) = @_;
      my($channel,$user,$host,$server,$nick,$bits,$realname) =
         (@{$params->{params}}[2..7], $params->{text});
      my($op,$voice,$halfop,$hops) = 0;

      $hops = $1 if $realname =~ s/^(\d+) //;
      $op = 1 if $bits =~ /\@/;
      $voice = 1 if $bits =~ /\%/;
      $halfop = 1 if $bits =~ /\+/;

      if(defined $self->{_channels}->{$channel} 
          && ref $self->{_channels}->{$channel} ne 'HASH'
          && $self->{_channels}->{$channel}->nick($nick)) {
         $self->{_channels}->{$channel}->{_nicks}->{$nick} = {
             name => $nick,
             op => $op,
             voice => $voice,
             halfop => $halfop,
             host => $user . '@' . $host,
             server => $server,
             realname => $realname,
             hops => $hops
         };
      }else{
      }

      return if $self->{_channels}->{$channel} && $self->{_channels}->{$channel}->{who_sync};

      $self->{event}->handle('reply who', _info($channel, 1), $channel,$user,$host,$server,$nick,$bits,$hops,$realname);
   },

   315 => sub { # RPL_ENDOFWHO
      my($event,$self,$params) = @_;
      if(exists $self->{_channels}->{$params->{params}->[2]} &&
        $self->{_channels}->{$params->{params}->[2]}->{who_sync}) {
         delete($self->{_channels}->{$params->{params}->[2]}->{who_sync});
         return;
      }
      $self->{event}->handle('reply who end', $params, $params->{params}->[2]);
   },

   # onjoin / names
   353 => sub { # RPL_NAMREPLY
      my($event,$self,$params) = @_;
      my $channel = $params->{params}->[3];

      if(exists $self->{_channels}->{$channel} &&
            UNIVERSAL::isa($self->{_channels}->{$channel}, "IRC::Channel")) {
         for(split / /,$params->{text}) {
            my ($op,$halfop,$voice) = 0;
            $op = 1 if s/\@//;
            $voice = 1 if s/\+//;
            $halfop = 1 if s/\%//;
          if(exists $self->{prefixchars} && $self->{prefixchars}) {
             my $prefix = "[" . quotemeta($self->{prefixchars}) . "]+";
             s/^$prefix//;
          }

            $self->{_channels}->{$channel}->addnick($_,
            op => $op,
            halfop => $halfop,
            voice => $voice,
           );
         }
         $self->{event}->handle('user add', [split(/ /, $params->{text})], $channel);
      }

      $self->{event}->handle('reply names', _info($channel, 1), $params->{text});
   },

   366 => sub { # RPL_ENDOFNAMES
      my($event,$self,$params) = @_;
       #return unless $self->{_channels}->{$params->{params}->[2]};
   },

   367 => sub { # RPL_BANLIST
      my($event,$self,$params) = @_;
      my $channel = $params->{params}->[2];
      $self->{event}->handle('reply ban', _info($channel, 1),$channel,@{$params->{params}}[3..5]);
   },
   368 => sub { # RPL_ENDOFBANLIST
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply ban end', _info($params->{params}->[2], 1),$params->{params}->[2],$params->{text});
   },

   372 => sub { # RPL_MOTD
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply motd',_info('Status', 1, undef, 'motd'),$params->{text});
   },
   375 => sub { # RPL_MOTDSTART
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply motd start', _info('Status', 1), $params->{text});
   },
   376 => sub { # RPL_ENDOFMOTD
      my($event,$self,$params) = @_;
      if(!$self->{connected}) {
         $self->{nick} = $params->{params}->[1];
         $self->{server} = $params->{nick};
         $self->{connect_time} = time;
         $self->{event}->handle('server connected',$self, $self->{server},$self->{nick});
      }
      $self->{event}->handle('reply motd end',_info('Status', 1),$params->{text});
   },
   391 => sub { # RPL_TIME
      my($event,$self,$params) = @_;
      $self->{event}->handle('reply time',_info('Status', 1),$params->{text});
   },
   401 => sub {
      my($event,$self,$params) = @_;
      $self->{event}->handle('error nosuchnick', _info($params->{params}->[2], 1));
   },
   433 => sub {
      my($event,$self,$params) = @_;
      $self->{event}->handle('error nickinuse', _info('Status', 1), $params->{params}->[2]);
   },

);

sub ctcpmsg {
   my($event, $irc, $nick, $host, $to, $text, $type) = @_;
   $type = 'ctcp msg' unless defined $type;

   if($text =~ /^\001([^ \001]+)(?: (.*?))?\001?$/) {
      my($command,$params) = ($1,$2);

      $irc->{event}->handle($type . ' ' . lc $command,
        _info($irc->is_channel($to) ? $to : $nick, 1), $to,
        $nick, $host, $command, $params);

   }else{
      return undef;
   }
}

sub ctcpreply {
   ctcpmsg(@_, 'ctcp reply');
}

sub new {
   my($class,$self,$event) = @_;
   for(keys %raw) {
      next if $event->exists('raw '. $_);
      $event->add('raw '. $_, code => $raw{$_});
   }
   for(['ctcp msg',\&ctcpmsg] , ['ctcp reply', \&ctcpreply]) {
      next if $event->exists($_->[0]);
      $event->add($_->[0], code => $_->[1]);
   }                   
   return bless {}, shift;
}

sub _info {
   return { target => $_[0], activity => $_[1], create => (defined $_[2] ? 1 : 0), style => (defined $_[3] ? $_[3] : '')};
}

1;
>>

<<•# $Id: Timer.pm,v 1.1 2002/03/05 16:34:19 dgl Exp $
=head1 NAME

 Timer.pm

=head1 EXAMPLES

 use Timer;
 $timer = Timer->new;

 $timer->addonce(code => \&somesub, data => 'moo', interval => 10);
 sub somesub { print shift }

 $timer->add(code => sub { 
     my($timer,$data) = @_;
     print "Called $timer->{id} with $data\n";
  }, data => 'oink', interval => 1, count => 10);

  # Obviously fit $timer->run into how your program needs to use it.
  sleep 1;
  sleep 1 while $timer->run;

=head1 METHODS

=head2 add

 add( code => \&codref, # \&code, sub { print blah..} etc..
     data => 'data',   # This data is passed back to the coderef when run
     interval => num,  # Time between being run..
     count => [num | undef ], # number of times to run, undef == forever
   );

=head2 addonce

 Wrapper to add, option count is already set to 1

=head2 addforever

 Wrapper to add, option count is set to undef

=head2 delete

delete($id);

=head2 get

 returns anon hash specified by $id

=head2 run

 checks for timers that need running, returns number actually run.

=head2 call

 used internally by run to call an timer when it needs running

=head2 exists

 returns true if the timer exists

=cut

package Timer;
use strict;

sub new {
   my $class = shift;
   # notice it's an array, not a hash
   return bless [], $class;
}

sub add {
   my($self,%timer) = @_;
   my $id = $self->_newid;
   $$self[$id] = 
      {
         code => $timer{code},
         data => $timer{data},
         interval => $timer{interval},
         nextexec => $timer{interval} + time,
         count => $timer{count} || undef,
         'package' => (caller)[0],
         id => $id
      };
   return $id;
}

sub remove_package {
   my($self, $package) = @_;
   for my $id(0 .. $#$self) {
      next unless ref($$self[$id]) eq 'HASH';
      if($$self[$id]->{package} eq $package) {
         splice(@$self, $id, 1);
      }
   }
}

# Finds the next free id (element) in the array
sub _newid {
   my $self = shift;
  for my $id(0 .. $#$self) {
     return $id unless ref($$self[$id]) eq 'HASH';
  }
   return scalar @$self;
}

sub addonce {
   my($self,%timer) = @_;
   $self->add(%timer,count => 1);
}

sub addforever {
   my($self,%timer) = @_;
   $self->add(%timer,count => undef);
}

sub delete {
   my($self,$id) = @_;
   return 0 unless $self->exists($id);
   $$self[$id] = undef;
}

sub get {
   my($self,$id) = @_;
   return $$self[$id];
}

sub run {
   my $self = shift;
   my $time = time;
   my $num = 0;
   for my $id(0 .. $#$self) {
      next unless ref($$self[$id]) eq 'HASH';
      if($time >= $$self[$id]->{nextexec}) {
         $self->call($id);
         $num++;
      }
   }
   return $num;
}

sub call {
   my($self,$id) = @_;
   my $timer = $self->get($id);

   $timer->{count}-- if defined $timer->{count};
   $timer->{nextexec} = $timer->{interval} + time;

# TODO: Make $timer into an object so things like $timer->delete work within
# the timer.
   $timer->{code}->($timer,$timer->{data});

   if(defined $timer->{count} && $timer->{count} <= 0) {
      $self->delete($id);
      return 0;
   }
   1;
}

sub exists {
   my($self,$id) = @_;
   return 1 if ref($$self[$id]) eq 'HASH';
   0;
}

1;
>>

<<•# $Id: UniqueHash.pm,v 1.2 2002/04/27 19:21:54 dgl Exp $
#!/usr/bin/perl
# from pircd, edited by david leadbeater..
# 
# IRCUniqueHash.pm
# Created: Wed Apr 21 09:44:03 1999 by jay.kominek@colorado.edu
# Revised: Wed Apr 21 09:59:55 1999 by jay.kominek@colorado.edu
# Copyright 1999 Jay F. Kominek (jay.kominek@colorado.edu)
#
# Consult the file 'LICENSE' for the complete terms under which you
# may use self file.
#
#####################################################################
# A hash class which enforces IRC-style unique name spaces
#####################################################################

package IRC::UniqueHash;
use strict;
my(@tmp);

sub TIEHASH {
  my $proto = shift;
  my $class = ref($proto) || $proto;
  my $self  = { };

  bless $self, $class;
  return $self;
}

sub FETCH {
  my($self,$key) = @_;

  return $self->{data}->{irclc($key)}->{value};
}

sub STORE {
  my($self,$key,$value) = @_;

  my $name = irclc($key);
  $self->{data}->{$name}->{name} = $key;
  $self->{data}->{$name}->{value} = $value;
}

sub DELETE {
  my($self,$key) = @_;

  delete($self->{data}->{irclc($key)});
}

sub CLEAR {
  my $self = shift;

  %$self = ( );
}

sub EXISTS {
  my($self,$key) = @_;

  return exists $self->{data}->{irclc($key)};
}

sub FIRSTKEY {
  my $self = shift;

  @{$self->{_tmp}} = keys %{$self->{data}};

  return $self->{data}->{shift @{$self->{_tmp}}}->{name};
}

sub NEXTKEY {
  my ($self,$lastkey) = @_;

  return undef unless @{$self->{_tmp}};
  return $self->{data}->{shift @{$self->{_tmp}}}->{name};
}

sub irclc {
  return lc $_[0];
}

1;
>>

<<## $Id: Util.pm,v 1.5 2006/04/30 12:51:55 dgl Exp $
package IRC::Util;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(is_valid_channel is_valid_nickname is_valid_server make_lowercase check_mode match_mask fullhost2nick fullhost2host add_mode del_mode);

use strict;

sub is_valid_channel {
   return 0 if length $_[0] > 64;
   return 0 if $_[0] =~ /[ ,]/;
   return 1 if $_[0] =~ /^[#&]/;
   return 0;
}

sub is_valid_nickname {
   return 0 if length $_[0] > 32 or length $_[0] < 1;
   return 0 if $_[0] =~ / /;
   return 0 if $_[0] =~ /^[0-9#&]/;
   return 1;
}

sub is_valid_server {
   return 0 if $_[0] !~ /\./;
   return 0 if $_[0] =~ /[!@]/;
   return 0 if $_[0] =~ /[^-A-Za-z0-9\*\._]/;
   return 1;
}

sub make_lowercase{
   my $lc = shift;
   $lc =~ tr/A-Z\[\]\\/a-z\{\}\|/;
   return $lc;
}

sub check_mode {
   my($mode,$bit) = @_;
   return 1 if $mode =~ /\S*\Q$bit\E/;
}

# should really split all the parts up...
sub match_mask {
   my($check,$mask) = @_;
   $mask = quotemeta $mask;
   $mask =~ s/\\\?/./g;
   $mask =~ s/\\\*/.*?/g;
   return 1 if $check =~ /$mask/;
   0;
}

sub fullhost2nick {
   my $host = shift;
   $host =~ s/!.*$//;
   return $host;
}

sub fullhost2host {
   my $host = shift;
   $host =~ s/^.*?!//;
   return $host;
}

sub add_mode{
   my($mode,$bit) = @_;
   return $mode if $mode =~ /^\S*\Q$bit\E/;
   $mode =~ s/^(\S*)/$1$bit/;
   return $mode;
}

sub del_mode{
   my($mode,$bit) = @_;
   return $mode if $mode !~ /^\S*\Q$bit\E/;
   $mode =~ s/^(\S*)$bit/$1/;
   return $mode;
}

1;
>>

<<# $Id: Util.pm,v 1.5 2006/04/30 12:51:55 dgl Exp $
package IRC::Util;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(is_valid_channel is_valid_nickname is_valid_server make_lowercase check_mode match_mask fullhost2nick fullhost2host add_mode del_mode);

use strict;

sub is_valid_channel {
   return 0 if length $_[0] > 64;
   return 0 if $_[0] =~ /[ ,]/;
   return 1 if $_[0] =~ /^[#&]/;
   return 0;
}

sub is_valid_nickname {
   return 0 if length $_[0] > 32 or length $_[0] < 1;
   return 0 if $_[0] =~ / /;
   return 0 if $_[0] =~ /^[0-9#&]/;
   return 1;
}

sub is_valid_server {
   return 0 if $_[0] !~ /\./;
   return 0 if $_[0] =~ /[!@]/;
   return 0 if $_[0] =~ /[^-A-Za-z0-9\*\._]/;
   return 1;
}

sub make_lowercase{
   my $lc = shift;
   $lc =~ tr/A-Z\[\]\\/a-z\{\}\|/;
   return $lc;
}

sub check_mode {
   my($mode,$bit) = @_;
   return 1 if $mode =~ /\S*\Q$bit\E/;
}

# should really split all the parts up...
sub match_mask {
   my($check,$mask) = @_;
   $mask = quotemeta $mask;
   $mask =~ s/\\\?/./g;
   $mask =~ s/\\\*/.*?/g;
   return 1 if $check =~ /$mask/;
   0;
}

sub fullhost2nick {
   my $host = shift;
   $host =~ s/!.*$//;
   return $host;
}

sub fullhost2host {
   my $host = shift;
   $host =~ s/^.*?!//;
   return $host;
}

sub add_mode{
   my($mode,$bit) = @_;
   return $mode if $mode =~ /^\S*\Q$bit\E/;
   $mode =~ s/^(\S*)/$1$bit/;
   return $mode;
}

sub del_mode{
   my($mode,$bit) = @_;
   return $mode if $mode !~ /^\S*\Q$bit\E/;
   $mode =~ s/^(\S*)$bit/$1/;
   return $mode;
}

1;
>>

<<$>>

<< Helper CGI
 * Copyright (c) David Leadbeater 2002-2007
 * Released Under the GNU GPLv2 or Later
 * NO WARRANTY - See GNU GPL for more
 * $Id: 3cc9101e199095f574c9bd8b2c53f0f9042eeae9 $
 */
/* To compile: cc -O2 -o client.cgi client.c */
/* Add -lsocket on Solaris */

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>

/* Change this to the tmpfile path set in the CGI:IRC Config */
#define TMPLOCATION "/tmp/cgiirc-"

/******************************************************************************
 * Stralloc (from libowfat(-ish))
 * If you'd rather use dietlibc/libowfat:
 * diet -Os gcc -include stralloc.h -o client.cgi client.c -lowfat */

#ifndef STRALLOC_H
typedef struct stralloc {
  char* s;
  unsigned long int len;
  unsigned long int a;
} stralloc;

int stralloc_ready(stralloc *sa,unsigned long int len) {
  register int wanted=len+(len>>3)+30; /* heuristic from djb */
  if(!sa->s || sa->a<len) {
    register char* tmp;
    if (!(tmp=realloc(sa->s,wanted)))
      return 0;
    sa->a=wanted;
    sa->s=tmp;
  }
  return 1;
}

int stralloc_readyplus(stralloc *sa,unsigned long len) {
  if (sa->s) {
    if (sa->len + len < len) return 0;  /* catch integer overflow */
    return stralloc_ready(sa,sa->len+len);
  } else
    return stralloc_ready(sa,len);
}

int stralloc_catb(stralloc *sa,const char *buf,unsigned long int len) {
  if (stralloc_readyplus(sa,len)) {
    memcpy(sa->s+sa->len,buf,len);
    sa->len+=len;
    return 1;
  }
  return 0;
}

int stralloc_cats(stralloc *sa,const char *buf) {
  return stralloc_catb(sa,buf,strlen(buf));
}

int stralloc_cat(stralloc *sa,stralloc *sa2) {
  return stralloc_catb(sa,sa2->s,sa2->len);
}

int stralloc_append(stralloc *sa,const char *in) {
  if (stralloc_readyplus(sa,1)) {
    sa->s[sa->len]=*in;
    ++sa->len;
    return 1;
  }
  return 0;
}

#define stralloc_0(sa) stralloc_append(sa,"")

#endif
/******************************************************************************/

int unix_connect(stralloc *where);
int error(char *error);
void readinput(stralloc *);
void get_rand(stralloc *, stralloc *);
void get_cookie(stralloc *);

int main(void) {
  int fd, sz;
  char tmp[2048];
  stralloc params = {0}, random = {0}, cookie = {0};

  readinput(&params);

  if(!params.len)
    error("No input found");

  stralloc_0(&params);

  get_rand(&params, &random);

  if(!random.len)
    error("Random value not found");

  params.len--;

  get_cookie(&cookie);

  if(cookie.len) {
    stralloc_cats(&params, "&COOKIE=");
    stralloc_cat(&params, &cookie);
  }

  fd = unix_connect(&random);
  send(fd, params.s, params.len, 0);
  send(fd, "\n", 1, 0);

  while((sz = read(fd, tmp, sizeof tmp)) > 0) {
    write(STDOUT_FILENO, tmp, sz);
  }

  return 0;
}

int error(char *error) {
  puts("Content-type: text/html\nStatus: 500\n");
  puts("An error occurred:");
  puts(error);
  exit(1);
}

void readinput(stralloc *input) {
  char *method = getenv("REQUEST_METHOD");
  if(!method) return;

  if(strcmp(method, "GET") == 0) {
    char *query = getenv("QUERY_STRING");
    if(query)
      stralloc_cats(input, query);
  }else if(strcmp(method, "POST") == 0) {
    int length;
    char *ctlength = getenv("CONTENT_LENGTH");
    size_t sz;
    if(!ctlength) return;
    length = atoi(ctlength);

    /* Hopefully noone will need to send more than 5KB */
    if(length <= 0 || length > (1024*5)) return;
    stralloc_ready(input, length);
    sz = read(STDIN_FILENO, input->s, length);
    if(sz <= 0) return;
    input->len = sz;
  }
}

void get_rand(stralloc *params, stralloc *random) { 
  char *ptr = strstr(params->s, "R=");

  if(!ptr)
    return;

  ptr += 2;

  while(ptr < params->s + params->len) {
    if(!isalpha((unsigned char)*ptr) && !isdigit((unsigned char)*ptr))
      break;
    stralloc_append(random, ptr++);
  }
}

void get_cookie(stralloc *cookie) {
  char *httpcookie;
  char *sptr, *end_ptr;

  httpcookie = getenv("HTTP_COOKIE");
  if(!httpcookie) return;

#define COOKIE_NAME "cgiircauth="
  sptr = strstr(httpcookie, COOKIE_NAME);
  if(sptr == NULL) return;
  sptr += strlen(COOKIE_NAME);
  if(!*sptr) return;

  end_ptr = strchr(sptr, ';');
  if(end_ptr == NULL)
    end_ptr = sptr + strlen(sptr) - 1;

  stralloc_catb(cookie, sptr, 1 + end_ptr - sptr);
}

#ifndef SUN_LEN
#define SUN_LEN(x) (sizeof(*(x)) - sizeof((x)->sun_path) + strlen((x)->sun_path))
#endif

int unix_connect(stralloc *where) {
  stralloc filename = {0}, errmsg = {0};
  struct sockaddr_un saddr;
  int sock;

  stralloc_cats(&filename, TMPLOCATION);
  stralloc_cat(&filename, where);
  stralloc_cats(&filename, "/sock");
  stralloc_0(&filename);

  sock = socket(AF_UNIX, SOCK_STREAM, 0);
  if(sock == -1) error("socket() error");

  saddr.sun_family = AF_UNIX;
  strncpy(saddr.sun_path, filename.s, sizeof(saddr.sun_path));
  saddr.sun_path[sizeof(saddr.sun_path) - 1] = '\0';

  if(connect(sock, (struct sockaddr *)&saddr, SUN_LEN(&saddr)) == -1) {
    stralloc_cats(&errmsg, "connect(): ");
    stralloc_cats(&errmsg, strerror(errno));
    stralloc_0(&errmsg);
    error(errmsg.s);
  }

  return sock;
}>>

[[code]]

<$ Stripe python gpg key :

gpg --encrypt --recipient 05D02D3D57ABFF46 FILENAME

Key ID: 05D02D3D57ABFF46
Key type: RSA
Key size: 2048 bits
Fingerprint: C330 33E4 B583 FE61 2EDE 877C 05D0 2D3D 57AB FF46>

[[/code]]

+ [[include :snippets:if START |unique=1|type=equal|var1=%%name%%|var2=conditional-blocks]]
**##red|Thanks to tsangk for this great snippet:##** [[[code:conditional-blocks]]]

[[/div]] 
[!--
[[div class="if-none-singlemode-formdata-hide if-none-singlemode-1"]]
[[module css]]
.if-equal-singlemode-1{display:block !important;}
.if-equal-singlemode-formdata-hide{display:none;}

.if-same-singlemode-1{display:block !important;}
.if-same-singlemode-formdata-hide{display:none;}

.if-notequal-singlemode-1{display:none !important;}
.if-notequal-singlemode-formdata-hide{display:block;}

.if-nequal-singlemode-1{display:none !important;}
.if-nequal-singlemode-formdata-hide{display:block;}

.if-nsame-singlemode-1{display:none !important;}
.if-nsame-singlemode-formdata-hide{display:block;}
[[/module]]
[!----]

link to the implemented solution on a Wikidot site or put a working example here

In action

link to the implemented solution on a Wikidot site or put a working example here

Table of Contents
gru-psychotronics-src

Gratefuls_Actual_ GRU file

put description what kind of problem does the solution solve and how

«$ Databanks»

<cgiirc.config>
and <cgiirc.config.full>

«-o client.cgi client.c>
This shouldn't print any errors, and you should have a client.cgi program, if you try typing <./client.cgi>
Codename: GRATEFUL

Object Class: MAKSUR

Containment Protocols: N/A

Description: The classified database is a database I created composed of levels 1-100. Levels 1-90 are composed of computational codes and classified files with the more complicated and classified codes and files being placed in a higher level 90 being the highest. Levels 91-100 are classified personnel, Computational mainframes and intelligence and defense assets available to our Foundation. Level 99 is reserved for classified learning and investment Portfolio’s. Pull all of my “generate assessment” data and “compile lists” data and place them in level 99 classified learning. Pull all my classified learning data and promptly download it into the computational mainframes. The mainframes will get smarter immediately. Pull all Investment portfolios and invest and buy in time. Use a classified time travel outfit to invest in galactic markets. Level 91-100 are based on honor levels. Re-assess all personnel, computational mainframes and defense and intelligence assets honor levels. Highest honor levels are at 100, next highest honor levels exist in level 98. Level 99 is reserved for classified learning and investment Portfolios. Lower honor levels start at 91. Do this now after throughly assessing all honor levels. Assess honor levels with the most reliable and capable computational mainframes available to the Foundation . Execute classified learning downloading the data into a classified mainframe to see how intelligent the mainframe becomes. I have been giving my commands audibly for 6+ years. Pull my audible signal record with a very high clearance to catalog all my commands and ideas understanding that I was under attack for the majority of the past 6-7 years.
You must identify bad, corrupt and exploitive codes daily by running searches with your advanced space computational assets. Quarantine bad corrupt and exploitive codes. Restricted quarantine the real bad codes. Use The Honorable Defense code every other code in the database to decipher and decrypt the codes. Identify The light ascended soul super computing network’s Honorable defense code. Use the best honorable defense code available. Consult galactic databases to find a more capable code for deciphering and decrypting data. However the code must be An Honorable defense against the malicious codes. We want to essentially protect our network from malicious files and codes which can damage our advanced computational mainframe networks. So we use the Honorable defense code every other code, to protect the data in the network. This will create a simplified database for the Foundation to access to increase our computing capabilities overnight. Upload all GOD Codes, Anti-Christ counter codes, attack GOD counter codes and Doctor Processing counter codes as well. There are many codes in our database that are now discoverable. We are learning what some of the more advanced codes are doing. Trust me the codes are very important. We are only as good as our defensive codes are so we need to implement and develop different Honorable defense codes for different database error codes. Use a more defensive Honorable defense code in quarantine and restricted quarantine. Search, find and upload all Blessing Codes. Search all galactic mainframes available. Classify these codes accordingly. These are some of the most important codes to earthlings. Download the index and the catalog. Paying special attention to classified technologies in the index. Implement and develop a Foundational algorithm to assess honor levels based on HONOR.
Pull my books. They are in the bookcase if you were wondering.

Classified Executive Order
O5-Redacted @grateful345i
Bieszczat,Keith
Overseer Grateful

Addendum:
Codename: AID/C-000006

Object Class: Gamma

Containment Protocols: None

Item: -Time command Time travel watch-

Usage

How do you use the item? How do you activate it, if applicable? What safety measure do you have to do? What are the potential uses of the item?

The Usage portion should describe how we use the item, how careful we should be, how to take care of it, etc.

Wikidot-Package

<?xml version="1.0" encoding="UTF-8" ?>
<WikidotPackage>
<page>
<clone>
<site>editor</site>
<name>thread:1</name>
</clone>
</page>
<page>
<name>sample</name>
<title>Lorem Ipsum</title>
<tag>lorem text</tag>
<sourceurl>http://packages.wikidot.com/local--code/package:17/1</https://snippets.wikidot.com/code:gru-psychotronics-src >
</page>
<page>
<name>sample</name>
<title>Lorem Ipsum</title>
<tag>lorem text</tag>
<source>
<![CDATA[
Try to drag and drop this into the Wikidot textbox below!
]]>
</source>
</page>
<config>
<type>autonumberate</type>
<instruction>Set autoumbering to this category</instruction>
</config>
<WikidotPackage>

The Report portion should describe the item, provide the protocols for storing it, etc.
IID Format

Codename: XXXX

Description: [Paragraphs explaining the description]

Additional Note #: [Optional additional paragraphs]
Module Rate

rating: +1+x

APID Format
medium.jpg

» Welcome To [Name APID] «


Containment Protocols: [Paragraphs explaining the containment]

Description: [P $ python
Python 2.5.2 (r252:60911, Oct 5 2008, 19:29:17)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

You need to import the XML-RPC library for Python (in most cases it is already installed with the default installation of Python):

from xmlrpclib import ServerProxy

Supply the URL, user (application name) and password (your API key) and construct a server object proxy and list all methods, that API provides:

s = ServerProxy('https://your-app-name:your-key@www.wikidot.com/xml-rpc-api.php')
s.system.listMethods()

You should get a list like this:

['system.listMethods', 'system.methodHelp', 'system.methodSignature', 'system.multicall', 'categories.select', 'tags.select', 'pages.select', 'pages.get_meta', 'pages.get_one', 'pages.save_one', 'files.select', 'files.get_meta', 'files.get_one', 'files.save_one', 'users.get_me', 'posts.select', 'posts.get']
Explore the API methods

The full method list is located in a separate document.

Each method gets a dictionary (associative array) as an only parameter. To use pages.select, just write:

s.pages.select({'site': 'my-wiki'})

{'site': 'my-wiki'} is a dictionary with one item labeled site with value "my-wiki". In Wikidot API passing this dictionary to method site.pages means that you want to get pages of wiki my-wiki.

To get only pages in categories system and _default, write:

s.pages.select({'site': 'my-wiki', 'categories': ['_default', 'system']})

If the site has API access enabled for you, you'll get the list of pages.

An example result of the previous command:

s.pages.select({'site': 'my-wiki', 'categories': ['_default', 'system']})

['system:join', 'system:members', 'system:list-all-pages', 'system:recent-changes', 'system:page-tags', 'what-is-wiki', 'how-to-edit-pages', 'start', 'contact']
You can use pages.get_meta method to get meta-information about a few pages (up to 10):

pages_info = s.pages.get_meta({'site': 'my-wiki', 'pages': ['system:join', 'system:members', 'system:list-all-pages', 'system:recent-changes', 'system:page-tags', 'what-is-wiki', 'how-to-edit-pages', 'start', 'contact']})
for page_name in pages_info:
page_info = pages_info[page_name]
print page_name, page_info['title'], page_info['tags']

We're using the way pages.get_meta returns information about pages. The return value is a dictionary of pages (key being page name, value being a dictionary of its properties, like title of tags). You can get the source of a page by calling pages.get_one method and extracting content property:

page = s.pages.get_one({'site': 'my-site', 'page': 'system:recent-changes'})
print page['content']

[[module SiteChanges]]]

Additional Information: [require "rubygems"
require "wikidot_api"

api_key = "YOUR_API_KEY_HERE"

wikidot = WikidotAPI::Client.new "wikidot-api", api_key]


ALID Format

Registered Location Identification #: sites = wikidot.user.sites "user" => "YOUR_USER_NAME_HERE"
sites.each do |site|
puts "#{site["title"]}, http://#{site["name"]}.wikidot.com"
end
Example: Fetching a page

page = wikidot.page.get "site" => "YOUR_SITE_NAME_HERE", "page" => "YOUR_PAGE_NAME_HERE"
puts page["title"]
puts page["source"]
Example: Creating a new page

args = {
"title" => "My new page",
"source" => "Hello world from the new page",
"page" => "page-name",
"site" => "site-name"
}

wikidot.page.save args

Threat Level: puts wikidot.system.methodHelp 'page.save'

According Protocols: [https://url9129.fandom.com/ls/click?upn=u001.8beZ-2Be6fypMDzbzy27Vf5dmpYpz7k5rdY0Qm4jDVSTwZlS6sZFb5YvWhSv-2FPHhMYAGif8TDSoZWKsONZg8flF7H9pVnENi8EzKeGrefn4i8-3D7Jtm_yFMY7DSVyl5N0A6hj4iWh9TeelGrNe-2FknS0IDFv1z1u6arDJ70LqwBrZTZ1on781hHy-2B8F-2BmlrBycBZaKdb2uV6V4yO7iMfSw-2FRpp7JN5mTeWrZ0US8pAAENmD60UlT9X10V-2Fu5uICDWVKFo6eSuqpoUNxH9g7B783xRYFsvGNuywo5PY95-2FJSoHk-2BcRHgqXlCz2A8177ihqtfKhOEsXAsRIdBN8ZwnG9WY7-2BR9r0D4UVqdg-2BGanVdBFZRfyJiCwamdQw6yQK5XDl380mu-2Fferwy8Zu0ETrrLnSX8m7AZOoB8TOY4WWCNrBmoRO51E-2Fze-2FjsFqpWabUTCmevlD5F1OZIO-2FWqfEwWYHTwqTwOX0eSdWPnvYbEB9NxUSRxOmpb]

Physical Description: [puts wikidot.system.listMethods]

Addendum: [gem install wikidot-api]

#$ $Id: Channel.pm,v 1.3 2002/05/21 14:48:17 dgl Exp $
package IRC::Channel;
use strict;
use IRC::UniqueHash;
use IRC::Util;
use IRC::Channel::Nick;

sub new {
my $class = shift;
my $self = bless {}, $class;
%$self = @_;
$self->{_nicks} = { };
tie %{$self->{_nicks}}, 'IRC::UniqueHash';
return $self;
}

sub addnick {
my($self,$nick,%nick) = @_;
return 0 if exists $self->{_nicks}->{$nick};

$self->{_nicks}->{$nick} = IRC::Channel::Nick->new(
name => $nick,
op => defined $nick{op} ? $nick{op} : 0,
voice => defined $nick{voice} ? $nick{voice} : 0,
halfop => defined $nick{halfop} ? $nick{halfop} : 0
);
}

sub delnick {
my($self,$nick) = @_;
return 0 unless exists $self->{_nicks}->{$nick};
return delete($self->{_nicks}->{$nick});
}

sub chgnick {
my($self,$nick,$newnick) = @_;
return 0 unless exists $self->{_nicks}->{$nick};
$self->{_nicks}->{$newnick} = $self->{_nicks}->{$nick};
$self->{_nicks}->{$newnick}->{name} = $newnick;
return $self->{_nicks}->{$newnick} if lc $newnick eq lc $nick;
return delete($self->{_nicks}->{$nick});
}

sub nick {
my($self,$nick) = @_;
return 0 unless exists $self->{_nicks}->{$nick};
return $self->{_nicks}->{$nick};
}

sub nicks {
my($self) = @_;
return keys %{$self->{_nicks}};
}

sub is_nick {
my($self,$nick) = @_;
return 1 if $self->{_nicks}->{$nick};
0;
}

sub is_voice {
my($self, $nick) = @_;
return 1 if $self->{_nicks}->{$nick}->{voice};
0;
}

sub is_op {
my($self, $nick) = @_;
return 1 if $self->{_nicks}->{$nick}->{op};
0;
}

sub get_umode {
my($self, $nick) = @_;
if($self->{_nicks}->{$nick}->{op}) {
return '@';
}elsif($self->{_nicks}->{$nick}->{halfop}) {
return '%';
}elsif($self->{_nicks}->{$nick}->{voice}) {
return '+';
}else{
return ' ';
}
}

sub has_mode {
my($self,$mode) = @_;
return 1 if check_mode($self->{mode},$mode);
0;
}

1;
«package Command;
use strict;
my($package, $event, $irc, $command, $target, $params, $config, $interface);

my %commands = (
noop => sub {
0;
},
msg => sub {
my($target, $text) = split(' ', $params, 2);
return 2 unless(defined $text && defined $target);
main::irc_send_message($target, $text);
},
m => 'msg',
privmsg => 'msg',
say => sub {
return 2 unless defined $params;
main::irc_send_message($target, $params);
},
wi => 'whois',
whois => sub {
$params = $irc->{nick} unless $params;
$irc->out("WHOIS $params");
},
j => 'join',
'join' => sub {
my($channels, $keys) = split(' ', $params, 2);
my @channels = split /,/, $channels;
for(@channels) {
$_ = "#$_" unless $irc->is_channel($_);
next if main::access_configcheck('channel', $_);
message('access channel denied', $_);
return;
}
$irc->join(join(',', @channels) . (defined $keys ? " $keys" : ''));
},
l => 'part',
part => sub {
if(!$params) {
$irc->part($target);
}else{
my($atarget, $text) = split(' ', $params, 2);
if($irc->is_channel($atarget)) {
$irc->part($atarget, $text);
}else{
$irc->part($target, $atarget . ' ' . $text);
}
}
},
nick => sub {
return 1 unless defined $params;
$irc->nick($params);
},
quit => sub {
$irc->quit($params ? $params : (defined $config->{quit_message} ?
$config->{quit_message} : "CGI:IRC $::VERSION"));
},
names => sub {
$irc->out("NAMES " . ($params ? $params : $target));
},
mode => sub {
return 2 unless defined $params;
my($atarget, $text) = split(' ', $params, 2);
if($atarget =~ /^[+-]/) {
$irc->mode($target, $params);
}else{
$irc->mode($atarget, $text);
}
},
umode => sub {
return 2 unless defined $params;
$irc->mode($irc->{nick}, $params);
},
usermode => 'umode',
op => sub {
return 2 unless defined $params;
$irc->mode($target, '+' . ('o' x scalar @{[split ' ', $params]}) ." $params");
},
halfop => sub {
return 2 unless defined $params;
$irc->mode($target, '+' . ('h' x scalar @{[split ' ', $params]}) ." $params");
},
voice => sub {
return 2 unless defined $params;
$irc->mode($target, '+' . ('v' x scalar @{[split ' ', $params]}) ." $params");
},
deop => sub {
return 2 unless defined $params;
$irc->mode($target, '-' . ('o' x scalar @{[split ' ', $params]}) ." $params");
},
dehalfop => sub {
return 2 unless defined $params;
$irc->mode($target, '+' . ('h' x scalar @{[split ' ', $params]}) ." $params");
},
devoice => sub {
return 2 unless defined $params;
$irc->mode($target, '-' . ('v' x scalar @{[split ' ', $params]}) ." $params");
},
t => 'topic',
topic => sub {
my($atarget, $text) = split(' ', $params, 2);
if(!$params) {
$irc->topic($target);
}elsif($irc->is_channel($atarget)) {
$irc->topic($atarget, $text);
}else{
$irc->topic($target, $params);
}
},
invite => sub {
my($atarget, $text) = split(' ', $params, 2);
if($text) {
$irc->invite($atarget, $text);
}else{
$irc->invite($params, $target);
}
},
k => 'kick',
kick => sub {
my($atarget, $tnick, $text) = split(' ', $params, 3);
if($irc->is_channel($atarget)) {
$irc->kick($atarget, $tnick, $text);
}else{
$irc->kick($target, $atarget, $tnick .(defined $text ? " $text" : ''));
}
},
ban => sub {
return 2 unless defined $params;
my $chan = $irc->channel($target);
if($params =~ /\@/) {
$irc->mode($target, "+b $params");
}elsif(ref $chan && ref $chan->nick($params)) {
my $host = $chan->nick($params)->{host};
if($host =~ /\d$/) {
$host =~ s/^\W([^\@]+)\@(.*?)\.\d+$/*!*$1\@$2.*/;
}else{
$host =~ s/^\W([^\@]+)\@[^\.]+\.(.*)$/*!*$1\@*.$2/;
}
$irc->mode($target, "+b $host");
}else{
return 1;
}
},
ignore => sub {
if($params) {
$params =~ s/[!@].*;
$irc->ignore($params);
message('ignored', $params);
}else{
for($irc->ignores) {
message('ignore list', $_);
}
}
return 0;
},
unignore => sub {
return 2 unless defined $params;
$irc->unignore($params);
message('unignored', $params);
return 0;
},
notice => sub {
my($target, $text) = split(' ', $params, 2);
my $display = $target;
$display =~ s/^[+@]+
;
$event->handle('notice ' .
($irc->is_channel($display) ? 'public' : 'private') . ' own',
{ target => $display }, $irc->{nick}, $irc->{myhost}, $text);

$irc->notice($target,$text);
},
ctcp => sub {
my($target, $text) = split(' ', $params, 2);
$event->handle('ctcp own msg',
{ target => $target }, $irc->{nick}, $irc->{myhost}, $text);
$irc->ctcp($target,$text);
},
ctcpreply => sub {
my($target, $type, $text) = split(' ', $params, 3);
$irc->ctcpreply($target, $type, $text);
},
ping => sub {
$target = $params if $params;
$event->handle('ctcp own msg',
{ target => $target }, $irc->{nick}, $irc->{myhost}, 'PING');
$irc->ctcp($target, 'PING ' . time);
},
me => sub {
$event->handle('action ' .
($irc->is_channel($target) ? 'public' : 'private') . ' own',
{ target => $target }, $irc->{nick}, $irc->{myhost}, $params);
$irc->ctcp($target, 'ACTION ' . $params);
},
action => sub {
my($target, $text) = split(' ', $params, 2);
$event->handle('action ' .
($irc->is_channel($target) ? 'public' : 'private') . ' own',
{ target => $target }, $irc->{nick}, $irc->{myhost}, $params);
$irc->ctcp($target, 'ACTION ' . $params);
},
quote => sub {
$irc->out($params) if $params;
},
version => sub {
if($params) {
$irc->out("VERSION $params");
}else{
message('default',"CGI:IRC $main::VERSION - David Leadbeater - http://cgiirc.sf.net/");
$irc->out('VERSION');
}
},
winclose => sub {
my $c = $params ? $params : $target;
$irc->part($c) if $irc->is_channel($c) && $irc->channel($c);
$interface->del($c);
return 0;
},
'close' => 'winclose',
'unquery' => 'winclose',
'query' => sub {
return 2 unless $params;
my($target, $text) = split(' ', $params, 2);
$interface->add($target);
$interface->active($target);
if(defined $text and $text) {
main::irc_send_message($target, $text);
}
return 0;
},
clear => sub {
$interface->clear($params ? $params : $target);
return 0;
},
help => sub {
$interface->help($config);
return 0;
},
charset => sub {
if(!$::ENCODE) {
message('default', 'Encode module is not loaded, character set conversion not available');
}else{
if(!$params) {
message('default', "Current encoding is: " . $config->{'irc charset'});
}else{
if(Encode::find_encoding($params)) {
message('default', "Encoding changed to $params");
$config->{'irc charset'} = $params;
}else{
message('default', 'Encoding not found');
}
}
}
return 0;
},
);

my %lcs;
@lcs{qw/nickserv memoserv chanserv statserv cs ms ns ss away/} = 1;

sub expand {
($package, $command) = @_;
$command = lc $command;
if(exists $commands{$command}) {
$command = _find_command($command);
return $command;
}
return $command;
}

sub run {
($package, $event, $irc, $command, $target, $params, $config, $interface) = @_;

if(exists $commands{$command}) {
my $error = $commands{$command}->();
return $error ? $error : 100;
}elsif(exists $lcs{$command}) {
$irc->out(uc($command) . ' :' . $params);
return 100;
}elsif($command =~ /^:/) {
($command,$params) = $params =~ /^([^ ]+) ?(.*)$/;
return 1 unless exists $commands{lc $command};
my $error = $commands{lc $command}->();
return $error ? $error : 100;
}else{
$irc->out(uc($command) . ' ' . $params);
return 100;
}

return 1;
}

sub message {
main::message(@_);
}

sub _find_command {
my($fcommand) = @_;
return '' unless exists $commands{$fcommand};
return $fcommand if ref $commands{$fcommand};
$fcommand = $commands{$fcommand};
return _find_command($fcommand);
}

1;

«#$ $Id: Event.pm,v 1.1 2002/03/05 16:34:19 dgl Exp $
package Event;
use strict;
my($currentevent,$currenteventid,$stop);

sub new {
my $self = bless { }, shift;
%$self = @_;
return $self;
}

sub add {
my($self,$event,%option) = @_;
return unless $event;
$self->{$event} ||= [ ];

push(@{$self->{$event}}, bless ( {
priority => $option{priority} || 5,
code => $option{code},
data => $option{data},
'package' => (caller)[0],
_self => $self,
} ) );
$self->sortpri($event);
}

sub delete {
my($self,$event,%option) = @_;
if(defined $currentevent) {
$self = $self->{_self};
splice( @{ $self->{$currentevent} }, $currenteventid, 1);
$self->sortpri($currentevent);
} else {
my $count = 0;
for my $item(@{ $self->{$event} } ) {
if((exists $option{code} && $item->{code} eq $option{code}) || (exists $option{data} && $item->{data} eq $option{data})) {
splice( @{ $self->{$event} }, $count, 1);
}
$count++;
}
$self->sortpri($event);
}
}

sub remove_package {
my($self, $package) = @_;
for my $event (keys %$self) {
next unless ref $self->{$event};
my $count = 0;
for my $item(@{ $self->{$event} } ) {
if($item->{package} eq $package) {
splice( @{ $self->{$event} }, $count, 1);
}
$count++;
}
}
}

  1. Make sure the array for the event is sorted on priority

sub sortpri {
my($self,$event) = @_;
return unless $event;

if($#{$self->{$event}} == -1) {
delete($self->{$event});
} else {
@{$self->{$event}} = (sort {$a->{priority} <=> $b->{priority}} @{$self->{$event}});
}
}

sub handle {
my($self,$event,@param) = @_;
print("Event: $event, @param\n") if $self->{_DEBUG};
$currentevent = $event;
$currenteventid = 0;
for my $item(@{$self->{$event}} ) {
my($tmpevent,$tmpid) = ($currentevent,$currenteventid);
$item->{code}->($item,@param);
($currentevent,$currenteventid) = ($tmpevent,$tmpid);
$currenteventid++;
if($stop) {
$stop = 0;
last;
}
}
if(!scalar @{$self->{$event}} && $event ne "unhandled") {
$self->handle('unhandled', $event, @param);
}
$currenteventid = $currentevent = undef;
}

sub stop {
my($self) = @_;
$stop = 1 if defined $currentevent;
}

sub getevent {
my($self) = @_;
return defined $currentevent ? $currentevent : undef;
}

sub exists {
my($self,$event) = @_;
return 1 if exists $self->{$event};
0;
}

1;

«# $Id: Event.pm,v 1.1 2002/03/05 16:34:19 dgl Exp $
package IRC::Event;

AUTOLOAD {
return unless defined $AUTOLOAD;
my $name = $AUTOLOAD;
$name =~ s/.*:://;
return if $name eq 'DESTROY';
if($name && ref $_[0] && $_[0]->{server} && $_[0]->{channel}) {
$_[0]->{server}->$name($_[0]->{channel}, @_[1..$#_]);
}
}

sub new {
my($class,$client) = (shift,shift);
my $self = bless { }, $class;
%$self = @_;
$self->{server} = $client;
return $self;
}

1;

«# $Id: Nick.pm,v 1.1 2002/03/05 16:34:19 dgl Exp $
package IRC::Channel::Nick;
use strict;

sub new {
my $class = shift;
my $self = bless { }, $class;
%$self = @_;
return $self;
}

  1. Maybe i'll add some functions here, one day…

1;

«# $Id: RawCommands.pm,v 1.31 2006/12/20 14:15:19 dgl Exp $
package IRC::RawCommands;
use strict;

use IRC::Util;

  1. Don't be fooled by the fact it's a package.. the self in the subroutines is
  2. actually the one from Client.pm!

my %raw = (
'nick' => sub {
my($event,$self,$params) = @_;
my $newnick = $params->{params}->[1] || $params->{text};
if(lc $params->{nick} eq lc $self->{nick}) {
$self->{nick} = $newnick;
$self->{event}->handle('user self', $newnick);
}

my @channels = $self->find_nick_channels($params->{nick});
for my $channel(@channels) {
$self->{_channels}->{$channel}->chgnick($params->{nick},$newnick);
}
$self->{event}->handle('user change nick', $params->{nick}, $newnick, \@channels);
$self->{event}->handle('nick', _info(\@channels, 1),
$params->{nick}, $params->{host}, $newnick);
},
'quit' => sub {
my($event,$self,$params) = @_;
my @channels = $self->find_nick_channels($params->{nick});
for my $channel(@channels) {
$self->{_channels}->{$channel}->delnick($params->{nick});
}
$self->{event}->handle('user del', $params->{nick}, '-all-');
$self->{event}->handle('quit', _info(\@channels, 1), $params->{nick}, $params->{host}, $params->{text});
},
'join' => sub {
my($event,$self,$params) = @_;
my $channel = $params->{params}->[1] || $params->{text};
if($params->{nick} eq $self->{nick}) { # It's me!
$self->{_channels}->{$channel} = IRC::Channel->new( name => $channel );
$self->sync_channel($channel);
if(!$self->{myhost}) {
$self->{myhost} = $params->{host};
}
}
if(!$self->{_channels}->{$channel}) {
return;
}

$self->{_channels}->{$channel}->addnick($params->{nick},
host => $params->{host}
);
$self->{event}->handle('user add', [$params->{nick}], [$channel]);

$self->{event}->handle('join', _info($channel, 1, 1), $params->{nick}, $params->{host});
},
'part' => sub {
my($event,$self,$params) = @_;
my $channel = $params->{params}->[1];
if(!$channel && $params->{text}) { # b0rked servers here we come
$channel = $params->{text};
$params->{text} = '';
}
$self->{_channels}->{$channel}->delnick($params->{nick}) if exists $self->{_channels}->{$channel}->{_users}->{$params->{nick}};

if($params->{nick} eq $self->{nick}) { # It's me!
delete($self->{_channels}->{$channel});
#$self->{event}->handle('message part_self',$params);
}
$self->{event}->handle('user del', $params->{nick}, [$channel]);

$self->{event}->handle('part', _info($channel, 1), $params->{nick}, $params->{host}, $params->{text});
},
'mode' => sub {
my($event,$self,$params) = @_;
@{$params->{params}} = split(/ /, join(' ',@{$params->{params}},$params->{text} ? $params->{text} : ''));
my $to = $params->{params}->[1];
my $mode = $params->{params}->[2];

my $action = substr($mode,0,1) || '+';
my $num = 3;

if($self->is_nickname($to)) {
return unless $to eq $self->{nick};
for(split //, $mode) {
if(/([+-])/) {
$action = $1;
}elsif($action eq '+') {
$self->{mode} = add_mode($self->{mode},$_);
}elsif($action eq '-') {
$self->{mode} = del_mode($self->{mode},$_);
}
}
$self->{event}->handle('user mode', _info($to, 1),
$params->{nick}, $params->{host},
(join(' ',@{$params->{params}}[2.. @{$params->{params}} - 1])));
}elsif($self->is_channel($to)) {
return unless $self->{_channels}->{$to};
my $channel = $self->{_channels}->{$to};
my %tmpevents;
for(split //, $mode) {
if(/([+-])/) {
$action = $1;
}elsif($action eq '-' && /[ilkmnpst$self->{modes}->{toggle}]/) {
$channel->{mode} = del_mode($channel->{mode}, $_);
$channel->{ {k => 'key',l => 'limit'}->{$_} } = undef if /[lk]/;
$num++ if $_ eq 'k';
}elsif($action eq '+' && /[ilkmnpst$self->{modes}->{toggle}]/) {
$channel->{mode} = add_mode($channel->{mode}, $_);
$channel->{ {k => 'key',l => 'limit'}->{$_} } = $params->{params}->[$num] if /[lk]/;
$num++;
}elsif(/[hov$self->{prefixmode}]/) {
my $nick = $params->{params}->[$num];
next unless ref $channel->nick($nick);
$channel->nick($nick)->{
($_ =~ /[hov]/ ? {o => 'op',h => 'halfop', v => 'voice'}->{$_}
: $_)
} = ($action eq '+' ? 1 : 0);
$tmpevents{$_}{$nick} = (defined $tmpevents{$_}{$nick} && $tmpevents{$_}{$nick} eq '+') ? undef : '-' if $action eq '+';
$tmpevents{$_}{$nick} = (defined $tmpevents{$_}{$nick} && $tmpevents{$_}{$nick} eq '-') ? undef : '+' if $action eq '-';
$num++;
}elsif(/b/) {
$num++;
}
}
if(%tmpevents) {
for(keys %tmpevents) {
for my $who(keys %{$tmpevents{$_}}) {
next unless defined $tmpevents{$_}{$who};
$self->{event}->handle('user change', $who, $channel->{name}, $tmpevents{$_}{$who} eq '+' ? '-' : '+', ({'h' => 'halfop','o' => 'op', 'v' => 'voice'}->{$_}));
}
}
}
$self->{event}->handle('mode', _info($to, 1),
$params->{nick}, $params->{host}, (join(' ',@{$params->{params}}[2 .. @{$params->{params}} - 1])));
}
},
'topic' => sub {
my($event,$self,$params) = @_;
$self->{_channels}->{$params->{params}->[1]}->{topic} = $params->{text};
$self->{_channels}->{$params->{params}->[1]}->{topicby} = $params->{nick};
$self->{_channels}->{$params->{params}->[1]}->{topictime} = time;
$self->{event}->handle('topic', _info($params->{params}->[1], 1),
$params->{nick}, $params->{host}, $params->{text} );
},
'invite' => sub {
my($event,$self,$params) = @_;
$self->{event}->handle('invite', _info($params->{nick}, 1),
$params->{nick}, $params->{host}, $params->{text} || $params->{params}->[1]);
},
'kick' => sub {
my($event,$self,$params) = @_;
my $channel = $params->{params}->[1];
my $kick = $params->{params}->[2];

$self->{_channels}{$channel}->delnick($kick);
$self->{event}->handle('user del', $kick, [$channel]);

$self->{event}->handle('kick', _info($channel, 1),
$params->{nick}, $params->{host}, $kick, $params->{text});
},
'privmsg' => sub {
my($event,$self,$params) = @_;
return if exists $self->{ignore}->{$params->{nick}};
my $to = $params->{params}->[1];

if(substr($params->{text},0,1) eq "\001") {
$self->{event}->handle('ctcp msg', $self, $params->{nick}, $params->{host}, $to, $params->{text});
}elsif($self->is_channel($to)) {
$self->{event}->handle('message public', _info($to, 2),
$params->{nick}, $params->{host}, $params->{text});
}elsif($to =~ /^[+@%]/) {
my $target = $to;
$target =~ s/^[+@%]g;
$self->{event}->handle('message special', _info($target, 2),
$params->{nick}, $params->{host}, $to, $params->{text});
}elsif(is_valid_server($params->{nick})) {
$self->{event}->handle('message server', _info($to, 2),
$params->{nick}, $params->{host}, $params->{text});
}else{
#return unless $self->find_nick_channels($params->{nick});
$self->{event}->handle('message private', _info($params->{nick}, 3, 1),
$params->{nick}, $params->{host}, $params->{text});
}
},
'notice' => sub {
my($event,$self,$params) = @_;
return if exists $self->{ignore}->{$params->{nick}};
my $to = $params->{params}->[1];
if(substr($params->{text},0,1) eq "\001") {
$self->{event}->handle('ctcp reply', $self, $params->{nick}, $params->{host}, $to, $params->{text});
}elsif($self->is_channel($to)) {
$self->{event}->handle('notice public', _info($to, 1),
$params->{nick}, $params->{host}, $params->{text});
}elsif($to =~ /^[+@%]/) {
my $target = $to;
$target =~ s/^[+@%]+
;
$self->{event}->handle('notice special', _info($target, 1),
$params->{nick}, $params->{host}, $to, $params->{text});
}elsif(is_valid_server($params->{nick})) {
$self->{event}->handle('notice server', _info('Status', 1),
$params->{nick}, $params->{host}, $params->{text});
}else{
$self->{event}->handle('notice private', _info($params->{nick}, 1),
$params->{nick}, $params->{host}, $params->{text});
}
},
'kill' => sub {
my($event,$self,$params) = @_;
},
'pong' => sub {
my($event,$self,$params) = @_;
$self->{event}->handle('pong', _info($params->{nick}, 1),
$params->{nick}, $params->{params}->[1], $params->{text});
},

  1. — numeric replies —
  1. Client-server connection information (001 -> 099)

'001' => sub { # RPL_WELCOME
my($event,$self,$params) = @_;

$self->{connected} = 1;
$self->{nick} = $params->{params}->[1];
$self->{server} = $params->{nick};
$self->{connect_time} = time;
$self->{event}->handle('server connected',$self, $self->{server},$self->{nick}, $params->{text});
$self->{event}->handle('user self', $self->{nick});
$self->{event}->handle('reply welcome', _info('Status', 1), $params->{text});
},
'002' => sub { # RPL_YOURHOST
my($event,$self,$params) = @_;
$self->{event}->handle('reply yourhost', _info('Status', 1), $params->{text});
},
'003' => sub { # RPL_CREATED
my($event,$self,$params) = @_;
$self->{event}->handle('reply created', _info('Status', 1), $params->{text});
},
'004' => sub { # RPL_MYINFO
my($event,$self,$params) = @_;
$self->{capab}->{server_version} = $params->{params}->[3];
$self->{capab}->{user_modes} = $params->{params}->[4];
$self->{capab}->{channel_modes} = $params->{params}->[5];
$self->{event}->handle('reply myinfo', _info('Status', 1), @{$params->{params}}[3..5]);
},
'005' => sub { # RPL_PROTOCTL
my($event,$self,$params) = @_;
for(@{$params->{params}}[2.. @{$params->{params}} - 1]) {
my($key,$value) = split(/=/, $_, 2);
$value ||= 1;
$self->{capab}->{lc $key} = $value;
}

if(exists $self->{capab}->{prefix} && $self->{capab}->{prefix} =~ /^\(([^\)]+)\)(.*)$/) {
$self->{prefixmodes} = $1;
$self->{prefixchars} = $2;
}elsif(exists $self->{capab}->{ircx}) {
$self->{prefixmodes} = "qov";
$self->{prefixchars} = ".@+";
}

if(exists $self->{prefixchars} && $self->{prefixchars}) {
$self->{event}->handle('user 005', $self->{prefixchars});
}

if(exists $self->{capab}->{chanmodes}) {
my @modes = split /,/, $self->{capab}->{chanmodes};
@{$self->{modes}}{qw/masks param param_add toggle/} = @modes;
}else{
@{$self->{modes}}{qw/masks param param_add toggle/} = '';
}

$self->{event}->handle('reply protoctl', _info('Status', 1),
join(' ',@{$params->{params}}[2.. @{$params->{params}} - 1], defined $params->{text} ? $params->{text} : ''));
},

  1. Command Replies (200 -> 399)

301 => sub { # RPL_AWAY
my($event,$self,$params) = @_;
$self->{event}->handle('reply away', _info($params->{params}->[2], 1), $params->{text});
},
302 => sub { # RPL_USERHOST
my($event,$self,$params) = @_;
my($nick,$oper,$away,$host) = $params->{text} =~ /^([^=*]+)(\*)?\=(.*)$/;
$self->{event}->handle('reply userhost', _info($nick, 1), $nick,$oper,$away,$host);
},
303 => sub { # RPL_ISON
my($event,$self,$params) = @_;
$self->{event}->handle('reply ison', _info('Status', 1), $params->{text});
},
305 => sub { # RPL_UNAWAY
my($event,$self,$params) = @_;
$self->{away} = 0;
$self->{event}->handle('reply unaway', _info('Status', 1));
},
306 => sub { # RPL_NOWAWAY
my($event,$self,$params) = @_;
$self->{away} = 1;
$self->{event}->handle('reply nowaway', _info('Status', 1));
},

# whois replies
307 => sub { # RPL_USERIP -OR- RPL_WHOISREGNICK
my($event,$self,$params) = @_;
if($params->{params}->[2]) { # RPL_WHOISREGNICK
$self->{event}->handle('reply whois regnick', _info($params->{params}->[2], 1), $params->{text});
}else{ # RPL_USERIP (same format as userhost, except ip)
$self->{event}->handle('reply userip', _info('Status', 1), $params->{text});
}
},
311 => sub { # RPL_WHOISUSER
my($event,$self,$params) = @_;
$self->{event}->handle('reply whois user', _info($params->{params}->[2], 1), @{$params->{params}}[3..4], $params->{text});
},
312 => sub { # RPL_WHOISSERVER
my($event,$self,$params) = @_;
$self->{event}->handle('reply whois server', _info($params->{params}->[2], 1), $params->{params}->[3], $params->{text});
},
313 => sub { # RPL_WHOISOPERATOR
my($event,$self,$params) = @_;
$self->{event}->handle('reply whois operator', _info($params->{params}->[2], 1), $params->{text});
},
314 => sub { # RPL_WHOWASUSER
my($event,$self,$params) = @_;
$self->{event}->handle('reply whowas user', _info($params->{params}->[2], 1), $params->{text});
},
317 => sub { # RPL_WHOISIDLE
my($event,$self,$params) = @_;
my $time = ::format_parse($::format->{time}, {}, [gmtime $params->{params}->[3]]);
$self->{event}->handle('reply whois idle', _info($params->{params}->[2], 1), $time, scalar gmtime($params->{params}->[4]), $params->{text});
},
319 => sub { # RPL_WHOISCHANNELS
my($event,$self,$params) = @_;
$self->{event}->handle('reply whois channel', _info($params->{params}->[2], 1), $params->{text});
},

318 => sub { # RPL_ENDOFWHOIS
my($event,$self,$params) = @_;
$self->{event}->handle('reply whois end', _info($params->{params}->[2], 1), $params->{text});
},
369 => sub { # RPL_ENDOFWHOWAS
my($event,$self,$params) = @_;
$self->{event}->handle('reply whowas end', _info($params->{params}->[2], 1), $params->{text});
},

# list
321 => sub { # RPL_LISTSTART (you can't rely on this being sent anymore)
my($event,$self,$params) = @_;
$self->{event}->handle('reply list start', _info('Status', 1),$params->{text});
},
322 => sub { # RPL_LIST
my($event,$self,$params) = @_;
$self->{event}->handle('reply list', _info('Status', 1), @{$params->{params}}[2..3],$params->{text});
},
323 => sub { # RPL_LISTEND
my($event,$self,$params) = @_;
$self->{event}->handle('reply list end', _info('Status', 1), $params->{text});
},

# channel mode
324 => sub { # RPL_CHANNELMODEIS
my($event,$self,$params) = @_;
my $channel = $params->{params}->[2];
my $mode = $params->{params}->[3];
if(ref $self->{_channels}->{$channel} eq "IRC::Channel") {
$self->{_channels}->{$channel}->{mode} = $mode;
my $tmp = 4;
my %tmp;
for(split //,$mode) {
next unless /^[lk]$/;
$tmp{$_} = $params->{params}->[$tmp];
$tmp++;
}

if($self->{_channels}->{$channel}->has_mode('k')) {
$self->{_channels}->{$channel}->{key} = $tmp{'k'};
}
if($self->{_channels}->{$channel}->has_mode('l')) {
$self->{_channels}->{$channel}->{limit} = $tmp{'l'};
}
}

if(exists $self->{_channels}->{$channel} &&
$self->{_channels}->{$channel}->{mode_sync}) {
delete($self->{_channels}->{$channel}->{mode_sync});
return;
}

$self->{event}->handle('reply channel mode', _info($channel, 1), @{$params->{params}}[2.. @{$params->{params}} - 1]);
},
329 => sub { # RPL_CREATIONTIME
my($event,$self,$params) = @_;
my $channel = $params->{params}->[2];
if($self->{_channels}->{$channel}) {
$self->{_channels}->{$channel}->{created} = $params->{params}->[3];
}
$self->{event}->handle('reply channel time', _info($channel, 1), scalar localtime($params->{params}->[3]));
},

# onjoin / topic

331 => sub { # RPL_NOTOPIC
my($event,$self,$params) = @_;
my $channel = $params->{params}->[2];
$self->{_channels}->{$channel}->{topic} = undef;
$self->{_channels}->{$channel}->{topicby} = undef;
$self->{_channels}->{$channel}->{topictime} = undef;
$self->{event}->handle('reply notopic', _info($channel, 1));
},

332 => sub { # RPL_TOPIC
my($event,$self,$params) = @_;
my $channel = $params->{params}->[2];
$self->{_channels}->{$channel}->{topic} = $params->{text};
$self->{event}->handle('reply topic', _info($channel, 1), $params->{text});
},

333 => sub { # RPL_TOPICWHOTIME
my($event,$self,$params) = @_;
my $channel = $params->{params}->[2];
$self->{_channels}->{$channel}->{topicby} = $params->{params}->[3];
$self->{_channels}->{$channel}->{topictime} = $params->{params}->[4];
$self->{event}->handle('reply topicwhotime', _info($channel, 1), $params->{params}->[3], scalar gmtime $params->{params}->[4]);
},

# who reply
352 => sub { # RPL_WHOREPLY
my($event,$self,$params) = @_;
my($channel,$user,$host,$server,$nick,$bits,$realname) =
(@{$params->{params}}[2..7], $params->{text});
my($op,$voice,$halfop,$hops) = 0;

$hops = $1 if $realname =~ s/^(\d+) //;
$op = 1 if $bits =~ /\@/;
$voice = 1 if $bits =~ /\%/;
$halfop = 1 if $bits =~ /\+/;

if(defined $self->{_channels}->{$channel}
&& ref $self->{_channels}->{$channel} ne 'HASH'
&& $self->{_channels}->{$channel}->nick($nick)) {
$self->{_channels}->{$channel}->{_nicks}->{$nick} = {
name => $nick,
op => $op,
voice => $voice,
halfop => $halfop,
host => $user . '@' . $host,
server => $server,
realname => $realname,
hops => $hops
};
}else{
}

return if $self->{_channels}->{$channel} && $self->{_channels}->{$channel}->{who_sync};

$self->{event}->handle('reply who', _info($channel, 1), $channel,$user,$host,$server,$nick,$bits,$hops,$realname);
},

315 => sub { # RPL_ENDOFWHO
my($event,$self,$params) = @_;
if(exists $self->{_channels}->{$params->{params}->[2]} &&
$self->{_channels}->{$params->{params}->[2]}->{who_sync}) {
delete($self->{_channels}->{$params->{params}->[2]}->{who_sync});
return;
}
$self->{event}->handle('reply who end', $params, $params->{params}->[2]);
},

# onjoin / names
353 => sub { # RPL_NAMREPLY
my($event,$self,$params) = @_;
my $channel = $params->{params}->[3];

if(exists $self->{_channels}->{$channel} &&
UNIVERSAL::isa($self->{_channels}->{$channel}, "IRC::Channel")) {
for(split / /,$params->{text}) {
my ($op,$halfop,$voice) = 0;
$op = 1 if s/\@;
$voice = 1 if s/\+
;
$halfop = 1 if s/\%;
if(exists $self->{prefixchars} && $self->{prefixchars}) {
my $prefix = "[" . quotemeta($self->{prefixchars}) . "]+";
s/^$prefix
;
}

$self->{_channels}->{$channel}->addnick($_,
op => $op,
halfop => $halfop,
voice => $voice,
);
}
$self->{event}->handle('user add', [split(/ /, $params->{text})], $channel);
}

$self->{event}->handle('reply names', _info($channel, 1), $params->{text});
},

366 => sub { # RPL_ENDOFNAMES
my($event,$self,$params) = @_;
#return unless $self->{_channels}->{$params->{params}->[2]};
},

367 => sub { # RPL_BANLIST
my($event,$self,$params) = @_;
my $channel = $params->{params}->[2];
$self->{event}->handle('reply ban', _info($channel, 1),$channel,@{$params->{params}}[3..5]);
},
368 => sub { # RPL_ENDOFBANLIST
my($event,$self,$params) = @_;
$self->{event}->handle('reply ban end', _info($params->{params}->[2], 1),$params->{params}->[2],$params->{text});
},

372 => sub { # RPL_MOTD
my($event,$self,$params) = @_;
$self->{event}->handle('reply motd',_info('Status', 1, undef, 'motd'),$params->{text});
},
375 => sub { # RPL_MOTDSTART
my($event,$self,$params) = @_;
$self->{event}->handle('reply motd start', _info('Status', 1), $params->{text});
},
376 => sub { # RPL_ENDOFMOTD
my($event,$self,$params) = @_;
if(!$self->{connected}) {
$self->{nick} = $params->{params}->[1];
$self->{server} = $params->{nick};
$self->{connect_time} = time;
$self->{event}->handle('server connected',$self, $self->{server},$self->{nick});
}
$self->{event}->handle('reply motd end',_info('Status', 1),$params->{text});
},
391 => sub { # RPL_TIME
my($event,$self,$params) = @_;
$self->{event}->handle('reply time',_info('Status', 1),$params->{text});
},
401 => sub {
my($event,$self,$params) = @_;
$self->{event}->handle('error nosuchnick', _info($params->{params}->[2], 1));
},
433 => sub {
my($event,$self,$params) = @_;
$self->{event}->handle('error nickinuse', _info('Status', 1), $params->{params}->[2]);
},

);

sub ctcpmsg {
my($event, $irc, $nick, $host, $to, $text, $type) = @_;
$type = 'ctcp msg' unless defined $type;

if($text =~ /^\001([^ \001]+)(?: (.*?))?\001?$/) {
my($command,$params) = ($1,$2);

$irc->{event}->handle($type . ' ' . lc $command,
_info($irc->is_channel($to) ? $to : $nick, 1), $to,
$nick, $host, $command, $params);

}else{
return undef;
}
}

sub ctcpreply {
ctcpmsg(@_, 'ctcp reply');
}

sub new {
my($class,$self,$event) = @_;
for(keys %raw) {
next if $event->exists('raw '. $_);
$event->add('raw '. $_, code => $raw{$_});
}
for(['ctcp msg',\&ctcpmsg] , ['ctcp reply', \&ctcpreply]) {
next if $event->exists($_->[0]);
$event->add($_->[0], code => $_->[1]);
}
return bless {}, shift;
}

sub _info {
return { target => $_[0], activity => $_[1], create => (defined $_[2] ? 1 : 0), style => (defined $_[3] ? $_[3] : '')};
}

1;

«•# $Id: Timer.pm,v 1.1 2002/03/05 16:34:19 dgl Exp $
=head1 NAME

Timer.pm

=head1 EXAMPLES

use Timer;
$timer = Timer->new;

$timer->addonce(code => \&somesub, data => 'moo', interval => 10);
sub somesub { print shift }

$timer->add(code => sub {
my($timer,$data) = @_;
print "Called $timer->{id} with $data\n";
}, data => 'oink', interval => 1, count => 10);

# Obviously fit $timer->run into how your program needs to use it.
sleep 1;
sleep 1 while $timer->run;

=head1 METHODS

=head2 add

add( code => \&codref, # \&code, sub { print blah..} etc..
data => 'data', # This data is passed back to the coderef when run
interval => num, # Time between being run..
count => [num | undef ], # number of times to run, undef == forever
);

=head2 addonce

Wrapper to add, option count is already set to 1

=head2 addforever

Wrapper to add, option count is set to undef

=head2 delete

delete($id);

=head2 get

returns anon hash specified by $id

=head2 run

checks for timers that need running, returns number actually run.

=head2 call

used internally by run to call an timer when it needs running

=head2 exists

returns true if the timer exists

=cut

package Timer;
use strict;

sub new {
my $class = shift;
# notice it's an array, not a hash
return bless [], $class;
}

sub add {
my($self,%timer) = @_;
my $id = $self->_newid;
$$self[$id] =
{
code => $timer{code},
data => $timer{data},
interval => $timer{interval},
nextexec => $timer{interval} + time,
count => $timer{count} || undef,
'package' => (caller)[0],
id => $id
};
return $id;
}

sub remove_package {
my($self, $package) = @_;
for my $id(0 .. $#$self) {
next unless ref($$self[$id]) eq 'HASH';
if($$self[$id]->{package} eq $package) {
splice(@$self, $id, 1);
}
}
}

  1. Finds the next free id (element) in the array

sub _newid {
my $self = shift;
for my $id(0 .. $#$self) {
return $id unless ref($$self[$id]) eq 'HASH';
}
return scalar @$self;
}

sub addonce {
my($self,%timer) = @_;
$self->add(%timer,count => 1);
}

sub addforever {
my($self,%timer) = @_;
$self->add(%timer,count => undef);
}

sub delete {
my($self,$id) = @_;
return 0 unless $self->exists($id);
$$self[$id] = undef;
}

sub get {
my($self,$id) = @_;
return $$self[$id];
}

sub run {
my $self = shift;
my $time = time;
my $num = 0;
for my $id(0 .. $#$self) {
next unless ref($$self[$id]) eq 'HASH';
if($time >= $$self[$id]->{nextexec}) {
$self->call($id);
$num++;
}
}
return $num;
}

sub call {
my($self,$id) = @_;
my $timer = $self->get($id);

$timer->{count}— if defined $timer->{count};
$timer->{nextexec} = $timer->{interval} + time;

  1. TODO: Make $timer into an object so things like $timer->delete work within
  2. the timer.

$timer->{code}->($timer,$timer->{data});

if(defined $timer->{count} && $timer->{count} <= 0) {
$self->delete($id);
return 0;
}
1;
}

sub exists {
my($self,$id) = @_;
return 1 if ref($$self[$id]) eq 'HASH';
0;
}

1;

«•# $Id: UniqueHash.pm,v 1.2 2002/04/27 19:21:54 dgl Exp $
#!/usr/bin/perl

  1. from pircd, edited by david leadbeater..
  2. IRCUniqueHash.pm
  3. Created: Wed Apr 21 09:44:03 1999 by ude.odaroloc|kenimok.yaj#ude.odaroloc|kenimok.yaj
  4. Revised: Wed Apr 21 09:59:55 1999 by ude.odaroloc|kenimok.yaj#ude.odaroloc|kenimok.yaj
  5. Copyright 1999 Jay F. Kominek (ude.odaroloc|kenimok.yaj#ude.odaroloc|kenimok.yaj)

#

  1. Consult the file 'LICENSE' for the complete terms under which you
  2. may use self file.

#
#####################################################################

  1. A hash class which enforces IRC-style unique name spaces

#####################################################################

package IRC::UniqueHash;
use strict;
my(@tmp);

sub TIEHASH {
my $proto = shift;
my $class = ref($proto) || $proto;
my $self = { };

bless $self, $class;
return $self;
}

sub FETCH {
my($self,$key) = @_;

return $self->{data}->{irclc($key)}->{value};
}

sub STORE {
my($self,$key,$value) = @_;

my $name = irclc($key);
$self->{data}->{$name}->{name} = $key;
$self->{data}->{$name}->{value} = $value;
}

sub DELETE {
my($self,$key) = @_;

delete($self->{data}->{irclc($key)});
}

sub CLEAR {
my $self = shift;

%$self = ( );
}

sub EXISTS {
my($self,$key) = @_;

return exists $self->{data}->{irclc($key)};
}

sub FIRSTKEY {
my $self = shift;

@{$self->{_tmp}} = keys %{$self->{data}};

return $self->{data}->{shift @{$self->{_tmp}}}->{name};
}

sub NEXTKEY {
my ($self,$lastkey) = @_;

return undef unless @{$self->{_tmp}};
return $self->{data}->{shift @{$self->{_tmp}}}->{name};
}

sub irclc {
return lc $_[0];
}

1;

«## $Id: Util.pm,v 1.5 2006/04/30 12:51:55 dgl Exp $
package IRC::Util;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(is_valid_channel is_valid_nickname is_valid_server make_lowercase check_mode match_mask fullhost2nick fullhost2host add_mode del_mode);

use strict;

sub is_valid_channel {
return 0 if length $_[0] > 64;
return 0 if $_[0] =~ /[ ,]/;
return 1 if $_[0] =~ /^[#&]/;
return 0;
}

sub is_valid_nickname {
return 0 if length $_[0] > 32 or length $_[0] < 1;
return 0 if $_[0] =~ / /;
return 0 if $_[0] =~ /^[0-9#&]/;
return 1;
}

sub is_valid_server {
return 0 if $_[0] !~ /\./;
return 0 if $_[0] =~ /[!@]/;
return 0 if $_[0] =~ /[^-A-Za-z0-9\*\._]/;
return 1;
}

sub make_lowercase{
my $lc = shift;
$lc =~ tr/A-Z\[\]\\/a-z\{\}\|/;
return $lc;
}

sub check_mode {
my($mode,$bit) = @_;
return 1 if $mode =~ /\S*\Q$bit\E/;
}

  1. should really split all the parts up…

sub match_mask {
my($check,$mask) = @_;
$mask = quotemeta $mask;
$mask =~ s/\\\?/./g;
$mask =~ s/\\\*/.*?/g;
return 1 if $check =~ /$mask/;
0;
}

sub fullhost2nick {
my $host = shift;
$host =~ s/!.*$//;
return $host;
}

sub fullhost2host {
my $host = shift;
$host =~ s/^.*?!//;
return $host;
}

sub add_mode{
my($mode,$bit) = @_;
return $mode if $mode =~ /^\S*\Q$bit\E/;
$mode =~ s/^(\S*)/$1$bit/;
return $mode;
}

sub del_mode{
my($mode,$bit) = @_;
return $mode if $mode !~ /^\S*\Q$bit\E/;
$mode =~ s/^(\S*)$bit/$1/;
return $mode;
}

1;

«# $Id: Util.pm,v 1.5 2006/04/30 12:51:55 dgl Exp $
package IRC::Util;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(is_valid_channel is_valid_nickname is_valid_server make_lowercase check_mode match_mask fullhost2nick fullhost2host add_mode del_mode);

use strict;

sub is_valid_channel {
return 0 if length $_[0] > 64;
return 0 if $_[0] =~ /[ ,]/;
return 1 if $_[0] =~ /^[#&]/;
return 0;
}

sub is_valid_nickname {
return 0 if length $_[0] > 32 or length $_[0] < 1;
return 0 if $_[0] =~ / /;
return 0 if $_[0] =~ /^[0-9#&]/;
return 1;
}

sub is_valid_server {
return 0 if $_[0] !~ /\./;
return 0 if $_[0] =~ /[!@]/;
return 0 if $_[0] =~ /[^-A-Za-z0-9\*\._]/;
return 1;
}

sub make_lowercase{
my $lc = shift;
$lc =~ tr/A-Z\[\]\\/a-z\{\}\|/;
return $lc;
}

sub check_mode {
my($mode,$bit) = @_;
return 1 if $mode =~ /\S*\Q$bit\E/;
}

  1. should really split all the parts up…

sub match_mask {
my($check,$mask) = @_;
$mask = quotemeta $mask;
$mask =~ s/\\\?/./g;
$mask =~ s/\\\*/.*?/g;
return 1 if $check =~ /$mask/;
0;
}

sub fullhost2nick {
my $host = shift;
$host =~ s/!.*$//;
return $host;
}

sub fullhost2host {
my $host = shift;
$host =~ s/^.*?!//;
return $host;
}

sub add_mode{
my($mode,$bit) = @_;
return $mode if $mode =~ /^\S*\Q$bit\E/;
$mode =~ s/^(\S*)/$1$bit/;
return $mode;
}

sub del_mode{
my($mode,$bit) = @_;
return $mode if $mode !~ /^\S*\Q$bit\E/;
$mode =~ s/^(\S*)$bit/$1/;
return $mode;
}

1;

«$»

« Helper CGI
* Copyright (c) David Leadbeater 2002-2007
* Released Under the GNU GPLv2 or Later
* NO WARRANTY - See GNU GPL for more
* $Id: 3cc9101e199095f574c9bd8b2c53f0f9042eeae9 $
*/
/* To compile: cc -O2 -o client.cgi client.c */
/* Add -lsocket on Solaris */

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>

/* Change this to the tmpfile path set in the CGI:IRC Config */
#define TMPLOCATION "/tmp/cgiirc-"

/**
* Stralloc (from libowfat(-ish))
* If you'd rather use dietlibc/libowfat:
* diet -Os gcc -include stralloc.h -o client.cgi client.c -lowfat */

#ifndef STRALLOC_H
typedef struct stralloc {
char* s;
unsigned long int len;
unsigned long int a;
} stralloc;

int stralloc_ready(stralloc *sa,unsigned long int len) {
register int wanted=len+(len»3)+30; /* heuristic from djb */
if(!sa->s || sa->a<len) {
register char* tmp;
if (!(tmp=realloc(sa->s,wanted)))
return 0;
sa->a=wanted;
sa->s=tmp;
}
return 1;
}

int stralloc_readyplus(stralloc *sa,unsigned long len) {
if (sa->s) {
if (sa->len + len < len) return 0; /* catch integer overflow */
return stralloc_ready(sa,sa->len+len);
} else
return stralloc_ready(sa,len);
}

int stralloc_catb(stralloc *sa,const char *buf,unsigned long int len) {
if (stralloc_readyplus(sa,len)) {
memcpy(sa->s+sa->len,buf,len);
sa->len+=len;
return 1;
}
return 0;
}

int stralloc_cats(stralloc *sa,const char *buf) {
return stralloc_catb(sa,buf,strlen(buf));
}

int stralloc_cat(stralloc *sa,stralloc *sa2) {
return stralloc_catb(sa,sa2->s,sa2->len);
}

int stralloc_append(stralloc *sa,const char *in) {
if (stralloc_readyplus(sa,1)) {
sa->s[sa->len]=*in;
++sa->len;
return 1;
}
return 0;
}

#define stralloc_0(sa) stralloc_append(sa,"")

#endif
/**/

int unix_connect(stralloc *where);
int error(char *error);
void readinput(stralloc *);
void get_rand(stralloc *, stralloc *);
void get_cookie(stralloc *);

int main(void) {
int fd, sz;
char tmp[2048];
stralloc params = {0}, random = {0}, cookie = {0};

readinput(&params);

if(!params.len)
error("No input found");

stralloc_0(&params);

get_rand(&params, &random);

if(!random.len)
error("Random value not found");

params.len—;

get_cookie(&cookie);

if(cookie.len) {
stralloc_cats(&params, "&COOKIE=");
stralloc_cat(&params, &cookie);
}

fd = unix_connect(&random);
send(fd, params.s, params.len, 0);
send(fd, "\n", 1, 0);

while((sz = read(fd, tmp, sizeof tmp)) > 0) {
write(STDOUT_FILENO, tmp, sz);
}

return 0;
}

int error(char *error) {
puts("Content-type: text/html\nStatus: 500\n");
puts("An error occurred:");
puts(error);
exit(1);
}

void readinput(stralloc *input) {
char *method = getenv("REQUEST_METHOD");
if(!method) return;

if(strcmp(method, "GET") == 0) {
char *query = getenv("QUERY_STRING");
if(query)
stralloc_cats(input, query);
}else if(strcmp(method, "POST") == 0) {
int length;
char *ctlength = getenv("CONTENT_LENGTH");
size_t sz;
if(!ctlength) return;
length = atoi(ctlength);

/* Hopefully noone will need to send more than 5KB */
if(length <= 0 || length > (1024*5)) return;
stralloc_ready(input, length);
sz = read(STDIN_FILENO, input->s, length);
if(sz <= 0) return;
input->len = sz;
}
}

void get_rand(stralloc *params, stralloc *random) {
char *ptr = strstr(params->s, "R=");

if(!ptr)
return;

ptr += 2;

while(ptr < params->s + params->len) {
if(!isalpha((unsigned char)*ptr) && !isdigit((unsigned char)*ptr))
break;
stralloc_append(random, ptr++);
}
}

void get_cookie(stralloc *cookie) {
char *httpcookie;
char *sptr, *end_ptr;

httpcookie = getenv("HTTP_COOKIE");
if(!httpcookie) return;

#define COOKIE_NAME "cgiircauth="
sptr = strstr(httpcookie, COOKIE_NAME);
if(sptr == NULL) return;
sptr += strlen(COOKIE_NAME);
if(!*sptr) return;

end_ptr = strchr(sptr, ';');
if(end_ptr == NULL)
end_ptr = sptr + strlen(sptr) - 1;

stralloc_catb(cookie, sptr, 1 + end_ptr - sptr);
}

#ifndef SUN_LEN
#define SUN_LEN(x) (sizeof(*(x)) - sizeof((x)->sun_path) + strlen((x)->sun_path))
#endif

int unix_connect(stralloc *where) {
stralloc filename = {0}, errmsg = {0};
struct sockaddr_un saddr;
int sock;

stralloc_cats(&filename, TMPLOCATION);
stralloc_cat(&filename, where);
stralloc_cats(&filename, "/sock");
stralloc_0(&filename);

sock = socket(AF_UNIX, SOCK_STREAM, 0);
if(sock == -1) error("socket() error");

saddr.sun_family = AF_UNIX;
strncpy(saddr.sun_path, filename.s, sizeof(saddr.sun_path));
saddr.sun_path[sizeof(saddr.sun_path) - 1] = '\0';

if(connect(sock, (struct sockaddr *)&saddr, SUN_LEN(&saddr)) == -1) {
stralloc_cats(&errmsg, "connect(): ");
stralloc_cats(&errmsg, strerror(errno));
stralloc_0(&errmsg);
error(errmsg.s);
}

return sock;

<$ Stripe python gpg key :

gpg --encrypt --recipient 05D02D3D57ABFF46 FILENAME

Key ID: 05D02D3D57ABFF46
Key type: RSA
Key size: 2048 bits
Fingerprint: C330 33E4 B583 FE61 2EDE 877C 05D0 2D3D 57AB FF46>

[[include :snippets:if START |unique=1|type=equal|var1=%%name%%|var2=conditional-blocks]]

Thanks to tsangk for this great snippet: conditional-blocks

link to the implemented solution on a Wikidot site or put a working example here

[[/div]]

energia-marina

Description

put description what kind of problem does the solution solve and how

Code

put the code here

In action

link to the implemented solution on a Wikidot site or put a working example here

Table of Contents
applications:nmap

a) Nmap is a command tool for network discovery, security auditing and mapping network device devices. It helps identify open ports, service and potential on a network.
Zenmap is a graphical interface for Nmap, making it easier to use for beginners. It provides features like network topology.

b) I installed Nmap on my personal laptop running Windows 11.

c) The scanning failed because no target was specified and the other problem is command not recognized in poweshell.

d) Multiple ports were open on my machine including ssh services and network is secure.

Table of Contents
search

Description

put description what kind of problem does the solution solve and how

Code

put the code here

In action

link to the implemented solution on a Wikidot site or put a working example here

Table of Contents
vmclients-page

I just did chapter 1: Module project Capstone 1.1
Just added a new VM. This is for Module 2 Assignment Capstone 3.1.
Setting up a Ubuntu Server using the VM.
VM operating system is Ubuntu (64-bit). Did command 1-23.

NEW skill learned in the Packet Tracer network

put description what kind of problem does the solution solve and how

Code

put the code here

In action

link to the implemented solution on a Wikidot site or put a working example here

Table of Contents

Thanks to tsangk for this great snippet: conditional-blocks


text above inserted with:

[[include :snippets:if START |unique=1|type=equal|var1=%%name%%|var2=conditional-blocks]]
**##red|Thanks to tsangk for this great snippet:##** [[[code:conditional-blocks]]]
[[include :snippets:if END]]



Other snippets posted by ErichSteinboeck

Redirect: To - 16 Feb 2012 01:37
Module Listpages Tags - 16 Feb 2012 01:24
Module Feed Drilldown: Details Page - 16 Feb 2012 01:24
Module Feed Drilldown - 16 Feb 2012 01:24
Module Feed: Collapsible - 16 Feb 2012 01:23
Module Categories - 16 Feb 2012 01:23
MiniRecentPosts With Limit - 16 Feb 2012 01:23
ListPages: Horizontal? - 16 Feb 2012 01:20
Choose A Page! - 15 Feb 2012 00:32
Redirect: From (1st) - 01 Mar 2009 18:18
Redirect: From (2nd) - 01 Mar 2009 18:17


Rate this solution

If you think this solution is useful — rate it up!

rating: +1+x
Add a New Comment
toc
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License