@cubist-labs/cubesigner-sdk 0.3.23 → 0.3.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,7 +29,7 @@ export type MemberRole = schemas["MemberRole"];
29
29
  export type SchemaKeyType = schemas["KeyType"];
30
30
  export type ListKeysResponse = schemas["PaginatedListKeysResponse"];
31
31
  export type UpdateKeyRequest = schemas["UpdateKeyRequest"];
32
- export type UpdateKeyProperties = schemas["UpdateKeyProperties"];
32
+ export type KeyProperties = schemas["CreateAndUpdateKeyProperties"];
33
33
  export type CreateKeyRequest = schemas["CreateKeyRequest"];
34
34
  export type KeyInfoApi = schemas["KeyInfo"];
35
35
  export type KeyInRoleInfo = schemas["KeyInRoleInfo"];
@@ -83,6 +83,8 @@ export type UserExportKeyMaterial = schemas["JsonKeyPackage"];
83
83
  export type Empty = schemas["EmptyImpl"];
84
84
  /** Options for a new OIDC user */
85
85
  export interface CreateOidcUserOptions {
86
+ /** Optional name */
87
+ name?: string | null;
86
88
  /** The role of an OIDC user, default is "Alien" */
87
89
  memberRole?: MemberRole;
88
90
  /** Optional MFA policy to associate with the user account */
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjaGVtYV90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWZhUG9saWN5IH0gZnJvbSBcIi4vcm9sZVwiO1xuaW1wb3J0IHsgY29tcG9uZW50cyB9IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHsgSnNvbk1hcCB9IGZyb20gXCIuL3V0aWxcIjtcblxudHlwZSBzY2hlbWFzID0gY29tcG9uZW50c1tcInNjaGVtYXNcIl07XG5cbmV4cG9ydCB0eXBlIFVzZXJJbmZvID0gc2NoZW1hc1tcIlVzZXJJbmZvXCJdO1xuZXhwb3J0IHR5cGUgVXNlckluT3JnTWVtYmVyc2hpcCA9IHNjaGVtYXNbXCJVc2VySW5PcmdNZW1iZXJzaGlwXCJdO1xuZXhwb3J0IHR5cGUgQ29uZmlndXJlZE1mYSA9IHNjaGVtYXNbXCJDb25maWd1cmVkTWZhXCJdO1xuZXhwb3J0IHR5cGUgUmF0Y2hldENvbmZpZyA9IHNjaGVtYXNbXCJSYXRjaGV0Q29uZmlnXCJdO1xuZXhwb3J0IHR5cGUgSWRlbnRpdHlQcm9vZiA9IHNjaGVtYXNbXCJJZGVudGl0eVByb29mXCJdO1xuZXhwb3J0IHR5cGUgVG90cEluZm8gPSBzY2hlbWFzW1wiVG90cEluZm9cIl07XG5cbmV4cG9ydCB0eXBlIE9pZGNBdXRoUmVzcG9uc2UgPSBzY2hlbWFzW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgQXBpQWRkRmlkb0NoYWxsZW5nZSA9IHNjaGVtYXNbXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBBcGlNZmFGaWRvQ2hhbGxlbmdlID0gc2NoZW1hc1tcIkZpZG9Bc3NlcnRDaGFsbGVuZ2VcIl07XG5cbmV4cG9ydCB0eXBlIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgPSBzY2hlbWFzW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXTtcbmV4cG9ydCB0eXBlIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyA9IHNjaGVtYXNbXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG5leHBvcnQgdHlwZSBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVycyA9IHNjaGVtYXNbXCJQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVyc1wiXTtcbmV4cG9ydCB0eXBlIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yID0gc2NoZW1hc1tcIlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXCJdO1xuZXhwb3J0IHR5cGUgQXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhID0gc2NoZW1hc1tcIkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVwiXTtcbmV4cG9ydCB0eXBlIFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5ID0gc2NoZW1hc1tcIlB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5XCJdO1xuZXhwb3J0IHR5cGUgUHVibGljS2V5Q3JlZGVudGlhbCA9IHNjaGVtYXNbXCJQdWJsaWNLZXlDcmVkZW50aWFsXCJdO1xuXG5leHBvcnQgdHlwZSBPcmdJbmZvID0gc2NoZW1hc1tcIk9yZ0luZm9cIl07XG5leHBvcnQgdHlwZSBVc2VySW5PcmdJbmZvID0gc2NoZW1hc1tcIlVzZXJJbk9yZ0luZm9cIl07XG5leHBvcnQgdHlwZSBVcGRhdGVPcmdSZXF1ZXN0ID0gc2NoZW1hc1tcIlVwZGF0ZU9yZ1JlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBVcGRhdGVPcmdSZXNwb25zZSA9IHNjaGVtYXNbXCJVcGRhdGVPcmdSZXNwb25zZVwiXTtcbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvbkVuZHBvaW50Q29uZmlndXJhdGlvbiA9IHNjaGVtYXNbXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl07XG5leHBvcnQgdHlwZSBPcmdFdmVudHMgPSBzY2hlbWFzW1wiT3JnRXZlbnREaXNjcmltaW5hbnRzXCJdO1xuXG5leHBvcnQgdHlwZSBPaWRjSWRlbnRpdHkgPSBzY2hlbWFzW1wiT0lEQ0lkZW50aXR5XCJdO1xuZXhwb3J0IHR5cGUgTWVtYmVyUm9sZSA9IHNjaGVtYXNbXCJNZW1iZXJSb2xlXCJdO1xuXG5leHBvcnQgdHlwZSBTY2hlbWFLZXlUeXBlID0gc2NoZW1hc1tcIktleVR5cGVcIl07XG5cbmV4cG9ydCB0eXBlIExpc3RLZXlzUmVzcG9uc2UgPSBzY2hlbWFzW1wiUGFnaW5hdGVkTGlzdEtleXNSZXNwb25zZVwiXTtcbmV4cG9ydCB0eXBlIFVwZGF0ZUtleVJlcXVlc3QgPSBzY2hlbWFzW1wiVXBkYXRlS2V5UmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIFVwZGF0ZUtleVByb3BlcnRpZXMgPSBzY2hlbWFzW1wiVXBkYXRlS2V5UHJvcGVydGllc1wiXTtcbmV4cG9ydCB0eXBlIENyZWF0ZUtleVJlcXVlc3QgPSBzY2hlbWFzW1wiQ3JlYXRlS2V5UmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIEtleUluZm9BcGkgPSBzY2hlbWFzW1wiS2V5SW5mb1wiXTtcbmV4cG9ydCB0eXBlIEtleUluUm9sZUluZm8gPSBzY2hlbWFzW1wiS2V5SW5Sb2xlSW5mb1wiXTtcbmV4cG9ydCB0eXBlIFVzZXJJblJvbGVJbmZvID0gc2NoZW1hc1tcIlVzZXJJblJvbGVJbmZvXCJdO1xuZXhwb3J0IHR5cGUgS2V5VHlwZUFwaSA9IHNjaGVtYXNbXCJLZXlUeXBlXCJdO1xuXG5leHBvcnQgdHlwZSBMaXN0S2V5Um9sZXNSZXNwb25zZSA9IHNjaGVtYXNbXCJQYWdpbmF0ZWRMaXN0S2V5Um9sZXNSZXNwb25zZVwiXTtcbmV4cG9ydCB0eXBlIExpc3RSb2xlc1Jlc3BvbnNlID0gc2NoZW1hc1tcIlBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgTGlzdFJvbGVLZXlzUmVzcG9uc2UgPSBzY2hlbWFzW1wiUGFnaW5hdGVkTGlzdFJvbGVLZXlzUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBMaXN0Um9sZVVzZXJzUmVzcG9uc2UgPSBzY2hlbWFzW1wiUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgVXBkYXRlUm9sZVJlcXVlc3QgPSBzY2hlbWFzW1wiVXBkYXRlUm9sZVJlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBLZXlXaXRoUG9saWNpZXNJbmZvID0gc2NoZW1hc1tcIktleUluUm9sZUluZm9cIl07XG5leHBvcnQgdHlwZSBSb2xlSW5mbyA9IHNjaGVtYXNbXCJSb2xlSW5mb1wiXTtcblxuZXhwb3J0IHR5cGUgU2Vzc2lvbkluZm8gPSBzY2hlbWFzW1wiU2Vzc2lvbkluZm9cIl07XG5leHBvcnQgdHlwZSBDbGllbnRTZXNzaW9uSW5mbyA9IHNjaGVtYXNbXCJDbGllbnRTZXNzaW9uSW5mb1wiXTtcbmV4cG9ydCB0eXBlIE5ld1Nlc3Npb25SZXNwb25zZSA9IHNjaGVtYXNbXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBTZXNzaW9uc1Jlc3BvbnNlID0gc2NoZW1hc1tcIlBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2VcIl07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZVNpZ25lclNlc3Npb25SZXF1ZXN0ID0gc2NoZW1hc1tcIkNyZWF0ZVRva2VuUmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIFJlZnJlc2hTaWduZXJTZXNzaW9uUmVxdWVzdCA9IHNjaGVtYXNbXCJBdXRoRGF0YVwiXTtcblxuZXhwb3J0IHR5cGUgRXZtU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiRXRoMVNpZ25SZXF1ZXN0XCJdO1xuZXhwb3J0IHR5cGUgRXZtU2lnblJlc3BvbnNlID0gc2NoZW1hc1tcIkV0aDFTaWduUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBFaXAxOTFTaWduUmVxdWVzdCA9IHNjaGVtYXNbXCJFaXAxOTFTaWduUmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIEVpcDcxMlNpZ25SZXF1ZXN0ID0gc2NoZW1hc1tcIkVpcDcxMlNpZ25SZXF1ZXN0XCJdO1xuZXhwb3J0IHR5cGUgRWlwMTkxT3I3MTJTaWduUmVzcG9uc2UgPSBzY2hlbWFzW1wiRWlwMTkxT3I3MTJTaWduUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBFdGgyU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiRXRoMlNpZ25SZXF1ZXN0XCJdO1xuZXhwb3J0IHR5cGUgRXRoMlNpZ25SZXNwb25zZSA9IHNjaGVtYXNbXCJFdGgyU2lnblJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgRXRoMlN0YWtlUmVxdWVzdCA9IHNjaGVtYXNbXCJTdGFrZVJlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBFdGgyU3Rha2VSZXNwb25zZSA9IHNjaGVtYXNbXCJTdGFrZVJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgRXRoMlVuc3Rha2VSZXF1ZXN0ID0gc2NoZW1hc1tcIlVuc3Rha2VSZXF1ZXN0XCJdO1xuZXhwb3J0IHR5cGUgRXRoMlVuc3Rha2VSZXNwb25zZSA9IHNjaGVtYXNbXCJVbnN0YWtlUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBCbG9iU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiQmxvYlNpZ25SZXF1ZXN0XCJdO1xuZXhwb3J0IHR5cGUgQmxvYlNpZ25SZXNwb25zZSA9IHNjaGVtYXNbXCJCbG9iU2lnblJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgQnRjU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiQnRjU2lnblJlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBCdGNTaWduUmVzcG9uc2UgPSBzY2hlbWFzW1wiQnRjU2lnblJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgU29sYW5hU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiU29sYW5hU2lnblJlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBTb2xhbmFTaWduUmVzcG9uc2UgPSBzY2hlbWFzW1wiU29sYW5hU2lnblJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgQXZhU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiQXZhU2lnblJlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBBdmFTaWduUmVzcG9uc2UgPSBzY2hlbWFzW1wiQXZhU2lnblJlc3BvbnNlXCJdO1xuXG5leHBvcnQgdHlwZSBBY2NlcHRlZFJlc3BvbnNlID0gc2NoZW1hc1tcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBFcnJvclJlc3BvbnNlID0gc2NoZW1hc1tcIkVycm9yUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBCdGNTaWduYXR1cmVLaW5kID0gc2NoZW1hc1tcIkJ0Y1NpZ25hdHVyZUtpbmRcIl07XG5leHBvcnQgdHlwZSBDc0VyckNvZGUgPSBzY2hlbWFzW1wiU2lnbmVyRXJyb3JDb2RlXCJdO1xuXG5leHBvcnQgdHlwZSBNZmFUeXBlID0gc2NoZW1hc1tcIk1mYVR5cGVcIl07XG5leHBvcnQgdHlwZSBNZmFWb3RlID0gc2NoZW1hc1tcIk1mYVZvdGVcIl07XG5leHBvcnQgdHlwZSBNZmFSZXF1ZXN0SW5mbyA9IHNjaGVtYXNbXCJNZmFSZXF1ZXN0SW5mb1wiXTtcblxuZXhwb3J0IHR5cGUgVXNlckV4cG9ydEluaXRSZXF1ZXN0ID0gc2NoZW1hc1tcIlVzZXJFeHBvcnRJbml0UmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIFVzZXJFeHBvcnRJbml0UmVzcG9uc2UgPSBzY2hlbWFzW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXTtcbmV4cG9ydCB0eXBlIFVzZXJFeHBvcnRDb21wbGV0ZVJlcXVlc3QgPSBzY2hlbWFzW1wiVXNlckV4cG9ydENvbXBsZXRlUmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlID0gc2NoZW1hc1tcIlVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgVXNlckV4cG9ydExpc3RSZXNwb25zZSA9IHNjaGVtYXNbXCJQYWdpbmF0ZWRVc2VyRXhwb3J0TGlzdFJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgVXNlckV4cG9ydEtleU1hdGVyaWFsID0gc2NoZW1hc1tcIkpzb25LZXlQYWNrYWdlXCJdO1xuXG5leHBvcnQgdHlwZSBFbXB0eSA9IHNjaGVtYXNbXCJFbXB0eUltcGxcIl07XG5cbi8qKiBPcHRpb25zIGZvciBhIG5ldyBPSURDIHVzZXIgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT2lkY1VzZXJPcHRpb25zIHtcbiAgLyoqIFRoZSByb2xlIG9mIGFuIE9JREMgdXNlciwgZGVmYXVsdCBpcyBcIkFsaWVuXCIgKi9cbiAgbWVtYmVyUm9sZT86IE1lbWJlclJvbGU7XG4gIC8qKiBPcHRpb25hbCBNRkEgcG9saWN5IHRvIGFzc29jaWF0ZSB3aXRoIHRoZSB1c2VyIGFjY291bnQgKi9cbiAgbWZhUG9saWN5PzogTWZhUG9saWN5O1xufVxuXG4vKiogQXZhIFAtIG9yIFgtY2hhaW4gdHJhbnNhY3Rpb24gKi9cbmV4cG9ydCB0eXBlIEF2YVR4ID0geyBQOiBBdmFQQ2hhaW5UeCB9IHwgeyBYOiBBdmFYQ2hhaW5UeCB9O1xuXG4vKiogQXZhIFAtY2hhaW4gdHJhbnNhY3Rpb24gKi9cbmV4cG9ydCB0eXBlIEF2YVBDaGFpblR4ID1cbiAgfCB7IEFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yOiBKc29uTWFwIH1cbiAgfCB7IEFkZFN1Ym5ldFZhbGlkYXRvcjogSnNvbk1hcCB9XG4gIHwgeyBBZGRWYWxpZGF0b3I6IEpzb25NYXAgfVxuICB8IHsgQ3JlYXRlQ2hhaW46IEpzb25NYXAgfVxuICB8IHsgQ3JlYXRlU3VibmV0OiBKc29uTWFwIH1cbiAgfCB7IEV4cG9ydDogSnNvbk1hcCB9XG4gIHwgeyBJbXBvcnQ6IEpzb25NYXAgfTtcblxuLyoqIEF2YSBYLWNoYWluIHRyYW5zYWN0aW9uICovXG5leHBvcnQgdHlwZSBBdmFYQ2hhaW5UeCA9IHsgQmFzZTogSnNvbk1hcCB9IHwgeyBFeHBvcnQ6IEpzb25NYXAgfSB8IHsgSW1wb3J0OiBKc29uTWFwIH07XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjaGVtYV90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWZhUG9saWN5IH0gZnJvbSBcIi4vcm9sZVwiO1xuaW1wb3J0IHsgY29tcG9uZW50cyB9IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHsgSnNvbk1hcCB9IGZyb20gXCIuL3V0aWxcIjtcblxudHlwZSBzY2hlbWFzID0gY29tcG9uZW50c1tcInNjaGVtYXNcIl07XG5cbmV4cG9ydCB0eXBlIFVzZXJJbmZvID0gc2NoZW1hc1tcIlVzZXJJbmZvXCJdO1xuZXhwb3J0IHR5cGUgVXNlckluT3JnTWVtYmVyc2hpcCA9IHNjaGVtYXNbXCJVc2VySW5PcmdNZW1iZXJzaGlwXCJdO1xuZXhwb3J0IHR5cGUgQ29uZmlndXJlZE1mYSA9IHNjaGVtYXNbXCJDb25maWd1cmVkTWZhXCJdO1xuZXhwb3J0IHR5cGUgUmF0Y2hldENvbmZpZyA9IHNjaGVtYXNbXCJSYXRjaGV0Q29uZmlnXCJdO1xuZXhwb3J0IHR5cGUgSWRlbnRpdHlQcm9vZiA9IHNjaGVtYXNbXCJJZGVudGl0eVByb29mXCJdO1xuZXhwb3J0IHR5cGUgVG90cEluZm8gPSBzY2hlbWFzW1wiVG90cEluZm9cIl07XG5cbmV4cG9ydCB0eXBlIE9pZGNBdXRoUmVzcG9uc2UgPSBzY2hlbWFzW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgQXBpQWRkRmlkb0NoYWxsZW5nZSA9IHNjaGVtYXNbXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBBcGlNZmFGaWRvQ2hhbGxlbmdlID0gc2NoZW1hc1tcIkZpZG9Bc3NlcnRDaGFsbGVuZ2VcIl07XG5cbmV4cG9ydCB0eXBlIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgPSBzY2hlbWFzW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXTtcbmV4cG9ydCB0eXBlIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyA9IHNjaGVtYXNbXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG5leHBvcnQgdHlwZSBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVycyA9IHNjaGVtYXNbXCJQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVyc1wiXTtcbmV4cG9ydCB0eXBlIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yID0gc2NoZW1hc1tcIlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXCJdO1xuZXhwb3J0IHR5cGUgQXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhID0gc2NoZW1hc1tcIkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVwiXTtcbmV4cG9ydCB0eXBlIFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5ID0gc2NoZW1hc1tcIlB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5XCJdO1xuZXhwb3J0IHR5cGUgUHVibGljS2V5Q3JlZGVudGlhbCA9IHNjaGVtYXNbXCJQdWJsaWNLZXlDcmVkZW50aWFsXCJdO1xuXG5leHBvcnQgdHlwZSBPcmdJbmZvID0gc2NoZW1hc1tcIk9yZ0luZm9cIl07XG5leHBvcnQgdHlwZSBVc2VySW5PcmdJbmZvID0gc2NoZW1hc1tcIlVzZXJJbk9yZ0luZm9cIl07XG5leHBvcnQgdHlwZSBVcGRhdGVPcmdSZXF1ZXN0ID0gc2NoZW1hc1tcIlVwZGF0ZU9yZ1JlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBVcGRhdGVPcmdSZXNwb25zZSA9IHNjaGVtYXNbXCJVcGRhdGVPcmdSZXNwb25zZVwiXTtcbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvbkVuZHBvaW50Q29uZmlndXJhdGlvbiA9IHNjaGVtYXNbXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl07XG5leHBvcnQgdHlwZSBPcmdFdmVudHMgPSBzY2hlbWFzW1wiT3JnRXZlbnREaXNjcmltaW5hbnRzXCJdO1xuXG5leHBvcnQgdHlwZSBPaWRjSWRlbnRpdHkgPSBzY2hlbWFzW1wiT0lEQ0lkZW50aXR5XCJdO1xuZXhwb3J0IHR5cGUgTWVtYmVyUm9sZSA9IHNjaGVtYXNbXCJNZW1iZXJSb2xlXCJdO1xuXG5leHBvcnQgdHlwZSBTY2hlbWFLZXlUeXBlID0gc2NoZW1hc1tcIktleVR5cGVcIl07XG5cbmV4cG9ydCB0eXBlIExpc3RLZXlzUmVzcG9uc2UgPSBzY2hlbWFzW1wiUGFnaW5hdGVkTGlzdEtleXNSZXNwb25zZVwiXTtcbmV4cG9ydCB0eXBlIFVwZGF0ZUtleVJlcXVlc3QgPSBzY2hlbWFzW1wiVXBkYXRlS2V5UmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIEtleVByb3BlcnRpZXMgPSBzY2hlbWFzW1wiQ3JlYXRlQW5kVXBkYXRlS2V5UHJvcGVydGllc1wiXTtcbmV4cG9ydCB0eXBlIENyZWF0ZUtleVJlcXVlc3QgPSBzY2hlbWFzW1wiQ3JlYXRlS2V5UmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIEtleUluZm9BcGkgPSBzY2hlbWFzW1wiS2V5SW5mb1wiXTtcbmV4cG9ydCB0eXBlIEtleUluUm9sZUluZm8gPSBzY2hlbWFzW1wiS2V5SW5Sb2xlSW5mb1wiXTtcbmV4cG9ydCB0eXBlIFVzZXJJblJvbGVJbmZvID0gc2NoZW1hc1tcIlVzZXJJblJvbGVJbmZvXCJdO1xuZXhwb3J0IHR5cGUgS2V5VHlwZUFwaSA9IHNjaGVtYXNbXCJLZXlUeXBlXCJdO1xuXG5leHBvcnQgdHlwZSBMaXN0S2V5Um9sZXNSZXNwb25zZSA9IHNjaGVtYXNbXCJQYWdpbmF0ZWRMaXN0S2V5Um9sZXNSZXNwb25zZVwiXTtcbmV4cG9ydCB0eXBlIExpc3RSb2xlc1Jlc3BvbnNlID0gc2NoZW1hc1tcIlBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgTGlzdFJvbGVLZXlzUmVzcG9uc2UgPSBzY2hlbWFzW1wiUGFnaW5hdGVkTGlzdFJvbGVLZXlzUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBMaXN0Um9sZVVzZXJzUmVzcG9uc2UgPSBzY2hlbWFzW1wiUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgVXBkYXRlUm9sZVJlcXVlc3QgPSBzY2hlbWFzW1wiVXBkYXRlUm9sZVJlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBLZXlXaXRoUG9saWNpZXNJbmZvID0gc2NoZW1hc1tcIktleUluUm9sZUluZm9cIl07XG5leHBvcnQgdHlwZSBSb2xlSW5mbyA9IHNjaGVtYXNbXCJSb2xlSW5mb1wiXTtcblxuZXhwb3J0IHR5cGUgU2Vzc2lvbkluZm8gPSBzY2hlbWFzW1wiU2Vzc2lvbkluZm9cIl07XG5leHBvcnQgdHlwZSBDbGllbnRTZXNzaW9uSW5mbyA9IHNjaGVtYXNbXCJDbGllbnRTZXNzaW9uSW5mb1wiXTtcbmV4cG9ydCB0eXBlIE5ld1Nlc3Npb25SZXNwb25zZSA9IHNjaGVtYXNbXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBTZXNzaW9uc1Jlc3BvbnNlID0gc2NoZW1hc1tcIlBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2VcIl07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZVNpZ25lclNlc3Npb25SZXF1ZXN0ID0gc2NoZW1hc1tcIkNyZWF0ZVRva2VuUmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIFJlZnJlc2hTaWduZXJTZXNzaW9uUmVxdWVzdCA9IHNjaGVtYXNbXCJBdXRoRGF0YVwiXTtcblxuZXhwb3J0IHR5cGUgRXZtU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiRXRoMVNpZ25SZXF1ZXN0XCJdO1xuZXhwb3J0IHR5cGUgRXZtU2lnblJlc3BvbnNlID0gc2NoZW1hc1tcIkV0aDFTaWduUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBFaXAxOTFTaWduUmVxdWVzdCA9IHNjaGVtYXNbXCJFaXAxOTFTaWduUmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIEVpcDcxMlNpZ25SZXF1ZXN0ID0gc2NoZW1hc1tcIkVpcDcxMlNpZ25SZXF1ZXN0XCJdO1xuZXhwb3J0IHR5cGUgRWlwMTkxT3I3MTJTaWduUmVzcG9uc2UgPSBzY2hlbWFzW1wiRWlwMTkxT3I3MTJTaWduUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBFdGgyU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiRXRoMlNpZ25SZXF1ZXN0XCJdO1xuZXhwb3J0IHR5cGUgRXRoMlNpZ25SZXNwb25zZSA9IHNjaGVtYXNbXCJFdGgyU2lnblJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgRXRoMlN0YWtlUmVxdWVzdCA9IHNjaGVtYXNbXCJTdGFrZVJlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBFdGgyU3Rha2VSZXNwb25zZSA9IHNjaGVtYXNbXCJTdGFrZVJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgRXRoMlVuc3Rha2VSZXF1ZXN0ID0gc2NoZW1hc1tcIlVuc3Rha2VSZXF1ZXN0XCJdO1xuZXhwb3J0IHR5cGUgRXRoMlVuc3Rha2VSZXNwb25zZSA9IHNjaGVtYXNbXCJVbnN0YWtlUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBCbG9iU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiQmxvYlNpZ25SZXF1ZXN0XCJdO1xuZXhwb3J0IHR5cGUgQmxvYlNpZ25SZXNwb25zZSA9IHNjaGVtYXNbXCJCbG9iU2lnblJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgQnRjU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiQnRjU2lnblJlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBCdGNTaWduUmVzcG9uc2UgPSBzY2hlbWFzW1wiQnRjU2lnblJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgU29sYW5hU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiU29sYW5hU2lnblJlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBTb2xhbmFTaWduUmVzcG9uc2UgPSBzY2hlbWFzW1wiU29sYW5hU2lnblJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgQXZhU2lnblJlcXVlc3QgPSBzY2hlbWFzW1wiQXZhU2lnblJlcXVlc3RcIl07XG5leHBvcnQgdHlwZSBBdmFTaWduUmVzcG9uc2UgPSBzY2hlbWFzW1wiQXZhU2lnblJlc3BvbnNlXCJdO1xuXG5leHBvcnQgdHlwZSBBY2NlcHRlZFJlc3BvbnNlID0gc2NoZW1hc1tcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBFcnJvclJlc3BvbnNlID0gc2NoZW1hc1tcIkVycm9yUmVzcG9uc2VcIl07XG5leHBvcnQgdHlwZSBCdGNTaWduYXR1cmVLaW5kID0gc2NoZW1hc1tcIkJ0Y1NpZ25hdHVyZUtpbmRcIl07XG5leHBvcnQgdHlwZSBDc0VyckNvZGUgPSBzY2hlbWFzW1wiU2lnbmVyRXJyb3JDb2RlXCJdO1xuXG5leHBvcnQgdHlwZSBNZmFUeXBlID0gc2NoZW1hc1tcIk1mYVR5cGVcIl07XG5leHBvcnQgdHlwZSBNZmFWb3RlID0gc2NoZW1hc1tcIk1mYVZvdGVcIl07XG5leHBvcnQgdHlwZSBNZmFSZXF1ZXN0SW5mbyA9IHNjaGVtYXNbXCJNZmFSZXF1ZXN0SW5mb1wiXTtcblxuZXhwb3J0IHR5cGUgVXNlckV4cG9ydEluaXRSZXF1ZXN0ID0gc2NoZW1hc1tcIlVzZXJFeHBvcnRJbml0UmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIFVzZXJFeHBvcnRJbml0UmVzcG9uc2UgPSBzY2hlbWFzW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXTtcbmV4cG9ydCB0eXBlIFVzZXJFeHBvcnRDb21wbGV0ZVJlcXVlc3QgPSBzY2hlbWFzW1wiVXNlckV4cG9ydENvbXBsZXRlUmVxdWVzdFwiXTtcbmV4cG9ydCB0eXBlIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlID0gc2NoZW1hc1tcIlVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgVXNlckV4cG9ydExpc3RSZXNwb25zZSA9IHNjaGVtYXNbXCJQYWdpbmF0ZWRVc2VyRXhwb3J0TGlzdFJlc3BvbnNlXCJdO1xuZXhwb3J0IHR5cGUgVXNlckV4cG9ydEtleU1hdGVyaWFsID0gc2NoZW1hc1tcIkpzb25LZXlQYWNrYWdlXCJdO1xuXG5leHBvcnQgdHlwZSBFbXB0eSA9IHNjaGVtYXNbXCJFbXB0eUltcGxcIl07XG5cbi8qKiBPcHRpb25zIGZvciBhIG5ldyBPSURDIHVzZXIgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT2lkY1VzZXJPcHRpb25zIHtcbiAgLyoqIE9wdGlvbmFsIG5hbWUgKi9cbiAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUaGUgcm9sZSBvZiBhbiBPSURDIHVzZXIsIGRlZmF1bHQgaXMgXCJBbGllblwiICovXG4gIG1lbWJlclJvbGU/OiBNZW1iZXJSb2xlO1xuICAvKiogT3B0aW9uYWwgTUZBIHBvbGljeSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgdXNlciBhY2NvdW50ICovXG4gIG1mYVBvbGljeT86IE1mYVBvbGljeTtcbn1cblxuLyoqIEF2YSBQLSBvciBYLWNoYWluIHRyYW5zYWN0aW9uICovXG5leHBvcnQgdHlwZSBBdmFUeCA9IHsgUDogQXZhUENoYWluVHggfSB8IHsgWDogQXZhWENoYWluVHggfTtcblxuLyoqIEF2YSBQLWNoYWluIHRyYW5zYWN0aW9uICovXG5leHBvcnQgdHlwZSBBdmFQQ2hhaW5UeCA9XG4gIHwgeyBBZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvcjogSnNvbk1hcCB9XG4gIHwgeyBBZGRTdWJuZXRWYWxpZGF0b3I6IEpzb25NYXAgfVxuICB8IHsgQWRkVmFsaWRhdG9yOiBKc29uTWFwIH1cbiAgfCB7IENyZWF0ZUNoYWluOiBKc29uTWFwIH1cbiAgfCB7IENyZWF0ZVN1Ym5ldDogSnNvbk1hcCB9XG4gIHwgeyBFeHBvcnQ6IEpzb25NYXAgfVxuICB8IHsgSW1wb3J0OiBKc29uTWFwIH07XG5cbi8qKiBBdmEgWC1jaGFpbiB0cmFuc2FjdGlvbiAqL1xuZXhwb3J0IHR5cGUgQXZhWENoYWluVHggPSB7IEJhc2U6IEpzb25NYXAgfSB8IHsgRXhwb3J0OiBKc29uTWFwIH0gfCB7IEltcG9ydDogSnNvbk1hcCB9O1xuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cubist-labs/cubesigner-sdk",
3
- "version": "0.3.23",
3
+ "version": "0.3.25",
4
4
  "description": "CubeSigner TypeScript SDK",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "author": "Cubist, Inc.",
package/src/api.ts CHANGED
@@ -74,7 +74,7 @@ import { KeyPolicy } from "./role";
74
74
  import { EnvInterface } from "./env";
75
75
  import { loadSubtleCrypto } from "./user_export";
76
76
  import { EventEmitter } from "./events";
77
- import { NAME, UpdateKeyProperties, VERSION } from "./index";
77
+ import { NAME, KeyProperties, VERSION } from "./index";
78
78
 
79
79
  /** @internal */
80
80
  export type Client = ReturnType<typeof createClient<paths>>;
@@ -610,7 +610,7 @@ export class CubeSignerApi {
610
610
  */
611
611
  async orgUserCreateOidc(
612
612
  identity: OidcIdentity,
613
- email: string,
613
+ email?: string | null,
614
614
  opts: CreateOidcUserOptions = {},
615
615
  ): Promise<string> {
616
616
  const client = await this.client("createOidcUser");
@@ -619,8 +619,9 @@ export class CubeSignerApi {
619
619
  body: {
620
620
  identity,
621
621
  role: opts.memberRole ?? "Alien",
622
- email: email,
623
- mfa_policy: opts.mfaPolicy ?? null,
622
+ email,
623
+ name: opts.name,
624
+ mfa_policy: opts.mfaPolicy,
624
625
  },
625
626
  });
626
627
  return data.user_id;
@@ -712,14 +713,14 @@ export class CubeSignerApi {
712
713
  * @param {KeyType} keyType The type of key to create.
713
714
  * @param {number} count The number of keys to create.
714
715
  * @param {string?} ownerId The owner of the keys. Defaults to the session's user.
715
- * @param {UpdateKeyProperties?} props Additional key properties
716
+ * @param {KeyProperties?} props Additional key properties
716
717
  * @return {KeyInfoApi[]} The new keys.
717
718
  */
718
719
  async keysCreate(
719
720
  keyType: KeyType,
720
721
  count: number,
721
722
  ownerId?: string,
722
- props?: UpdateKeyProperties,
723
+ props?: KeyProperties,
723
724
  ): Promise<KeyInfoApi[]> {
724
725
  const chain_id = 0; // not used anymore
725
726
  const client = await this.client("createKey");
package/src/client.ts CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  OrgInfo,
7
7
  PublicKeyCredential,
8
8
  RatchetConfig,
9
- UpdateKeyProperties,
9
+ KeyProperties,
10
10
  } from "./schema_types";
11
11
  import { MfaReceipt } from "./mfa";
12
12
  import { PageOpts } from "./paginator";
@@ -74,10 +74,10 @@ export class CubeSignerClient extends CubeSignerApi {
74
74
  * Create a new signing key.
75
75
  * @param {KeyType} type The type of key to create.
76
76
  * @param {string?} ownerId The owner of the key. Defaults to the session's user.
77
- * @param {UpdateKeyProperties?} props Additional key properties
77
+ * @param {KeyProperties?} props Additional key properties
78
78
  * @return {Key[]} The new keys.
79
79
  */
80
- async createKey(type: KeyType, ownerId?: string, props?: UpdateKeyProperties): Promise<Key> {
80
+ async createKey(type: KeyType, ownerId?: string, props?: KeyProperties): Promise<Key> {
81
81
  const keys = await this.keysCreate(type, 1, ownerId, props);
82
82
  return new Key(this, keys[0]);
83
83
  }
package/src/index.ts CHANGED
@@ -298,8 +298,6 @@ export * from "./role";
298
298
  export * from "./env";
299
299
  /** Fido */
300
300
  export * from "./mfa";
301
- /** Utils for processing org events */
302
- export * from "./org_event_processor";
303
301
  /** Pagination */
304
302
  export * from "./paginator";
305
303
  /** Response */
package/src/org.ts CHANGED
@@ -14,7 +14,29 @@ export type OrgPolicy =
14
14
  | SourceIpAllowlistPolicy
15
15
  | OidcAuthSourcesPolicy
16
16
  | OriginAllowlistPolicy
17
- | MaxDailyUnstakePolicy;
17
+ | MaxDailyUnstakePolicy
18
+ | WebAuthnRelyingPartiesPolicy
19
+ | ExclusiveKeyAccessPolicy;
20
+
21
+ /**
22
+ * Whether to enforce exclusive access to keys. Concretely,
23
+ * - if "LimitToKeyOwner" is set, only key owners are permitted to access
24
+ * their keys for signing: a user session (not a role session) is required
25
+ * for signing, and adding a key to a role is not permitted.
26
+ * - if "LimitToSingleRole" is set, each key is permitted to be in at most
27
+ * one role, and signing is only allowed when authenticating using a role session token.
28
+ */
29
+ export interface ExclusiveKeyAccessPolicy {
30
+ ExclusiveKeyAccess: "LimitToKeyOwner" | "LimitToSingleRole";
31
+ }
32
+
33
+ /**
34
+ * The set of relying parties to allow for webauthn registration
35
+ * These correspond to domains from which browsers can successfully create credentials.
36
+ */
37
+ export interface WebAuthnRelyingPartiesPolicy {
38
+ WebAuthnRelyingParties: { id?: string; name: string }[];
39
+ }
18
40
 
19
41
  /**
20
42
  * Provides an allowlist of OIDC Issuers and audiences that are allowed to authenticate into this org.
package/src/role.ts CHANGED
@@ -142,12 +142,13 @@ type KeyDenyPolicy = TxReceiver | TxDeposit | SourceIpAllowlist | RequireMfa;
142
142
  * }
143
143
  * ]
144
144
  */
145
- export type KeyPolicy = (
145
+ export type KeyPolicy = KeyPolicyRule[];
146
+
147
+ export type KeyPolicyRule =
146
148
  | KeyDenyPolicy
147
149
  | AllowRawBlobSigning
148
150
  | AllowEip191Signing
149
- | AllowEip712Signing
150
- )[];
151
+ | AllowEip712Signing;
151
152
 
152
153
  /** Role policy */
153
154
  export type RolePolicy = KeyDenyPolicy[];
package/src/schema.ts CHANGED
@@ -835,10 +835,10 @@ export interface components {
835
835
  };
836
836
  AddThirdPartyUserRequest: {
837
837
  /**
838
- * @description User email
838
+ * @description Optional user email
839
839
  * @example alice@example.com
840
840
  */
841
- email: string;
841
+ email?: string | null;
842
842
  identity: components["schemas"]["OIDCIdentity"];
843
843
  /** @description Optional login MFA policy */
844
844
  mfa_policy?: unknown;
@@ -1205,6 +1205,31 @@ export interface components {
1205
1205
  /** @enum {string} */
1206
1206
  type: "fido";
1207
1207
  };
1208
+ CreateAndUpdateKeyProperties: {
1209
+ /**
1210
+ * @description Set this key's metadata. Validation regex: ^[A-Za-z0-9_=+/ \-\.\,]{0,1024}$
1211
+ * @example Contract admin key
1212
+ */
1213
+ metadata?: string | null;
1214
+ /**
1215
+ * @description Specify a user other than themselves to be the (potentially new) owner of the key.
1216
+ * The specified owner must be an existing user who is a member of the same org.
1217
+ * @example User#c3b9379c-4e8c-4216-bd0a-65ace53cf98f
1218
+ */
1219
+ owner?: string | null;
1220
+ /**
1221
+ * @description Set this key's policies. For an existing key, this overwrites all its policies.
1222
+ * @example [
1223
+ * "AllowRawBlobSigning",
1224
+ * {
1225
+ * "RequireMfa": {
1226
+ * "count": 1
1227
+ * }
1228
+ * }
1229
+ * ]
1230
+ */
1231
+ policy?: Record<string, never>[] | null;
1232
+ };
1208
1233
  CreateKeyImportKeyResponse: components["schemas"]["KeyImportKey"] & {
1209
1234
  /**
1210
1235
  * @description An attestation document from a secure enclave, including an
@@ -1217,7 +1242,7 @@ export interface components {
1217
1242
  */
1218
1243
  enclave_signature: string;
1219
1244
  };
1220
- CreateKeyRequest: components["schemas"]["UpdateKeyProperties"] & {
1245
+ CreateKeyRequest: components["schemas"]["CreateAndUpdateKeyProperties"] & {
1221
1246
  /**
1222
1247
  * Format: int64
1223
1248
  * @description Chain id for which the key is allowed to sign messages
@@ -3181,32 +3206,7 @@ export interface components {
3181
3206
  */
3182
3207
  signature: string;
3183
3208
  };
3184
- UpdateKeyProperties: {
3185
- /**
3186
- * @description If set, update this key's metadata. Validation regex: ^[A-Za-z0-9_=+/ \-\.\,]{0,1024}$
3187
- * @example Contract admin key
3188
- */
3189
- metadata?: string | null;
3190
- /**
3191
- * @description Allows users to specify a user other than themselves to receive the key
3192
- * The new owner must be an existing user who is a member of the same org.
3193
- * @example User#c3b9379c-4e8c-4216-bd0a-65ace53cf98f
3194
- */
3195
- owner?: string | null;
3196
- /**
3197
- * @description If set, update this key's policies (old policies will be overwritten!).
3198
- * @example [
3199
- * "AllowRawBlobSigning",
3200
- * {
3201
- * "RequireMfa": {
3202
- * "count": 1
3203
- * }
3204
- * }
3205
- * ]
3206
- */
3207
- policy?: Record<string, never>[] | null;
3208
- };
3209
- UpdateKeyRequest: components["schemas"]["UpdateKeyProperties"] & {
3209
+ UpdateKeyRequest: components["schemas"]["CreateAndUpdateKeyProperties"] & {
3210
3210
  /**
3211
3211
  * @description If set, updates the keys's `enabled` property to this value.
3212
3212
  * Once disabled, a key cannot be used for signing.
@@ -37,7 +37,7 @@ export type SchemaKeyType = schemas["KeyType"];
37
37
 
38
38
  export type ListKeysResponse = schemas["PaginatedListKeysResponse"];
39
39
  export type UpdateKeyRequest = schemas["UpdateKeyRequest"];
40
- export type UpdateKeyProperties = schemas["UpdateKeyProperties"];
40
+ export type KeyProperties = schemas["CreateAndUpdateKeyProperties"];
41
41
  export type CreateKeyRequest = schemas["CreateKeyRequest"];
42
42
  export type KeyInfoApi = schemas["KeyInfo"];
43
43
  export type KeyInRoleInfo = schemas["KeyInRoleInfo"];
@@ -100,6 +100,8 @@ export type Empty = schemas["EmptyImpl"];
100
100
 
101
101
  /** Options for a new OIDC user */
102
102
  export interface CreateOidcUserOptions {
103
+ /** Optional name */
104
+ name?: string | null;
103
105
  /** The role of an OIDC user, default is "Alien" */
104
106
  memberRole?: MemberRole;
105
107
  /** Optional MFA policy to associate with the user account */
package/tsconfig.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "extends": "../../tsconfig.json",
3
3
  "compilerOptions": {
4
+ "module": "ES2022",
4
5
  "outDir": "./dist"
5
6
  },
6
7
  "typedocOptions": {
@@ -1,173 +0,0 @@
1
- import { X509Certificate, createVerify } from "crypto";
2
- import { Environment, envs } from ".";
3
-
4
- // URLs that are safe to retrieve certificates from
5
- const SNS_CERTIFICATE_URL_HOSTS = ["sns.us-east-1.amazonaws.com"];
6
-
7
- const SNS_CERTIFICATE_HOST = "sns.amazonaws.com";
8
-
9
- /** The common fields of SNS messages */
10
- export interface SnsMessage {
11
- Type: string;
12
- MessageId: string;
13
- TopicArn: string;
14
- Message: string;
15
- Timestamp: string;
16
- SignatureVersion: string;
17
- Signature: string;
18
- SigningCertURL: string;
19
- }
20
-
21
- /** The format of a subscription confirmation sent by SNS */
22
- export interface SubscriptionConfirmationMessage extends SnsMessage {
23
- Token: string;
24
- SubscribeURL: string;
25
- }
26
-
27
- /** Common fields for an org event */
28
- export interface OrgEventBase {
29
- org: string;
30
- utc_timestamp: number;
31
- org_event: string;
32
- }
33
-
34
- /** The format of an event message sent by SNS */
35
- export interface OrgEventMessage extends SnsMessage {
36
- Subject?: string;
37
- UnsubscribeURL: string;
38
- }
39
-
40
- /** Options for the processor */
41
- export interface OrgEventProcessorOptions {
42
- env: Environment;
43
- }
44
-
45
- /** A utility for processing org event messages */
46
- export class OrgEventProcessor {
47
- readonly #topicArn: string;
48
- readonly #orgId: string;
49
- #cachedCertificates: Map<URL, X509Certificate>;
50
-
51
- /**
52
- * Constructor.
53
- * @param {string} orgId The org id
54
- * @param {OrgEventProcessorOptions} options Additional options for the processor
55
- */
56
- constructor(orgId: string, options?: OrgEventProcessorOptions) {
57
- this.#topicArn = envs[options?.env ?? "prod"].OrgEventsTopicArn;
58
- this.#orgId = orgId;
59
- this.#cachedCertificates = new Map();
60
- }
61
-
62
- /**
63
- * Checks an SNS message and its signature. Throws an error if the message
64
- * invalid or the signature is invalid.
65
- *
66
- * @param {SnsMessage} message The SNS message to check
67
- */
68
- async checkMessage(message: SnsMessage) {
69
- // Check the topic ARN
70
- if (message.TopicArn !== this.#topicArn) {
71
- throw new Error(`Expected topic ARN '${this.#topicArn}', found '${message.TopicArn}'`);
72
- }
73
-
74
- // Both subscription confirmations and org event messages should have no subject
75
- if ("Subject" in message) {
76
- throw new Error("Expected a message without a subject");
77
- }
78
-
79
- // The org events topic uses signature version 2 (SHA256)
80
- if (message.SignatureVersion !== "2") {
81
- throw new Error("Expected signature version 2");
82
- }
83
-
84
- // Retrieve the certificate and sanity check it
85
- const certificate = await this.#fetchAndValidateCertificate(new URL(message.SigningCertURL));
86
-
87
- // Extract fields specific to subscription confirmations
88
- const subscribeUrl = (message as SubscriptionConfirmationMessage).SubscribeURL;
89
- const token = (message as SubscriptionConfirmationMessage).Token;
90
-
91
- // Check the signature
92
- const fields = ["Message", message.Message, "MessageId", message.MessageId]
93
- .concat(subscribeUrl !== undefined ? ["SubscribeURL", subscribeUrl] : [])
94
- .concat(["Timestamp", message.Timestamp])
95
- .concat(token !== undefined ? ["Token", token] : [])
96
- .concat(["TopicArn", message.TopicArn, "Type", message.Type]);
97
- const verify = createVerify("RSA-SHA256");
98
- verify.update(fields.join("\n") + "\n");
99
- const isValid = verify.verify(certificate.publicKey, message.Signature, "base64");
100
- if (!isValid) {
101
- throw new Error("The org event has an invalid signature");
102
- }
103
- }
104
-
105
- /**
106
- * Parse an org event and check its signature. Throws an error if the
107
- * message is not a valid org event or the signature is invalid.
108
- *
109
- * @param {OrgEventMessage} message The org event message to check
110
- * @return {OrgEventBase} The org event
111
- */
112
- async parse(message: OrgEventMessage): Promise<OrgEventBase> {
113
- await this.checkMessage(message);
114
-
115
- // Check that the event is for the expected org
116
- const orgEvent: OrgEventBase = JSON.parse(message.Message);
117
- if (orgEvent.org !== this.#orgId) {
118
- throw new Error(`Expected org to be '${this.#orgId}', found '${orgEvent.org}'`);
119
- }
120
-
121
- return orgEvent;
122
- }
123
-
124
- /**
125
- * Fetches a certificate from a given URL or from the certificate cache.
126
- * Throws an error if the URL does not correspond to an SNS certificate URL.
127
- *
128
- * Note: Ideally, this method would verify the certificate chain, but there
129
- * is no obvious chain. Instead, this method only fetches certificates from
130
- * a small set of allowlisted URLs.
131
- *
132
- * @param {URL} url The URL of the certificate
133
- * @return {X509Certificate} The certificate
134
- */
135
- async #fetchAndValidateCertificate(url: URL): Promise<X509Certificate> {
136
- const currTime = new Date().getTime();
137
- const cachedCertificate = this.#cachedCertificates.get(url);
138
- if (cachedCertificate && currTime < new Date(cachedCertificate.validTo).getTime()) {
139
- return cachedCertificate;
140
- }
141
-
142
- // Only fetch certificates from HTTPS URLs
143
- if (url.protocol !== "https:") {
144
- throw new Error("Expected signing certificate URL to use HTTPS");
145
- }
146
-
147
- // Only fetch certificate URLs for SNS
148
- if (SNS_CERTIFICATE_URL_HOSTS.indexOf(url.host) === -1) {
149
- throw new Error("Expected signing certificate URL for SNS in us-east-1");
150
- }
151
-
152
- const response = await fetch(url);
153
- if (!response.ok) {
154
- throw new Error(`Unable to download certificate. Status: ${response.status}`);
155
- }
156
- const blob = await response.blob();
157
- const certificate = new X509Certificate(await blob.text());
158
- if (!certificate.checkHost(SNS_CERTIFICATE_HOST)) {
159
- throw new Error(`Expected certificate to be for '${SNS_CERTIFICATE_HOST}'`);
160
- }
161
-
162
- // Check validity times
163
- if (currTime < new Date(certificate.validFrom).getTime()) {
164
- throw new Error("Certificate not valid yet");
165
- }
166
- if (new Date(certificate.validTo).getTime() < currTime) {
167
- throw new Error("Certificate expired");
168
- }
169
-
170
- this.#cachedCertificates.set(url, certificate);
171
- return certificate;
172
- }
173
- }