box-node-sdk 3.8.1 → 3.8.2
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.
- package/lib-esm/api-request-manager.d.ts +36 -0
- package/lib-esm/api-request-manager.js +78 -0
- package/lib-esm/api-request-manager.js.map +1 -0
- package/lib-esm/api-request.d.ts +135 -0
- package/lib-esm/api-request.js +282 -0
- package/lib-esm/api-request.js.map +1 -0
- package/lib-esm/box-client.d.ts +274 -0
- package/lib-esm/box-client.js +594 -0
- package/lib-esm/box-client.js.map +1 -0
- package/lib-esm/box-node-sdk.d.ts +227 -0
- package/lib-esm/box-node-sdk.js +373 -0
- package/lib-esm/box-node-sdk.js.map +1 -0
- package/lib-esm/chunked-uploader.d.ts +128 -0
- package/lib-esm/chunked-uploader.js +276 -0
- package/lib-esm/chunked-uploader.js.map +1 -0
- package/lib-esm/enterprise-event-stream.d.ts +82 -0
- package/lib-esm/enterprise-event-stream.js +205 -0
- package/lib-esm/enterprise-event-stream.js.map +1 -0
- package/lib-esm/event-stream.d.ts +91 -0
- package/lib-esm/event-stream.js +277 -0
- package/lib-esm/event-stream.js.map +1 -0
- package/lib-esm/managers/ai.generated.d.ts +58 -0
- package/lib-esm/managers/ai.generated.js +66 -0
- package/lib-esm/managers/ai.generated.js.map +1 -0
- package/lib-esm/managers/collaboration-allowlist.d.ts +133 -0
- package/lib-esm/managers/collaboration-allowlist.js +194 -0
- package/lib-esm/managers/collaboration-allowlist.js.map +1 -0
- package/lib-esm/managers/collaborations.d.ts +173 -0
- package/lib-esm/managers/collaborations.js +252 -0
- package/lib-esm/managers/collaborations.js.map +1 -0
- package/lib-esm/managers/collections.d.ts +42 -0
- package/lib-esm/managers/collections.js +62 -0
- package/lib-esm/managers/collections.js.map +1 -0
- package/lib-esm/managers/comments.d.ts +103 -0
- package/lib-esm/managers/comments.js +175 -0
- package/lib-esm/managers/comments.js.map +1 -0
- package/lib-esm/managers/device-pins.d.ts +52 -0
- package/lib-esm/managers/device-pins.js +91 -0
- package/lib-esm/managers/device-pins.js.map +1 -0
- package/lib-esm/managers/enterprise.d.ts +164 -0
- package/lib-esm/managers/enterprise.js +193 -0
- package/lib-esm/managers/enterprise.js.map +1 -0
- package/lib-esm/managers/events.d.ts +222 -0
- package/lib-esm/managers/events.js +295 -0
- package/lib-esm/managers/events.js.map +1 -0
- package/lib-esm/managers/file-requests-manager.d.ts +56 -0
- package/lib-esm/managers/file-requests-manager.js +81 -0
- package/lib-esm/managers/file-requests-manager.js.map +1 -0
- package/lib-esm/managers/files.d.ts +817 -0
- package/lib-esm/managers/files.js +1408 -0
- package/lib-esm/managers/files.js.map +1 -0
- package/lib-esm/managers/folders.d.ts +396 -0
- package/lib-esm/managers/folders.js +570 -0
- package/lib-esm/managers/folders.js.map +1 -0
- package/lib-esm/managers/groups.d.ts +213 -0
- package/lib-esm/managers/groups.js +289 -0
- package/lib-esm/managers/groups.js.map +1 -0
- package/lib-esm/managers/integration-mappings.d.ts +116 -0
- package/lib-esm/managers/integration-mappings.js +101 -0
- package/lib-esm/managers/integration-mappings.js.map +1 -0
- package/lib-esm/managers/legal-hold-policies.d.ts +190 -0
- package/lib-esm/managers/legal-hold-policies.js +254 -0
- package/lib-esm/managers/legal-hold-policies.js.map +1 -0
- package/lib-esm/managers/metadata.d.ts +232 -0
- package/lib-esm/managers/metadata.js +288 -0
- package/lib-esm/managers/metadata.js.map +1 -0
- package/lib-esm/managers/recent-items.d.ts +38 -0
- package/lib-esm/managers/recent-items.js +49 -0
- package/lib-esm/managers/recent-items.js.map +1 -0
- package/lib-esm/managers/retention-policies.d.ts +308 -0
- package/lib-esm/managers/retention-policies.js +374 -0
- package/lib-esm/managers/retention-policies.js.map +1 -0
- package/lib-esm/managers/search.d.ts +82 -0
- package/lib-esm/managers/search.js +90 -0
- package/lib-esm/managers/search.js.map +1 -0
- package/lib-esm/managers/shared-items.d.ts +33 -0
- package/lib-esm/managers/shared-items.js +74 -0
- package/lib-esm/managers/shared-items.js.map +1 -0
- package/lib-esm/managers/shield-information-barrier-reports.generated.d.ts +65 -0
- package/lib-esm/managers/shield-information-barrier-reports.generated.js +65 -0
- package/lib-esm/managers/shield-information-barrier-reports.generated.js.map +1 -0
- package/lib-esm/managers/shield-information-barrier-segment-members.generated.d.ts +83 -0
- package/lib-esm/managers/shield-information-barrier-segment-members.generated.js +83 -0
- package/lib-esm/managers/shield-information-barrier-segment-members.generated.js.map +1 -0
- package/lib-esm/managers/shield-information-barrier-segment-restrictions.generated.d.ts +84 -0
- package/lib-esm/managers/shield-information-barrier-segment-restrictions.generated.js +84 -0
- package/lib-esm/managers/shield-information-barrier-segment-restrictions.generated.js.map +1 -0
- package/lib-esm/managers/shield-information-barrier-segments.generated.d.ts +98 -0
- package/lib-esm/managers/shield-information-barrier-segments.generated.js +99 -0
- package/lib-esm/managers/shield-information-barrier-segments.generated.js.map +1 -0
- package/lib-esm/managers/shield-information-barriers.generated.d.ts +79 -0
- package/lib-esm/managers/shield-information-barriers.generated.js +83 -0
- package/lib-esm/managers/shield-information-barriers.generated.js.map +1 -0
- package/lib-esm/managers/sign-requests.generated.d.ts +93 -0
- package/lib-esm/managers/sign-requests.generated.js +97 -0
- package/lib-esm/managers/sign-requests.generated.js.map +1 -0
- package/lib-esm/managers/sign-templates.generated.d.ts +51 -0
- package/lib-esm/managers/sign-templates.generated.js +49 -0
- package/lib-esm/managers/sign-templates.generated.js.map +1 -0
- package/lib-esm/managers/storage-policies.d.ts +86 -0
- package/lib-esm/managers/storage-policies.js +174 -0
- package/lib-esm/managers/storage-policies.js.map +1 -0
- package/lib-esm/managers/tasks.d.ts +161 -0
- package/lib-esm/managers/tasks.js +243 -0
- package/lib-esm/managers/tasks.js.map +1 -0
- package/lib-esm/managers/terms-of-service.d.ts +161 -0
- package/lib-esm/managers/terms-of-service.js +283 -0
- package/lib-esm/managers/terms-of-service.js.map +1 -0
- package/lib-esm/managers/trash.d.ts +30 -0
- package/lib-esm/managers/trash.js +47 -0
- package/lib-esm/managers/trash.js.map +1 -0
- package/lib-esm/managers/users.d.ts +171 -0
- package/lib-esm/managers/users.js +230 -0
- package/lib-esm/managers/users.js.map +1 -0
- package/lib-esm/managers/web-links.d.ts +127 -0
- package/lib-esm/managers/web-links.js +200 -0
- package/lib-esm/managers/web-links.js.map +1 -0
- package/lib-esm/managers/webhooks.d.ts +169 -0
- package/lib-esm/managers/webhooks.js +398 -0
- package/lib-esm/managers/webhooks.js.map +1 -0
- package/lib-esm/schemas/ai-agent-ask.generated.d.ts +17 -0
- package/lib-esm/schemas/ai-agent-ask.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-ask.generated.js.map +1 -0
- package/lib-esm/schemas/ai-agent-basic-gen-tool.generated.d.ts +14 -0
- package/lib-esm/schemas/ai-agent-basic-gen-tool.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-basic-gen-tool.generated.js.map +1 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-ask.generated.d.ts +34 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-ask.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-ask.generated.js.map +1 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-text-gen.generated.d.ts +36 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-text-gen.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-text-gen.generated.js.map +1 -0
- package/lib-esm/schemas/ai-agent-long-text-tool.generated.d.ts +9 -0
- package/lib-esm/schemas/ai-agent-long-text-tool.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-long-text-tool.generated.js.map +1 -0
- package/lib-esm/schemas/ai-agent-text-gen.generated.d.ts +14 -0
- package/lib-esm/schemas/ai-agent-text-gen.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-text-gen.generated.js.map +1 -0
- package/lib-esm/schemas/ai-ask.generated.d.ts +40 -0
- package/lib-esm/schemas/ai-ask.generated.js +3 -0
- package/lib-esm/schemas/ai-ask.generated.js.map +1 -0
- package/lib-esm/schemas/ai-citation.generated.d.ts +27 -0
- package/lib-esm/schemas/ai-citation.generated.js +3 -0
- package/lib-esm/schemas/ai-citation.generated.js.map +1 -0
- package/lib-esm/schemas/ai-dialogue-history.generated.d.ts +22 -0
- package/lib-esm/schemas/ai-dialogue-history.generated.js +3 -0
- package/lib-esm/schemas/ai-dialogue-history.generated.js.map +1 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-google.generated.d.ts +31 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-google.generated.js +3 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-google.generated.js.map +1 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-open-ai.generated.d.ts +43 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-open-ai.generated.js +3 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-open-ai.generated.js.map +1 -0
- package/lib-esm/schemas/ai-response-full.generated.d.ts +12 -0
- package/lib-esm/schemas/ai-response-full.generated.js +3 -0
- package/lib-esm/schemas/ai-response-full.generated.js.map +1 -0
- package/lib-esm/schemas/ai-response.generated.d.ts +22 -0
- package/lib-esm/schemas/ai-response.generated.js +3 -0
- package/lib-esm/schemas/ai-response.generated.js.map +1 -0
- package/lib-esm/schemas/ai-text-gen.generated.d.ts +30 -0
- package/lib-esm/schemas/ai-text-gen.generated.js +3 -0
- package/lib-esm/schemas/ai-text-gen.generated.js.map +1 -0
- package/lib-esm/schemas/collaboration-create.d.ts +5 -0
- package/lib-esm/schemas/collaboration-create.js +3 -0
- package/lib-esm/schemas/collaboration-create.js.map +1 -0
- package/lib-esm/schemas/collaboration-update.d.ts +7 -0
- package/lib-esm/schemas/collaboration-update.js +3 -0
- package/lib-esm/schemas/collaboration-update.js.map +1 -0
- package/lib-esm/schemas/collaboration.d.ts +108 -0
- package/lib-esm/schemas/collaboration.js +3 -0
- package/lib-esm/schemas/collaboration.js.map +1 -0
- package/lib-esm/schemas/collaborations.d.ts +13 -0
- package/lib-esm/schemas/collaborations.js +3 -0
- package/lib-esm/schemas/collaborations.js.map +1 -0
- package/lib-esm/schemas/enterprise-base.generated.d.ts +18 -0
- package/lib-esm/schemas/enterprise-base.generated.js +3 -0
- package/lib-esm/schemas/enterprise-base.generated.js.map +1 -0
- package/lib-esm/schemas/file-base.generated.d.ts +32 -0
- package/lib-esm/schemas/file-base.generated.js +3 -0
- package/lib-esm/schemas/file-base.generated.js.map +1 -0
- package/lib-esm/schemas/file-mini.generated.d.ts +41 -0
- package/lib-esm/schemas/file-mini.generated.js +3 -0
- package/lib-esm/schemas/file-mini.generated.js.map +1 -0
- package/lib-esm/schemas/file-request.d.ts +41 -0
- package/lib-esm/schemas/file-request.js +3 -0
- package/lib-esm/schemas/file-request.js.map +1 -0
- package/lib-esm/schemas/file-version-base.generated.d.ts +19 -0
- package/lib-esm/schemas/file-version-base.generated.js +3 -0
- package/lib-esm/schemas/file-version-base.generated.js.map +1 -0
- package/lib-esm/schemas/file-version-mini.generated.d.ts +14 -0
- package/lib-esm/schemas/file-version-mini.generated.js +3 -0
- package/lib-esm/schemas/file-version-mini.generated.js.map +1 -0
- package/lib-esm/schemas/folder-base.generated.d.ts +32 -0
- package/lib-esm/schemas/folder-base.generated.js +3 -0
- package/lib-esm/schemas/folder-base.generated.js.map +1 -0
- package/lib-esm/schemas/folder-mini.generated.d.ts +31 -0
- package/lib-esm/schemas/folder-mini.generated.js +3 -0
- package/lib-esm/schemas/folder-mini.generated.js.map +1 -0
- package/lib-esm/schemas/index.d.ts +15 -0
- package/lib-esm/schemas/index.generated.d.ts +52 -0
- package/lib-esm/schemas/index.generated.js +69 -0
- package/lib-esm/schemas/index.generated.js.map +1 -0
- package/lib-esm/schemas/index.js +32 -0
- package/lib-esm/schemas/index.js.map +1 -0
- package/lib-esm/schemas/integration-mapping-base.d.ts +23 -0
- package/lib-esm/schemas/integration-mapping-base.js +3 -0
- package/lib-esm/schemas/integration-mapping-base.js.map +1 -0
- package/lib-esm/schemas/integration-mapping-box-item-slack.d.ts +17 -0
- package/lib-esm/schemas/integration-mapping-box-item-slack.js +3 -0
- package/lib-esm/schemas/integration-mapping-box-item-slack.js.map +1 -0
- package/lib-esm/schemas/integration-mapping-partner-item-slack.d.ts +27 -0
- package/lib-esm/schemas/integration-mapping-partner-item-slack.js +3 -0
- package/lib-esm/schemas/integration-mapping-partner-item-slack.js.map +1 -0
- package/lib-esm/schemas/integration-mapping-slack-create-request.d.ts +12 -0
- package/lib-esm/schemas/integration-mapping-slack-create-request.js +3 -0
- package/lib-esm/schemas/integration-mapping-slack-create-request.js.map +1 -0
- package/lib-esm/schemas/integration-mapping-slack-options.d.ts +16 -0
- package/lib-esm/schemas/integration-mapping-slack-options.js +3 -0
- package/lib-esm/schemas/integration-mapping-slack-options.js.map +1 -0
- package/lib-esm/schemas/integration-mapping.d.ts +55 -0
- package/lib-esm/schemas/integration-mapping.js +3 -0
- package/lib-esm/schemas/integration-mapping.js.map +1 -0
- package/lib-esm/schemas/integration-mappings.d.ts +27 -0
- package/lib-esm/schemas/integration-mappings.js +3 -0
- package/lib-esm/schemas/integration-mappings.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-base.generated.d.ts +18 -0
- package/lib-esm/schemas/shield-information-barrier-base.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-base.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-reference.generated.d.ts +9 -0
- package/lib-esm/schemas/shield-information-barrier-reference.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-reference.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-report-base.generated.d.ts +18 -0
- package/lib-esm/schemas/shield-information-barrier-report-base.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-report-base.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-report-details.generated.d.ts +9 -0
- package/lib-esm/schemas/shield-information-barrier-report-details.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-report-details.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-report.generated.d.ts +32 -0
- package/lib-esm/schemas/shield-information-barrier-report.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-report.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-reports.generated.d.ts +26 -0
- package/lib-esm/schemas/shield-information-barrier-reports.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-reports.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-base.generated.d.ts +19 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-base.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-base.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-mini.generated.d.ts +13 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-mini.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-mini.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member.generated.d.ts +39 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-members.generated.d.ts +26 -0
- package/lib-esm/schemas/shield-information-barrier-segment-members.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-members.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-base.generated.d.ts +20 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-base.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-base.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-mini.generated.d.ts +20 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-mini.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-mini.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction.generated.d.ts +33 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restrictions.generated.d.ts +26 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restrictions.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restrictions.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment.generated.d.ts +50 -0
- package/lib-esm/schemas/shield-information-barrier-segment.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segments.generated.d.ts +26 -0
- package/lib-esm/schemas/shield-information-barrier-segments.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segments.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier.generated.d.ts +56 -0
- package/lib-esm/schemas/shield-information-barrier.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barriers.generated.d.ts +25 -0
- package/lib-esm/schemas/shield-information-barriers.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barriers.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-base.generated.d.ts +78 -0
- package/lib-esm/schemas/sign-request-base.generated.js +3 -0
- package/lib-esm/schemas/sign-request-base.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-create-request.generated.d.ts +39 -0
- package/lib-esm/schemas/sign-request-create-request.generated.js +3 -0
- package/lib-esm/schemas/sign-request-create-request.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-create-signer.generated.d.ts +95 -0
- package/lib-esm/schemas/sign-request-create-signer.generated.js +3 -0
- package/lib-esm/schemas/sign-request-create-signer.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-prefill-tag.generated.d.ts +28 -0
- package/lib-esm/schemas/sign-request-prefill-tag.generated.js +3 -0
- package/lib-esm/schemas/sign-request-prefill-tag.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-signer-input.generated.d.ts +28 -0
- package/lib-esm/schemas/sign-request-signer-input.generated.js +3 -0
- package/lib-esm/schemas/sign-request-signer-input.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-signer.generated.d.ts +34 -0
- package/lib-esm/schemas/sign-request-signer.generated.js +3 -0
- package/lib-esm/schemas/sign-request-signer.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request.generated.d.ts +72 -0
- package/lib-esm/schemas/sign-request.generated.js +3 -0
- package/lib-esm/schemas/sign-request.generated.js.map +1 -0
- package/lib-esm/schemas/sign-requests.generated.d.ts +25 -0
- package/lib-esm/schemas/sign-requests.generated.js +3 -0
- package/lib-esm/schemas/sign-requests.generated.js.map +1 -0
- package/lib-esm/schemas/sign-template.generated.d.ts +94 -0
- package/lib-esm/schemas/sign-template.generated.js +3 -0
- package/lib-esm/schemas/sign-template.generated.js.map +1 -0
- package/lib-esm/schemas/sign-templates.generated.d.ts +30 -0
- package/lib-esm/schemas/sign-templates.generated.js +3 -0
- package/lib-esm/schemas/sign-templates.generated.js.map +1 -0
- package/lib-esm/schemas/template-signer-input.generated.d.ts +61 -0
- package/lib-esm/schemas/template-signer-input.generated.js +3 -0
- package/lib-esm/schemas/template-signer-input.generated.js.map +1 -0
- package/lib-esm/schemas/template-signer.generated.d.ts +43 -0
- package/lib-esm/schemas/template-signer.generated.js +3 -0
- package/lib-esm/schemas/template-signer.generated.js.map +1 -0
- package/lib-esm/schemas/user-base.generated.d.ts +18 -0
- package/lib-esm/schemas/user-base.generated.js +3 -0
- package/lib-esm/schemas/user-base.generated.js.map +1 -0
- package/lib-esm/schemas/user-integration-mappings.d.ts +19 -0
- package/lib-esm/schemas/user-integration-mappings.js +3 -0
- package/lib-esm/schemas/user-integration-mappings.js.map +1 -0
- package/lib-esm/schemas/user-mini.d.ts +6 -0
- package/lib-esm/schemas/user-mini.js +3 -0
- package/lib-esm/schemas/user-mini.js.map +1 -0
- package/lib-esm/sessions/app-auth-session.d.ts +92 -0
- package/lib-esm/sessions/app-auth-session.js +176 -0
- package/lib-esm/sessions/app-auth-session.js.map +1 -0
- package/lib-esm/sessions/basic-session.d.ts +55 -0
- package/lib-esm/sessions/basic-session.js +62 -0
- package/lib-esm/sessions/basic-session.js.map +1 -0
- package/lib-esm/sessions/ccg-session.d.ts +72 -0
- package/lib-esm/sessions/ccg-session.js +111 -0
- package/lib-esm/sessions/ccg-session.js.map +1 -0
- package/lib-esm/sessions/persistent-session.d.ts +96 -0
- package/lib-esm/sessions/persistent-session.js +234 -0
- package/lib-esm/sessions/persistent-session.js.map +1 -0
- package/lib-esm/token-manager.d.ts +191 -0
- package/lib-esm/token-manager.js +453 -0
- package/lib-esm/token-manager.js.map +1 -0
- package/lib-esm/util/config.d.ts +85 -0
- package/lib-esm/util/config.js +212 -0
- package/lib-esm/util/config.js.map +1 -0
- package/lib-esm/util/errors.d.ts +50 -0
- package/lib-esm/util/errors.js +176 -0
- package/lib-esm/util/errors.js.map +1 -0
- package/lib-esm/util/exponential-backoff.d.ts +11 -0
- package/lib-esm/util/exponential-backoff.js +17 -0
- package/lib-esm/util/exponential-backoff.js.map +1 -0
- package/lib-esm/util/paging-iterator.d.ts +53 -0
- package/lib-esm/util/paging-iterator.js +247 -0
- package/lib-esm/util/paging-iterator.js.map +1 -0
- package/lib-esm/util/serializable.d.ts +10 -0
- package/lib-esm/util/serializable.js +17 -0
- package/lib-esm/util/serializable.js.map +1 -0
- package/lib-esm/util/url-path.d.ts +16 -0
- package/lib-esm/util/url-path.js +36 -0
- package/lib-esm/util/url-path.js.map +1 -0
- package/package.json +18 -4
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Token Manager
|
|
3
|
+
*/
|
|
4
|
+
import Promise from 'bluebird';
|
|
5
|
+
import APIRequestManager from './api-request-manager';
|
|
6
|
+
type Config = Record<string, any>;
|
|
7
|
+
/**
|
|
8
|
+
* Token request options. Set by the consumer to add/modify the params sent to the
|
|
9
|
+
* request.
|
|
10
|
+
*
|
|
11
|
+
* @typedef {Object} TokenRequestOptions
|
|
12
|
+
* @property {string} [ip] The IP Address of the requesting user. This IP will be reflected in authentication
|
|
13
|
+
* notification emails sent to your users on login. Defaults to the IP address of the
|
|
14
|
+
* server requesting the tokens.
|
|
15
|
+
*/
|
|
16
|
+
type TokenRequestOptions = {
|
|
17
|
+
ip?: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Parameters for creating a token using a Box shared link via token exchange
|
|
21
|
+
* @typedef {Object} SharedLinkParams
|
|
22
|
+
* @property {string} url Shared link URL
|
|
23
|
+
*/
|
|
24
|
+
type SharedLinkParams = {
|
|
25
|
+
url: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Parameters for creating an actor token via token exchange
|
|
29
|
+
* @typedef {Object} ActorParams
|
|
30
|
+
* @property {string} id The external identifier for the actor
|
|
31
|
+
* @property {string} name The display name of the actor
|
|
32
|
+
*/
|
|
33
|
+
type ActorParams = {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* An object representing all token information for a single Box user.
|
|
39
|
+
*
|
|
40
|
+
* @typedef {Object} TokenInfo
|
|
41
|
+
* @property {string} accessToken The API access token. Used to authenticate API requests to a certain
|
|
42
|
+
* user and/or application.
|
|
43
|
+
* @property {int} acquiredAtMS The time that the tokens were acquired.
|
|
44
|
+
* @property {int} accessTokenTTLMS The TTL of the access token. Can be used with acquiredAtMS to
|
|
45
|
+
* calculate if the current access token has expired.
|
|
46
|
+
* @property {string} [refreshToken] The API refresh token is a Longer-lasting than an access token, and can
|
|
47
|
+
* be used to gain a new access token if the current access token becomes
|
|
48
|
+
* expired. Grants like the 'client credentials' grant don't return a
|
|
49
|
+
* refresh token, and have no refresh capabilities.
|
|
50
|
+
*/
|
|
51
|
+
type TokenInfo = {
|
|
52
|
+
accessToken: string;
|
|
53
|
+
acquiredAtMS: number;
|
|
54
|
+
accessTokenTTLMS: number;
|
|
55
|
+
refreshToken?: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Manager for API access abd refresh tokens
|
|
59
|
+
*
|
|
60
|
+
* @param {Config} config The config object
|
|
61
|
+
* @param {APIRequestManager} requestManager The API Request Manager
|
|
62
|
+
* @constructor
|
|
63
|
+
*/
|
|
64
|
+
declare class TokenManager {
|
|
65
|
+
config: Config;
|
|
66
|
+
requestManager: APIRequestManager;
|
|
67
|
+
oauthBaseURL: string;
|
|
68
|
+
constructor(config: Config, requestManager: APIRequestManager);
|
|
69
|
+
/**
|
|
70
|
+
* Given a TokenInfo object, returns whether its access token is expired. An access token is considered
|
|
71
|
+
* expired once its TTL surpasses the current time outside of the given buffer. This is a public method so
|
|
72
|
+
* that other modules may check the validity of their tokens.
|
|
73
|
+
*
|
|
74
|
+
* @param {TokenInfo} tokenInfo the token info to be written
|
|
75
|
+
* @param {int} [bufferMS] An optional buffer we'd like to test against. The greater this buffer, the more aggressively
|
|
76
|
+
* we'll call a token invalid.
|
|
77
|
+
* @returns {boolean} True if token is valid outside of buffer, otherwise false
|
|
78
|
+
*/
|
|
79
|
+
isAccessTokenValid(tokenInfo: TokenInfo, bufferMS?: number): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Acquires OAuth2 tokens using a grant type (authorization_code, password, refresh_token)
|
|
82
|
+
*
|
|
83
|
+
* @param {Object} formParams - should contain all params expected by Box OAuth2 token endpoint
|
|
84
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant, null for default behavior
|
|
85
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
86
|
+
* @private
|
|
87
|
+
*/
|
|
88
|
+
getTokens(formParams: Record<string, any>, options?: TokenRequestOptions | null): Promise<{
|
|
89
|
+
accessToken: any;
|
|
90
|
+
refreshToken: any;
|
|
91
|
+
accessTokenTTLMS: number;
|
|
92
|
+
acquiredAtMS: number;
|
|
93
|
+
}>;
|
|
94
|
+
/**
|
|
95
|
+
* Acquires token info using an authorization code
|
|
96
|
+
*
|
|
97
|
+
* @param {string} authorizationCode - authorization code issued by Box
|
|
98
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
99
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
100
|
+
*/
|
|
101
|
+
getTokensAuthorizationCodeGrant(authorizationCode: string, options?: TokenRequestOptions): Promise<{
|
|
102
|
+
accessToken: any;
|
|
103
|
+
refreshToken: any;
|
|
104
|
+
accessTokenTTLMS: number;
|
|
105
|
+
acquiredAtMS: number;
|
|
106
|
+
}>;
|
|
107
|
+
/**
|
|
108
|
+
* Acquires token info using the client credentials grant.
|
|
109
|
+
*
|
|
110
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
111
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
112
|
+
*/
|
|
113
|
+
getTokensClientCredentialsGrant(options?: TokenRequestOptions): Promise<{
|
|
114
|
+
accessToken: any;
|
|
115
|
+
refreshToken: any;
|
|
116
|
+
accessTokenTTLMS: number;
|
|
117
|
+
acquiredAtMS: number;
|
|
118
|
+
}>;
|
|
119
|
+
/**
|
|
120
|
+
* Refreshes the access and refresh tokens for a given refresh token.
|
|
121
|
+
*
|
|
122
|
+
* @param {string} refreshToken - A valid OAuth refresh token
|
|
123
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
124
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
125
|
+
*/
|
|
126
|
+
getTokensRefreshGrant(refreshToken: string, options?: TokenRequestOptions): Promise<{
|
|
127
|
+
accessToken: any;
|
|
128
|
+
refreshToken: any;
|
|
129
|
+
accessTokenTTLMS: number;
|
|
130
|
+
acquiredAtMS: number;
|
|
131
|
+
}>;
|
|
132
|
+
/**
|
|
133
|
+
* Gets tokens for enterprise administration of app users
|
|
134
|
+
* @param {string} type The type of token to create, "user" or "enterprise"
|
|
135
|
+
* @param {string} id The ID of the enterprise to generate a token for
|
|
136
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
137
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
138
|
+
*/
|
|
139
|
+
getTokensJWTGrant(type: string, id: string, options?: TokenRequestOptions): Promise<any>;
|
|
140
|
+
/**
|
|
141
|
+
* Attempt a retry if possible and create a new JTI claim. If the request hasn't exceeded it's maximum number of retries,
|
|
142
|
+
* re-execute the request (after the retry interval). Otherwise, propagate a new error.
|
|
143
|
+
*
|
|
144
|
+
* @param {Object} claims - JTI claims object
|
|
145
|
+
* @param {Object} [jwtOptions] - JWT options for the signature
|
|
146
|
+
* @param {Object} keyParams - Key JWT parameters object that contains the private key and the passphrase
|
|
147
|
+
* @param {Object} params - Should contain all params expected by Box OAuth2 token endpoint
|
|
148
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
149
|
+
* @param {Error} error - Error from the previous JWT request
|
|
150
|
+
* @param {int} numRetries - Number of retries attempted
|
|
151
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
152
|
+
*/
|
|
153
|
+
retryJWTGrant(claims: any, jwtOptions: any, keyParams: any, params: any, options: TokenRequestOptions | undefined, error: any, numRetries: number): any;
|
|
154
|
+
/**
|
|
155
|
+
* Exchange a valid access token for one with a lower scope, or delegated to
|
|
156
|
+
* an external user identifier.
|
|
157
|
+
*
|
|
158
|
+
* @param {string} accessToken - The valid access token to exchange
|
|
159
|
+
* @param {string|string[]} scopes - The scope(s) of the new access token
|
|
160
|
+
* @param {string} [resource] - The absolute URL of an API resource to restrict the new token to
|
|
161
|
+
* @param {Object} [options] - Optional parameters
|
|
162
|
+
* @param {TokenRequestOptions} [options.tokenRequestOptions] - Sets optional behavior for the token grant
|
|
163
|
+
* @param {ActorParams} [options.actor] - Optional actor parameters for creating annotator tokens
|
|
164
|
+
* @param {SharedLinkParams} [options.sharedLink] - Optional shared link parameters for creating tokens using shared links
|
|
165
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the new token info
|
|
166
|
+
*/
|
|
167
|
+
exchangeToken(accessToken: string, scopes: string | string[], resource?: string, options?: {
|
|
168
|
+
tokenRequestOptions?: TokenRequestOptions;
|
|
169
|
+
actor?: ActorParams;
|
|
170
|
+
sharedLink?: SharedLinkParams;
|
|
171
|
+
}): Promise<{
|
|
172
|
+
accessToken: any;
|
|
173
|
+
refreshToken: any;
|
|
174
|
+
accessTokenTTLMS: number;
|
|
175
|
+
acquiredAtMS: number;
|
|
176
|
+
}>;
|
|
177
|
+
/**
|
|
178
|
+
* Revokes a token pair associated with a given access or refresh token.
|
|
179
|
+
*
|
|
180
|
+
* @param {string} token - A valid access or refresh token to revoke
|
|
181
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
182
|
+
* @returns {Promise} Promise resolving if the revoke succeeds
|
|
183
|
+
*/
|
|
184
|
+
revokeTokens(token: string, options?: TokenRequestOptions): Promise<unknown>;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Provides interactions with Box OAuth2 tokening system.
|
|
188
|
+
*
|
|
189
|
+
* @module box-node-sdk/lib/token-manager
|
|
190
|
+
*/
|
|
191
|
+
export = TokenManager;
|
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Token Manager
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
// ------------------------------------------------------------------------------
|
|
9
|
+
// Requirements
|
|
10
|
+
// ------------------------------------------------------------------------------
|
|
11
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
12
|
+
const http_status_1 = __importDefault(require("http-status"));
|
|
13
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
14
|
+
const uuid_1 = require("uuid");
|
|
15
|
+
const errors_1 = __importDefault(require("./util/errors"));
|
|
16
|
+
const exponential_backoff_1 = __importDefault(require("./util/exponential-backoff"));
|
|
17
|
+
/**
|
|
18
|
+
* Determines whether a JWT auth error can be retried
|
|
19
|
+
* @param {Error} err The JWT auth error
|
|
20
|
+
* @returns {boolean} True if the error is retryable
|
|
21
|
+
*/
|
|
22
|
+
function isJWTAuthErrorRetryable(err /* FIXME */) {
|
|
23
|
+
if (err.authExpired &&
|
|
24
|
+
err.response.headers.date &&
|
|
25
|
+
(err.response.body.error_description.indexOf('exp') > -1 ||
|
|
26
|
+
err.response.body.error_description.indexOf('jti') > -1)) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
else if (err.statusCode === 429 || err.statusCode >= 500) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
// ------------------------------------------------------------------------------
|
|
35
|
+
// Constants
|
|
36
|
+
// ------------------------------------------------------------------------------
|
|
37
|
+
/**
|
|
38
|
+
* Collection of grant types that can be used to acquire tokens via OAuth2
|
|
39
|
+
*
|
|
40
|
+
* @readonly
|
|
41
|
+
* @enum {string}
|
|
42
|
+
*/
|
|
43
|
+
var grantTypes = {
|
|
44
|
+
AUTHORIZATION_CODE: 'authorization_code',
|
|
45
|
+
REFRESH_TOKEN: 'refresh_token',
|
|
46
|
+
CLIENT_CREDENTIALS: 'client_credentials',
|
|
47
|
+
JWT: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
|
|
48
|
+
TOKEN_EXCHANGE: 'urn:ietf:params:oauth:grant-type:token-exchange',
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Collection of paths to interact with Box OAuth2 tokening system
|
|
52
|
+
*
|
|
53
|
+
* @readonly
|
|
54
|
+
* @enum {string}
|
|
55
|
+
*/
|
|
56
|
+
var tokenPaths;
|
|
57
|
+
(function (tokenPaths) {
|
|
58
|
+
tokenPaths["ROOT"] = "/oauth2";
|
|
59
|
+
tokenPaths["GET"] = "/token";
|
|
60
|
+
tokenPaths["REVOKE"] = "/revoke";
|
|
61
|
+
})(tokenPaths || (tokenPaths = {}));
|
|
62
|
+
// Timer used to track elapsed time starting with executing an async request and ending with emitting the response.
|
|
63
|
+
var asyncRequestTimer /* FIXME */;
|
|
64
|
+
// The XFF header label - Used to give the API better information for uploads, rate-limiting, etc.
|
|
65
|
+
const HEADER_XFF = 'X-Forwarded-For';
|
|
66
|
+
const ACCESS_TOKEN_TYPE = 'urn:ietf:params:oauth:token-type:access_token';
|
|
67
|
+
const ACTOR_TOKEN_TYPE = 'urn:ietf:params:oauth:token-type:id_token';
|
|
68
|
+
const BOX_JWT_AUDIENCE = 'https://api.box.com/oauth2/token';
|
|
69
|
+
// ------------------------------------------------------------------------------
|
|
70
|
+
// Private
|
|
71
|
+
// ------------------------------------------------------------------------------
|
|
72
|
+
/**
|
|
73
|
+
* Parse the response body to create a new TokenInfo object.
|
|
74
|
+
*
|
|
75
|
+
* @param {Object} grantResponseBody - (Request lib) response body containing granted token info from API
|
|
76
|
+
* @returns {TokenInfo} A TokenInfo object.
|
|
77
|
+
* @private
|
|
78
|
+
*/
|
|
79
|
+
function getTokensFromGrantResponse(grantResponseBody /* FIXME */) {
|
|
80
|
+
return {
|
|
81
|
+
// Set the access token & refresh token (if passed)
|
|
82
|
+
accessToken: grantResponseBody.access_token,
|
|
83
|
+
refreshToken: grantResponseBody.refresh_token,
|
|
84
|
+
// Box API sends back expires_in in seconds, we convert to ms for consistency of keeping all time in ms
|
|
85
|
+
accessTokenTTLMS: parseInt(grantResponseBody.expires_in, 10) * 1000,
|
|
86
|
+
acquiredAtMS: Date.now(),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Determines if a given string could represent an authorization code or token.
|
|
91
|
+
*
|
|
92
|
+
* @param {string} codeOrToken The code or token to check.
|
|
93
|
+
* @returns {boolean} True if codeOrToken is valid, false if not.
|
|
94
|
+
* @private
|
|
95
|
+
*/
|
|
96
|
+
function isValidCodeOrToken(codeOrToken) {
|
|
97
|
+
return typeof codeOrToken === 'string' && codeOrToken.length > 0;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Determines if a token grant response is valid
|
|
101
|
+
*
|
|
102
|
+
* @param {string} grantType the type of token grant
|
|
103
|
+
* @param {Object} responseBody the body of the response to check
|
|
104
|
+
* @returns {boolean} True if response body has expected fields, false if not.
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
107
|
+
function isValidTokenResponse(grantType, responseBody /* FIXME */) {
|
|
108
|
+
if (!isValidCodeOrToken(responseBody.access_token)) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
if (typeof responseBody.expires_in !== 'number') {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
// Check the refresh_token for certain types of grants
|
|
115
|
+
if (grantType === 'authorization_code' || grantType === 'refresh_token') {
|
|
116
|
+
if (!isValidCodeOrToken(responseBody.refresh_token)) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
// ------------------------------------------------------------------------------
|
|
123
|
+
// Public
|
|
124
|
+
// ------------------------------------------------------------------------------
|
|
125
|
+
/**
|
|
126
|
+
* Manager for API access abd refresh tokens
|
|
127
|
+
*
|
|
128
|
+
* @param {Config} config The config object
|
|
129
|
+
* @param {APIRequestManager} requestManager The API Request Manager
|
|
130
|
+
* @constructor
|
|
131
|
+
*/
|
|
132
|
+
class TokenManager {
|
|
133
|
+
constructor(config, requestManager) {
|
|
134
|
+
this.config = config;
|
|
135
|
+
this.oauthBaseURL = config.apiRootURL + tokenPaths.ROOT;
|
|
136
|
+
this.requestManager = requestManager;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Given a TokenInfo object, returns whether its access token is expired. An access token is considered
|
|
140
|
+
* expired once its TTL surpasses the current time outside of the given buffer. This is a public method so
|
|
141
|
+
* that other modules may check the validity of their tokens.
|
|
142
|
+
*
|
|
143
|
+
* @param {TokenInfo} tokenInfo the token info to be written
|
|
144
|
+
* @param {int} [bufferMS] An optional buffer we'd like to test against. The greater this buffer, the more aggressively
|
|
145
|
+
* we'll call a token invalid.
|
|
146
|
+
* @returns {boolean} True if token is valid outside of buffer, otherwise false
|
|
147
|
+
*/
|
|
148
|
+
isAccessTokenValid(tokenInfo, bufferMS) {
|
|
149
|
+
if (typeof tokenInfo.acquiredAtMS === 'undefined' ||
|
|
150
|
+
typeof tokenInfo.accessTokenTTLMS === 'undefined') {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
bufferMS = bufferMS || 0;
|
|
154
|
+
var expireTime = tokenInfo.acquiredAtMS + tokenInfo.accessTokenTTLMS - bufferMS;
|
|
155
|
+
return expireTime > Date.now();
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Acquires OAuth2 tokens using a grant type (authorization_code, password, refresh_token)
|
|
159
|
+
*
|
|
160
|
+
* @param {Object} formParams - should contain all params expected by Box OAuth2 token endpoint
|
|
161
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant, null for default behavior
|
|
162
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
163
|
+
* @private
|
|
164
|
+
*/
|
|
165
|
+
getTokens(formParams, options) {
|
|
166
|
+
var params = {
|
|
167
|
+
method: 'POST',
|
|
168
|
+
url: this.oauthBaseURL + tokenPaths.GET,
|
|
169
|
+
headers: {},
|
|
170
|
+
form: formParams,
|
|
171
|
+
};
|
|
172
|
+
options = options || {};
|
|
173
|
+
// add in app-specific id and secret to auth with Box
|
|
174
|
+
params.form.client_id = this.config.clientID;
|
|
175
|
+
params.form.client_secret = this.config.clientSecret;
|
|
176
|
+
if (options.ip) {
|
|
177
|
+
params.headers[HEADER_XFF] = options.ip;
|
|
178
|
+
}
|
|
179
|
+
return this.requestManager
|
|
180
|
+
.makeRequest(params)
|
|
181
|
+
.then((response /* FIXME */) => {
|
|
182
|
+
// Response Error: The API is telling us that we attempted an invalid token grant. This
|
|
183
|
+
// means that our refresh token or auth code has exipred, so propagate an "Expired Tokens"
|
|
184
|
+
// error.
|
|
185
|
+
if (response.body &&
|
|
186
|
+
response.body.error &&
|
|
187
|
+
response.body.error === 'invalid_grant') {
|
|
188
|
+
var errDescription = response.body.error_description;
|
|
189
|
+
var message = errDescription
|
|
190
|
+
? `Auth Error: ${errDescription}`
|
|
191
|
+
: undefined;
|
|
192
|
+
throw errors_1.default.buildAuthError(response, message);
|
|
193
|
+
}
|
|
194
|
+
// Unexpected Response: If the token request couldn't get a valid response, then we're
|
|
195
|
+
// out of options. Build an "Unexpected Response" error and propagate it out for the
|
|
196
|
+
// consumer to handle.
|
|
197
|
+
if (response.statusCode !== http_status_1.default.OK ||
|
|
198
|
+
response.body instanceof Buffer) {
|
|
199
|
+
throw errors_1.default.buildUnexpectedResponseError(response);
|
|
200
|
+
}
|
|
201
|
+
// Check to see if token response is valid in case the API returns us a 200 with a malformed token
|
|
202
|
+
if (!isValidTokenResponse(formParams.grant_type, response.body)) {
|
|
203
|
+
throw errors_1.default.buildResponseError(response, 'Token format from response invalid');
|
|
204
|
+
}
|
|
205
|
+
// Got valid token response. Parse out the TokenInfo and propagate it back.
|
|
206
|
+
return getTokensFromGrantResponse(response.body);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Acquires token info using an authorization code
|
|
211
|
+
*
|
|
212
|
+
* @param {string} authorizationCode - authorization code issued by Box
|
|
213
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
214
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
215
|
+
*/
|
|
216
|
+
getTokensAuthorizationCodeGrant(authorizationCode, options) {
|
|
217
|
+
if (!isValidCodeOrToken(authorizationCode)) {
|
|
218
|
+
return bluebird_1.default.reject(new Error('Invalid authorization code.'));
|
|
219
|
+
}
|
|
220
|
+
var params = {
|
|
221
|
+
grant_type: grantTypes.AUTHORIZATION_CODE,
|
|
222
|
+
code: authorizationCode,
|
|
223
|
+
};
|
|
224
|
+
return this.getTokens(params, options);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Acquires token info using the client credentials grant.
|
|
228
|
+
*
|
|
229
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
230
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
231
|
+
*/
|
|
232
|
+
getTokensClientCredentialsGrant(options) {
|
|
233
|
+
var params = {
|
|
234
|
+
grant_type: grantTypes.CLIENT_CREDENTIALS,
|
|
235
|
+
box_subject_type: this.config.boxSubjectType,
|
|
236
|
+
box_subject_id: this.config.boxSubjectId,
|
|
237
|
+
};
|
|
238
|
+
return this.getTokens(params, options);
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Refreshes the access and refresh tokens for a given refresh token.
|
|
242
|
+
*
|
|
243
|
+
* @param {string} refreshToken - A valid OAuth refresh token
|
|
244
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
245
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
246
|
+
*/
|
|
247
|
+
getTokensRefreshGrant(refreshToken, options) {
|
|
248
|
+
if (!isValidCodeOrToken(refreshToken)) {
|
|
249
|
+
return bluebird_1.default.reject(new Error('Invalid refresh token.'));
|
|
250
|
+
}
|
|
251
|
+
var params = {
|
|
252
|
+
grant_type: grantTypes.REFRESH_TOKEN,
|
|
253
|
+
refresh_token: refreshToken,
|
|
254
|
+
};
|
|
255
|
+
return this.getTokens(params, options);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Gets tokens for enterprise administration of app users
|
|
259
|
+
* @param {string} type The type of token to create, "user" or "enterprise"
|
|
260
|
+
* @param {string} id The ID of the enterprise to generate a token for
|
|
261
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
262
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
263
|
+
*/
|
|
264
|
+
getTokensJWTGrant(type, id, options) {
|
|
265
|
+
if (!this.config.appAuth || !this.config.appAuth.keyID) {
|
|
266
|
+
return bluebird_1.default.reject(new Error('Must provide app auth configuration to use JWT Grant'));
|
|
267
|
+
}
|
|
268
|
+
var claims = {
|
|
269
|
+
exp: Math.floor(Date.now() / 1000) + this.config.appAuth.expirationTime,
|
|
270
|
+
box_sub_type: type,
|
|
271
|
+
};
|
|
272
|
+
var jwtOptions = {
|
|
273
|
+
algorithm: this.config.appAuth.algorithm,
|
|
274
|
+
audience: BOX_JWT_AUDIENCE,
|
|
275
|
+
subject: id,
|
|
276
|
+
issuer: this.config.clientID,
|
|
277
|
+
jwtid: (0, uuid_1.v4)(),
|
|
278
|
+
noTimestamp: !this.config.appAuth.verifyTimestamp,
|
|
279
|
+
keyid: this.config.appAuth.keyID,
|
|
280
|
+
};
|
|
281
|
+
var keyParams = {
|
|
282
|
+
key: this.config.appAuth.privateKey,
|
|
283
|
+
passphrase: this.config.appAuth.passphrase,
|
|
284
|
+
};
|
|
285
|
+
var assertion;
|
|
286
|
+
try {
|
|
287
|
+
assertion = jsonwebtoken_1.default.sign(claims, keyParams, jwtOptions);
|
|
288
|
+
}
|
|
289
|
+
catch (jwtErr) {
|
|
290
|
+
return bluebird_1.default.reject(jwtErr);
|
|
291
|
+
}
|
|
292
|
+
var params = {
|
|
293
|
+
grant_type: grantTypes.JWT,
|
|
294
|
+
assertion,
|
|
295
|
+
};
|
|
296
|
+
// Start the request timer immediately before executing the async request
|
|
297
|
+
asyncRequestTimer = process.hrtime();
|
|
298
|
+
return this.getTokens(params, options).catch((err) => this.retryJWTGrant(claims, jwtOptions, keyParams, params, options, err, 0));
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Attempt a retry if possible and create a new JTI claim. If the request hasn't exceeded it's maximum number of retries,
|
|
302
|
+
* re-execute the request (after the retry interval). Otherwise, propagate a new error.
|
|
303
|
+
*
|
|
304
|
+
* @param {Object} claims - JTI claims object
|
|
305
|
+
* @param {Object} [jwtOptions] - JWT options for the signature
|
|
306
|
+
* @param {Object} keyParams - Key JWT parameters object that contains the private key and the passphrase
|
|
307
|
+
* @param {Object} params - Should contain all params expected by Box OAuth2 token endpoint
|
|
308
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
309
|
+
* @param {Error} error - Error from the previous JWT request
|
|
310
|
+
* @param {int} numRetries - Number of retries attempted
|
|
311
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the token info
|
|
312
|
+
*/
|
|
313
|
+
// eslint-disable-next-line max-params
|
|
314
|
+
retryJWTGrant(claims /* FIXME */, jwtOptions /* FIXME */, keyParams /* FIXME */, params /* FIXME */, options, error /* FIXME */, numRetries) {
|
|
315
|
+
if (numRetries < this.config.numMaxRetries &&
|
|
316
|
+
isJWTAuthErrorRetryable(error)) {
|
|
317
|
+
var retryTimeoutinSeconds;
|
|
318
|
+
numRetries += 1;
|
|
319
|
+
// If the retry strategy is defined, then use it to determine the time (in ms) until the next retry or to
|
|
320
|
+
// propagate an error to the user.
|
|
321
|
+
if (this.config.retryStrategy) {
|
|
322
|
+
// Get the total elapsed time so far since the request was executed
|
|
323
|
+
var totalElapsedTime = process.hrtime(asyncRequestTimer);
|
|
324
|
+
var totalElapsedTimeMS = totalElapsedTime[0] * 1000 + totalElapsedTime[1] / 1000000;
|
|
325
|
+
var retryOptions = {
|
|
326
|
+
error,
|
|
327
|
+
numRetryAttempts: numRetries,
|
|
328
|
+
numMaxRetries: this.config.numMaxRetries,
|
|
329
|
+
retryIntervalMS: this.config.retryIntervalMS,
|
|
330
|
+
totalElapsedTimeMS,
|
|
331
|
+
};
|
|
332
|
+
retryTimeoutinSeconds = this.config.retryStrategy(retryOptions);
|
|
333
|
+
// If the retry strategy doesn't return a number/time in ms, then propagate the response error to the user.
|
|
334
|
+
// However, if the retry strategy returns its own error, this will be propagated to the user instead.
|
|
335
|
+
if (typeof retryTimeoutinSeconds !== 'number') {
|
|
336
|
+
if (retryTimeoutinSeconds instanceof Error) {
|
|
337
|
+
error = retryTimeoutinSeconds;
|
|
338
|
+
}
|
|
339
|
+
throw error;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
else if (error.hasOwnProperty('response') &&
|
|
343
|
+
error.response.hasOwnProperty('headers') &&
|
|
344
|
+
error.response.headers.hasOwnProperty('retry-after')) {
|
|
345
|
+
retryTimeoutinSeconds = error.response.headers['retry-after'];
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
retryTimeoutinSeconds = Math.ceil((0, exponential_backoff_1.default)(numRetries, this.config.retryIntervalMS) / 1000);
|
|
349
|
+
}
|
|
350
|
+
var time = Math.floor(Date.now() / 1000);
|
|
351
|
+
if (error.response.headers.date) {
|
|
352
|
+
time = Math.floor(Date.parse(error.response.headers.date) / 1000);
|
|
353
|
+
}
|
|
354
|
+
// Add length of retry timeout to current expiration time to calculate the expiration time for the JTI claim.
|
|
355
|
+
claims.exp = Math.ceil(time + this.config.appAuth.expirationTime + retryTimeoutinSeconds);
|
|
356
|
+
jwtOptions.jwtid = (0, uuid_1.v4)();
|
|
357
|
+
try {
|
|
358
|
+
params.assertion = jsonwebtoken_1.default.sign(claims, keyParams, jwtOptions);
|
|
359
|
+
}
|
|
360
|
+
catch (jwtErr) {
|
|
361
|
+
throw jwtErr;
|
|
362
|
+
}
|
|
363
|
+
return bluebird_1.default.delay(retryTimeoutinSeconds).then(() => {
|
|
364
|
+
// Start the request timer immediately before executing the async request
|
|
365
|
+
asyncRequestTimer = process.hrtime();
|
|
366
|
+
return this.getTokens(params, options).catch((err) => this.retryJWTGrant(claims, jwtOptions, keyParams, params, options, err, numRetries));
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
else if (numRetries >= this.config.numMaxRetries) {
|
|
370
|
+
error.maxRetriesExceeded = true;
|
|
371
|
+
}
|
|
372
|
+
throw error;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Exchange a valid access token for one with a lower scope, or delegated to
|
|
376
|
+
* an external user identifier.
|
|
377
|
+
*
|
|
378
|
+
* @param {string} accessToken - The valid access token to exchange
|
|
379
|
+
* @param {string|string[]} scopes - The scope(s) of the new access token
|
|
380
|
+
* @param {string} [resource] - The absolute URL of an API resource to restrict the new token to
|
|
381
|
+
* @param {Object} [options] - Optional parameters
|
|
382
|
+
* @param {TokenRequestOptions} [options.tokenRequestOptions] - Sets optional behavior for the token grant
|
|
383
|
+
* @param {ActorParams} [options.actor] - Optional actor parameters for creating annotator tokens
|
|
384
|
+
* @param {SharedLinkParams} [options.sharedLink] - Optional shared link parameters for creating tokens using shared links
|
|
385
|
+
* @returns {Promise<TokenInfo>} Promise resolving to the new token info
|
|
386
|
+
*/
|
|
387
|
+
exchangeToken(accessToken, scopes, resource, options) {
|
|
388
|
+
var params = {
|
|
389
|
+
grant_type: grantTypes.TOKEN_EXCHANGE,
|
|
390
|
+
subject_token_type: ACCESS_TOKEN_TYPE,
|
|
391
|
+
subject_token: accessToken,
|
|
392
|
+
scope: typeof scopes === 'string' ? scopes : scopes.join(' '),
|
|
393
|
+
};
|
|
394
|
+
if (resource) {
|
|
395
|
+
params.resource = resource;
|
|
396
|
+
}
|
|
397
|
+
if (options && options.sharedLink) {
|
|
398
|
+
params.box_shared_link = options.sharedLink.url;
|
|
399
|
+
}
|
|
400
|
+
if (options && options.actor) {
|
|
401
|
+
var payload = {
|
|
402
|
+
iss: this.config.clientID,
|
|
403
|
+
sub: options.actor.id,
|
|
404
|
+
aud: BOX_JWT_AUDIENCE,
|
|
405
|
+
box_sub_type: 'external',
|
|
406
|
+
name: options.actor.name,
|
|
407
|
+
};
|
|
408
|
+
var jwtOptions = {
|
|
409
|
+
algorithm: 'none',
|
|
410
|
+
expiresIn: '1m',
|
|
411
|
+
noTimestamp: true,
|
|
412
|
+
jwtid: (0, uuid_1.v4)(),
|
|
413
|
+
};
|
|
414
|
+
var token;
|
|
415
|
+
try {
|
|
416
|
+
token = jsonwebtoken_1.default.sign(payload, 'UNUSED', jwtOptions /* FIXME */);
|
|
417
|
+
}
|
|
418
|
+
catch (jwtError) {
|
|
419
|
+
return bluebird_1.default.reject(jwtError);
|
|
420
|
+
}
|
|
421
|
+
params.actor_token = token;
|
|
422
|
+
params.actor_token_type = ACTOR_TOKEN_TYPE;
|
|
423
|
+
}
|
|
424
|
+
return this.getTokens(params, options && options.tokenRequestOptions
|
|
425
|
+
? options.tokenRequestOptions
|
|
426
|
+
: null);
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Revokes a token pair associated with a given access or refresh token.
|
|
430
|
+
*
|
|
431
|
+
* @param {string} token - A valid access or refresh token to revoke
|
|
432
|
+
* @param {TokenRequestOptions} [options] - Sets optional behavior for the token grant
|
|
433
|
+
* @returns {Promise} Promise resolving if the revoke succeeds
|
|
434
|
+
*/
|
|
435
|
+
revokeTokens(token, options) {
|
|
436
|
+
var params = {
|
|
437
|
+
method: 'POST',
|
|
438
|
+
url: this.oauthBaseURL + tokenPaths.REVOKE,
|
|
439
|
+
form: {
|
|
440
|
+
token,
|
|
441
|
+
client_id: this.config.clientID,
|
|
442
|
+
client_secret: this.config.clientSecret,
|
|
443
|
+
},
|
|
444
|
+
};
|
|
445
|
+
if (options && options.ip) {
|
|
446
|
+
params.headers = {};
|
|
447
|
+
params.headers[HEADER_XFF] = options.ip;
|
|
448
|
+
}
|
|
449
|
+
return this.requestManager.makeRequest(params);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
module.exports = TokenManager;
|
|
453
|
+
//# sourceMappingURL=token-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../src/token-manager.ts"],"names":[],"mappings":"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"}
|