@cycomdatasystems/mackinac-sdk 1.3.7
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/README.md +239 -0
- package/dist/core/customFetch.d.ts +6 -0
- package/dist/core/customFetch.js +67 -0
- package/dist/generated/mackinac.client.d.ts +1858 -0
- package/dist/generated/mackinac.client.js +1002 -0
- package/dist/generated/models/assembly.d.ts +49 -0
- package/dist/generated/models/assembly.js +1 -0
- package/dist/generated/models/callingConventions.d.ts +15 -0
- package/dist/generated/models/callingConventions.js +15 -0
- package/dist/generated/models/codeDto.d.ts +150 -0
- package/dist/generated/models/codeDto.js +8 -0
- package/dist/generated/models/constructorInfo.d.ts +51 -0
- package/dist/generated/models/constructorInfo.js +1 -0
- package/dist/generated/models/contractCounselDto.d.ts +168 -0
- package/dist/generated/models/contractCounselDto.js +8 -0
- package/dist/generated/models/contractCounselDtoPaginatedResultDto.d.ts +15 -0
- package/dist/generated/models/contractCounselDtoPaginatedResultDto.js +1 -0
- package/dist/generated/models/createContractCounselDto.d.ts +157 -0
- package/dist/generated/models/createContractCounselDto.js +8 -0
- package/dist/generated/models/createExpenseReserveDto.d.ts +31 -0
- package/dist/generated/models/createExpenseReserveDto.js +8 -0
- package/dist/generated/models/createExpertWitnessDto.d.ts +157 -0
- package/dist/generated/models/createExpertWitnessDto.js +8 -0
- package/dist/generated/models/createGeneralExpenseDto.d.ts +161 -0
- package/dist/generated/models/createGeneralExpenseDto.js +8 -0
- package/dist/generated/models/createIndemnityReserveDto.d.ts +31 -0
- package/dist/generated/models/createIndemnityReserveDto.js +8 -0
- package/dist/generated/models/createLitigationMatterRequestDto.d.ts +127 -0
- package/dist/generated/models/createLitigationMatterRequestDto.js +8 -0
- package/dist/generated/models/createPaymentDto.d.ts +165 -0
- package/dist/generated/models/createPaymentDto.js +8 -0
- package/dist/generated/models/createSettlementDto.d.ts +157 -0
- package/dist/generated/models/createSettlementDto.js +8 -0
- package/dist/generated/models/createWrpAssignmentMatterDto.d.ts +67 -0
- package/dist/generated/models/createWrpAssignmentMatterDto.js +8 -0
- package/dist/generated/models/customAttributeData.d.ts +19 -0
- package/dist/generated/models/customAttributeData.js +1 -0
- package/dist/generated/models/customAttributeNamedArgument.d.ts +16 -0
- package/dist/generated/models/customAttributeNamedArgument.js +1 -0
- package/dist/generated/models/customAttributeTypedArgument.d.ts +14 -0
- package/dist/generated/models/customAttributeTypedArgument.js +1 -0
- package/dist/generated/models/customAttributeTypedArgumentValue.d.ts +11 -0
- package/dist/generated/models/customAttributeTypedArgumentValue.js +8 -0
- package/dist/generated/models/deleteApiV1MattersMatterIdParams.d.ts +10 -0
- package/dist/generated/models/deleteApiV1MattersMatterIdParams.js +8 -0
- package/dist/generated/models/eventAttributes.d.ts +13 -0
- package/dist/generated/models/eventAttributes.js +13 -0
- package/dist/generated/models/eventInfo.d.ts +32 -0
- package/dist/generated/models/eventInfo.js +1 -0
- package/dist/generated/models/exception.d.ts +25 -0
- package/dist/generated/models/exception.js +1 -0
- package/dist/generated/models/exceptionData.d.ts +13 -0
- package/dist/generated/models/exceptionData.js +8 -0
- package/dist/generated/models/expenseReserveDto.d.ts +41 -0
- package/dist/generated/models/expenseReserveDto.js +8 -0
- package/dist/generated/models/expenseReserveDtoPaginatedResultDto.d.ts +15 -0
- package/dist/generated/models/expenseReserveDtoPaginatedResultDto.js +1 -0
- package/dist/generated/models/expertWitnessDto.d.ts +168 -0
- package/dist/generated/models/expertWitnessDto.js +8 -0
- package/dist/generated/models/expertWitnessDtoPaginatedResultDto.d.ts +15 -0
- package/dist/generated/models/expertWitnessDtoPaginatedResultDto.js +1 -0
- package/dist/generated/models/fieldAttributes.d.ts +29 -0
- package/dist/generated/models/fieldAttributes.js +29 -0
- package/dist/generated/models/fieldDto.d.ts +17 -0
- package/dist/generated/models/fieldDto.js +8 -0
- package/dist/generated/models/fieldInfo.d.ts +44 -0
- package/dist/generated/models/fieldInfo.js +1 -0
- package/dist/generated/models/fieldMetadataDto.d.ts +20 -0
- package/dist/generated/models/fieldMetadataDto.js +1 -0
- package/dist/generated/models/generalExpenseDto.d.ts +168 -0
- package/dist/generated/models/generalExpenseDto.js +8 -0
- package/dist/generated/models/generalExpenseDtoPaginatedResultDto.d.ts +15 -0
- package/dist/generated/models/generalExpenseDtoPaginatedResultDto.js +1 -0
- package/dist/generated/models/genericParameterAttributes.d.ts +18 -0
- package/dist/generated/models/genericParameterAttributes.js +18 -0
- package/dist/generated/models/getApiV1CodesParams.d.ts +11 -0
- package/dist/generated/models/getApiV1CodesParams.js +8 -0
- package/dist/generated/models/getApiV1MattersFieldsMetadataAccountParams.d.ts +10 -0
- package/dist/generated/models/getApiV1MattersFieldsMetadataAccountParams.js +8 -0
- package/dist/generated/models/getApiV1MattersFieldsMetadataCreateParams.d.ts +10 -0
- package/dist/generated/models/getApiV1MattersFieldsMetadataCreateParams.js +8 -0
- package/dist/generated/models/getApiV1MattersFieldsMetadataDepartmentParams.d.ts +10 -0
- package/dist/generated/models/getApiV1MattersFieldsMetadataDepartmentParams.js +8 -0
- package/dist/generated/models/getApiV1MattersFieldsMetadataParams.d.ts +11 -0
- package/dist/generated/models/getApiV1MattersFieldsMetadataParams.js +8 -0
- package/dist/generated/models/getApiV1MattersFileNumberExistsParams.d.ts +10 -0
- package/dist/generated/models/getApiV1MattersFileNumberExistsParams.js +8 -0
- package/dist/generated/models/getApiV1MattersFinanceMetadataParams.d.ts +10 -0
- package/dist/generated/models/getApiV1MattersFinanceMetadataParams.js +8 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceCollectionsCollectedParams.d.ts +13 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceCollectionsCollectedParams.js +8 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceExpendituresContractCounselParams.d.ts +13 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceExpendituresContractCounselParams.js +8 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceExpendituresExpertWitnessParams.d.ts +13 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceExpendituresExpertWitnessParams.js +8 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceExpendituresGeneralExpensesParams.d.ts +13 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceExpendituresGeneralExpensesParams.js +8 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceExpendituresSettlementsParams.d.ts +13 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceExpendituresSettlementsParams.js +8 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceReservesExpensesParams.d.ts +13 -0
- package/dist/generated/models/getApiV1MattersMatterIdFinanceReservesExpensesParams.js +8 -0
- package/dist/generated/models/getApiV1MattersMyOpenParams.d.ts +10 -0
- package/dist/generated/models/getApiV1MattersMyOpenParams.js +8 -0
- package/dist/generated/models/getApiV1MattersNextFileNumberParams.d.ts +10 -0
- package/dist/generated/models/getApiV1MattersNextFileNumberParams.js +8 -0
- package/dist/generated/models/getApiV1StaffParams.d.ts +14 -0
- package/dist/generated/models/getApiV1StaffParams.js +8 -0
- package/dist/generated/models/iCustomAttributeProvider.d.ts +10 -0
- package/dist/generated/models/iCustomAttributeProvider.js +8 -0
- package/dist/generated/models/iSelectableItem.d.ts +16 -0
- package/dist/generated/models/iSelectableItem.js +8 -0
- package/dist/generated/models/indemnityReserveDto.d.ts +41 -0
- package/dist/generated/models/indemnityReserveDto.js +8 -0
- package/dist/generated/models/index.d.ts +134 -0
- package/dist/generated/models/index.js +134 -0
- package/dist/generated/models/intPtr.d.ts +10 -0
- package/dist/generated/models/intPtr.js +8 -0
- package/dist/generated/models/layoutKind.d.ts +13 -0
- package/dist/generated/models/layoutKind.js +13 -0
- package/dist/generated/models/litigationMatterAbstractDto.d.ts +17 -0
- package/dist/generated/models/litigationMatterAbstractDto.js +8 -0
- package/dist/generated/models/litigationMatterDto.d.ts +308 -0
- package/dist/generated/models/litigationMatterDto.js +8 -0
- package/dist/generated/models/litigationSearchTermScopes.d.ts +21 -0
- package/dist/generated/models/litigationSearchTermScopes.js +8 -0
- package/dist/generated/models/matterFieldMetadataDto.d.ts +12 -0
- package/dist/generated/models/matterFieldMetadataDto.js +1 -0
- package/dist/generated/models/matterFinanceFieldValuesDto.d.ts +47 -0
- package/dist/generated/models/matterFinanceFieldValuesDto.js +1 -0
- package/dist/generated/models/matterFinanceMetadataDto.d.ts +12 -0
- package/dist/generated/models/matterFinanceMetadataDto.js +1 -0
- package/dist/generated/models/matterFinancePatchDto.d.ts +54 -0
- package/dist/generated/models/matterFinancePatchDto.js +8 -0
- package/dist/generated/models/matterPartyPatchDto.d.ts +58 -0
- package/dist/generated/models/matterPartyPatchDto.js +8 -0
- package/dist/generated/models/matterPartyPostDto.d.ts +42 -0
- package/dist/generated/models/matterPartyPostDto.js +8 -0
- package/dist/generated/models/matterPartyRelationPatchDto.d.ts +42 -0
- package/dist/generated/models/matterPartyRelationPatchDto.js +8 -0
- package/dist/generated/models/matterPaymentMetadataDto.d.ts +18 -0
- package/dist/generated/models/matterPaymentMetadataDto.js +1 -0
- package/dist/generated/models/matterPersonDto.d.ts +122 -0
- package/dist/generated/models/matterPersonDto.js +1 -0
- package/dist/generated/models/matterPersonRelationDto.d.ts +111 -0
- package/dist/generated/models/matterPersonRelationDto.js +8 -0
- package/dist/generated/models/matterSearchCriteriaDto.d.ts +36 -0
- package/dist/generated/models/matterSearchCriteriaDto.js +1 -0
- package/dist/generated/models/matterSearchHitsRequestDto.d.ts +12 -0
- package/dist/generated/models/matterSearchHitsRequestDto.js +8 -0
- package/dist/generated/models/matterSearchRequestDto.d.ts +14 -0
- package/dist/generated/models/matterSearchRequestDto.js +1 -0
- package/dist/generated/models/memberInfo.d.ts +23 -0
- package/dist/generated/models/memberInfo.js +1 -0
- package/dist/generated/models/memberTypes.d.ts +19 -0
- package/dist/generated/models/memberTypes.js +19 -0
- package/dist/generated/models/methodAttributes.d.ts +32 -0
- package/dist/generated/models/methodAttributes.js +32 -0
- package/dist/generated/models/methodBase.d.ts +51 -0
- package/dist/generated/models/methodBase.js +1 -0
- package/dist/generated/models/methodImplAttributes.d.ts +24 -0
- package/dist/generated/models/methodImplAttributes.js +24 -0
- package/dist/generated/models/methodInfo.d.ts +56 -0
- package/dist/generated/models/methodInfo.js +1 -0
- package/dist/generated/models/modelError.d.ts +13 -0
- package/dist/generated/models/modelError.js +1 -0
- package/dist/generated/models/modelStateEntry.d.ts +22 -0
- package/dist/generated/models/modelStateEntry.js +1 -0
- package/dist/generated/models/modelStateEntryRawValue.d.ts +11 -0
- package/dist/generated/models/modelStateEntryRawValue.js +8 -0
- package/dist/generated/models/modelValidationState.d.ts +14 -0
- package/dist/generated/models/modelValidationState.js +14 -0
- package/dist/generated/models/module.d.ts +25 -0
- package/dist/generated/models/module.js +1 -0
- package/dist/generated/models/moduleHandle.d.ts +10 -0
- package/dist/generated/models/moduleHandle.js +8 -0
- package/dist/generated/models/nextFileNumberResponseDto.d.ts +11 -0
- package/dist/generated/models/nextFileNumberResponseDto.js +8 -0
- package/dist/generated/models/noteDto.d.ts +50 -0
- package/dist/generated/models/noteDto.js +8 -0
- package/dist/generated/models/openMatterDto.d.ts +33 -0
- package/dist/generated/models/openMatterDto.js +8 -0
- package/dist/generated/models/operation.d.ts +20 -0
- package/dist/generated/models/operation.js +1 -0
- package/dist/generated/models/operationType.d.ts +17 -0
- package/dist/generated/models/operationType.js +17 -0
- package/dist/generated/models/operationValue.d.ts +11 -0
- package/dist/generated/models/operationValue.js +8 -0
- package/dist/generated/models/parameterAttributes.d.ts +21 -0
- package/dist/generated/models/parameterAttributes.js +21 -0
- package/dist/generated/models/parameterInfo.d.ts +34 -0
- package/dist/generated/models/parameterInfo.js +1 -0
- package/dist/generated/models/parameterInfoDefaultValue.d.ts +11 -0
- package/dist/generated/models/parameterInfoDefaultValue.js +8 -0
- package/dist/generated/models/parameterInfoRawDefaultValue.d.ts +11 -0
- package/dist/generated/models/parameterInfoRawDefaultValue.js +8 -0
- package/dist/generated/models/paymentDto.d.ts +170 -0
- package/dist/generated/models/paymentDto.js +8 -0
- package/dist/generated/models/paymentDtoPaginatedResultDto.d.ts +15 -0
- package/dist/generated/models/paymentDtoPaginatedResultDto.js +1 -0
- package/dist/generated/models/personDto.d.ts +471 -0
- package/dist/generated/models/personDto.js +8 -0
- package/dist/generated/models/personDtoIEnumerableInt32ValueTuple.d.ts +10 -0
- package/dist/generated/models/personDtoIEnumerableInt32ValueTuple.js +8 -0
- package/dist/generated/models/personSearchDto.d.ts +509 -0
- package/dist/generated/models/personSearchDto.js +8 -0
- package/dist/generated/models/postApiV1Codes400One.d.ts +11 -0
- package/dist/generated/models/postApiV1Codes400One.js +1 -0
- package/dist/generated/models/postApiV1Codes400Three.d.ts +11 -0
- package/dist/generated/models/postApiV1Codes400Three.js +1 -0
- package/dist/generated/models/postApiV1Codes400Two.d.ts +11 -0
- package/dist/generated/models/postApiV1Codes400Two.js +1 -0
- package/dist/generated/models/postApiV1MattersParams.d.ts +10 -0
- package/dist/generated/models/postApiV1MattersParams.js +8 -0
- package/dist/generated/models/postApiV1PeopleSearchParams.d.ts +11 -0
- package/dist/generated/models/postApiV1PeopleSearchParams.js +8 -0
- package/dist/generated/models/problemDetails.d.ts +20 -0
- package/dist/generated/models/problemDetails.js +8 -0
- package/dist/generated/models/propertyAttributes.d.ts +18 -0
- package/dist/generated/models/propertyAttributes.js +18 -0
- package/dist/generated/models/propertyInfo.d.ts +32 -0
- package/dist/generated/models/propertyInfo.js +1 -0
- package/dist/generated/models/runtimeFieldHandle.d.ts +11 -0
- package/dist/generated/models/runtimeFieldHandle.js +1 -0
- package/dist/generated/models/runtimeMethodHandle.d.ts +11 -0
- package/dist/generated/models/runtimeMethodHandle.js +1 -0
- package/dist/generated/models/runtimeTypeHandle.d.ts +11 -0
- package/dist/generated/models/runtimeTypeHandle.js +1 -0
- package/dist/generated/models/securityRuleSet.d.ts +13 -0
- package/dist/generated/models/securityRuleSet.js +13 -0
- package/dist/generated/models/settlementDto.d.ts +168 -0
- package/dist/generated/models/settlementDto.js +8 -0
- package/dist/generated/models/settlementDtoPaginatedResultDto.d.ts +15 -0
- package/dist/generated/models/settlementDtoPaginatedResultDto.js +1 -0
- package/dist/generated/models/staffDto.d.ts +414 -0
- package/dist/generated/models/staffDto.js +8 -0
- package/dist/generated/models/structLayoutAttribute.d.ts +14 -0
- package/dist/generated/models/structLayoutAttribute.js +1 -0
- package/dist/generated/models/structLayoutAttributeTypeId.d.ts +11 -0
- package/dist/generated/models/structLayoutAttributeTypeId.js +8 -0
- package/dist/generated/models/type.d.ts +100 -0
- package/dist/generated/models/type.js +1 -0
- package/dist/generated/models/typeAttributes.d.ts +36 -0
- package/dist/generated/models/typeAttributes.js +36 -0
- package/dist/generated/models/typeInfo.d.ts +123 -0
- package/dist/generated/models/typeInfo.js +1 -0
- package/dist/generated/models/validationProblemDetails.d.ts +23 -0
- package/dist/generated/models/validationProblemDetails.js +1 -0
- package/dist/generated/models/validationProblemDetailsErrors.d.ts +13 -0
- package/dist/generated/models/validationProblemDetailsErrors.js +8 -0
- package/dist/generated/models/wrpAssignmentMatterResponseDto.d.ts +11 -0
- package/dist/generated/models/wrpAssignmentMatterResponseDto.js +8 -0
- package/dist/generated/models/wrpBrandingDto.d.ts +17 -0
- package/dist/generated/models/wrpBrandingDto.js +8 -0
- package/dist/generated/models/wrpConfigDto.d.ts +11 -0
- package/dist/generated/models/wrpConfigDto.js +1 -0
- package/dist/generated/models/wrpFieldMetadataDto.d.ts +26 -0
- package/dist/generated/models/wrpFieldMetadataDto.js +1 -0
- package/dist/generated/models/wrpFieldValidationDto.d.ts +13 -0
- package/dist/generated/models/wrpFieldValidationDto.js +8 -0
- package/dist/generated/models/wrpMetadataDto.d.ts +14 -0
- package/dist/generated/models/wrpMetadataDto.js +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/package.json +30 -0
package/README.md
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
# Mackinac SDK
|
|
2
|
+
|
|
3
|
+
A shared TypeScript client for the Mackinac API.
|
|
4
|
+
Generated from the Mackinac OpenAPI specification, this SDK provides strongly typed models and a unified fetch-based client for web and mobile applications. It ensures consistent API usage, reduces duplication, and keeps all consumers aligned with the latest API contract.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install @cycom/mackinac-sdk
|
|
12
|
+
# or
|
|
13
|
+
yarn add @cycom/mackinac-sdk
|
|
14
|
+
# or
|
|
15
|
+
pnpm add @cycom/mackinac-sdk
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
### Configure the SDK once at application startup
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
import { configureMackinac } from '@cycom/mackinac-sdk';
|
|
26
|
+
|
|
27
|
+
configureMackinac({
|
|
28
|
+
baseUrl: process.env.MACKINAC_API_URL!,
|
|
29
|
+
});
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
For applications that need to attach authorization headers or other request-specific headers to SDK calls, you can provide a `headersProvider` function:
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import { configureMackinac } from '@cycom/mackinac-sdk';
|
|
36
|
+
|
|
37
|
+
configureMackinac({
|
|
38
|
+
baseUrl: process.env.MACKINAC_API_URL!,
|
|
39
|
+
headersProvider: () => ({
|
|
40
|
+
'Authorization': `Bearer ${getToken()}`,
|
|
41
|
+
'X-Org-Id': getCurrentOrgId(),
|
|
42
|
+
}),
|
|
43
|
+
});
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The `headersProvider` can also be async to support token retrieval from async sources:
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
configureMackinac({
|
|
50
|
+
baseUrl: process.env.MACKINAC_API_URL!,
|
|
51
|
+
headersProvider: async () => {
|
|
52
|
+
const token = await getAccessToken();
|
|
53
|
+
return {
|
|
54
|
+
'Authorization': `Bearer ${token}`,
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Authentication
|
|
61
|
+
|
|
62
|
+
#### Using Headers Provider (Recommended)
|
|
63
|
+
|
|
64
|
+
The SDK provides a `headersProvider` function for request-scoped authentication. This is the recommended approach for applications that need to attach `Authorization` headers or other dynamic headers to each SDK call.
|
|
65
|
+
|
|
66
|
+
**Benefits:**
|
|
67
|
+
- Centralized header management for all SDK calls
|
|
68
|
+
- Support for async token retrieval
|
|
69
|
+
- Automatically merges with per-call headers
|
|
70
|
+
- Per-request invocation prevents token leakage across requests
|
|
71
|
+
|
|
72
|
+
**Example: Next.js Route Handler with Auth0**
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
// app/api/finance/payments/route.ts
|
|
76
|
+
import { getSession } from '@auth0/nextjs-auth0';
|
|
77
|
+
import { configureMackinac } from '@cycom/mackinac-sdk';
|
|
78
|
+
import { getApiV1MattersMatterIdFinancePayments } from '@cycom/mackinac-sdk';
|
|
79
|
+
|
|
80
|
+
export async function GET(request: Request) {
|
|
81
|
+
const session = await getSession();
|
|
82
|
+
|
|
83
|
+
// Configure SDK with token provider for this request
|
|
84
|
+
configureMackinac({
|
|
85
|
+
baseUrl: process.env.MACKINAC_API_URL!,
|
|
86
|
+
headersProvider: () => ({
|
|
87
|
+
'Authorization': `Bearer ${session.accessToken}`,
|
|
88
|
+
}),
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// All SDK calls now include Authorization header
|
|
92
|
+
const payments = await getApiV1MattersMatterIdFinancePayments(123);
|
|
93
|
+
|
|
94
|
+
return Response.json(payments);
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Or, if you need async token retrieval:
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
// src/server/mackinac/config.ts
|
|
102
|
+
import { configureMackinac } from '@cycom/mackinac-sdk';
|
|
103
|
+
|
|
104
|
+
export function configureMackinacForRequest(getToken: () => Promise<string>) {
|
|
105
|
+
configureMackinac({
|
|
106
|
+
baseUrl: process.env.MACKINAC_API_URL!,
|
|
107
|
+
headersProvider: async () => {
|
|
108
|
+
const token = await getToken();
|
|
109
|
+
return {
|
|
110
|
+
'Authorization': `Bearer ${token}`,
|
|
111
|
+
};
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
// app/api/finance/payments/route.ts
|
|
119
|
+
import { configureMackinacForRequest } from '@/server/mackinac/config';
|
|
120
|
+
import { getApiV1MattersMatterIdFinancePayments } from '@cycom/mackinac-sdk';
|
|
121
|
+
|
|
122
|
+
export async function GET(request: Request) {
|
|
123
|
+
// Configure SDK with async token provider for this request
|
|
124
|
+
configureMackinacForRequest(async () => {
|
|
125
|
+
// Simulate async token retrieval
|
|
126
|
+
return await fetchTokenFromAuthService();
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// All SDK calls now include Authorization header
|
|
130
|
+
const payments = await getApiV1MattersMatterIdFinancePayments(123);
|
|
131
|
+
|
|
132
|
+
return Response.json(payments);
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Example: Synchronous Headers Provider**
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
import { configureMackinac } from '@cycom/mackinac-sdk';
|
|
140
|
+
|
|
141
|
+
configureMackinac({
|
|
142
|
+
baseUrl: process.env.MACKINAC_API_URL!,
|
|
143
|
+
headersProvider: () => ({
|
|
144
|
+
'Authorization': `Bearer ${process.env.API_TOKEN}`,
|
|
145
|
+
'X-Org-Id': 'org-123',
|
|
146
|
+
}),
|
|
147
|
+
});
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Header Merge Priority**
|
|
151
|
+
|
|
152
|
+
Headers are merged in the following order (later overrides earlier):
|
|
153
|
+
1. Default headers (`Content-Type: application/json`)
|
|
154
|
+
2. Headers from `headersProvider()`
|
|
155
|
+
3. Per-call headers passed to individual endpoint functions
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
// Example of per-call override
|
|
159
|
+
const payments = await getApiV1MattersMatterIdFinancePayments(
|
|
160
|
+
123,
|
|
161
|
+
{
|
|
162
|
+
headers: {
|
|
163
|
+
'X-Request-Id': 'custom-id', // Merges with provider headers
|
|
164
|
+
'Authorization': 'Bearer override-token', // Overrides provider's Authorization
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### Middleware-Based Authentication (Legacy)
|
|
171
|
+
|
|
172
|
+
This SDK **does not handle authentication internally**.
|
|
173
|
+
|
|
174
|
+
If your application uses Auth0 (or another IdP), and access tokens are added to outbound requests by middleware or framework-level fetch interception, **you should not supply tokens to this SDK directly**.
|
|
175
|
+
|
|
176
|
+
The SDK simply calls `fetch()`. Any middleware or runtime environment that injects the `Authorization` header will continue to work as expected.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Example
|
|
181
|
+
|
|
182
|
+
```ts
|
|
183
|
+
import { getApiV1MattersMyOpen } from '@cycom/mackinac-sdk';
|
|
184
|
+
|
|
185
|
+
// Fetch "My Open Matters" for the current user
|
|
186
|
+
const matters = await getApiV1MattersMyOpen({ moduleCode: 'Claims' });
|
|
187
|
+
|
|
188
|
+
console.log('Open matters:', matters);
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
All generated functions return response bodies directly (not wrapped objects), following the configured Orval output.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Code Generation
|
|
196
|
+
|
|
197
|
+
This SDK is generated from the Mackinac OpenAPI spec using **Orval**.
|
|
198
|
+
|
|
199
|
+
### Regenerate the SDK
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
npm run orval
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Ensure the latest `swagger.json` from the Mackinac API is located in the `/contracts` directory or at the configured URL.
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Development
|
|
210
|
+
|
|
211
|
+
- Requires Node.js 18+
|
|
212
|
+
- Install dependencies:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
npm install
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
- Run codegen + build:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
npm run orval && npm run build
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Versioning
|
|
227
|
+
|
|
228
|
+
This package follows semantic versioning:
|
|
229
|
+
|
|
230
|
+
- **PATCH:** Regenerated SDK with no API contract changes
|
|
231
|
+
- **MINOR:** New endpoints or non-breaking additions
|
|
232
|
+
- **MAJOR:** Breaking API contract changes
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## License
|
|
237
|
+
|
|
238
|
+
This package is intended for internal use within Cycom.
|
|
239
|
+
If distributed externally, add an appropriate open-source license (e.g., MIT).
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type MackinacConfig = {
|
|
2
|
+
baseUrl: string;
|
|
3
|
+
headersProvider?: () => Record<string, string> | Promise<Record<string, string>>;
|
|
4
|
+
};
|
|
5
|
+
export declare function configureMackinac(partial: Partial<MackinacConfig>): void;
|
|
6
|
+
export declare function customFetch<TResponse>(url: string, init?: RequestInit): Promise<TResponse>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// src/core/customFetch.ts
|
|
2
|
+
let config = {
|
|
3
|
+
baseUrl: '',
|
|
4
|
+
};
|
|
5
|
+
export function configureMackinac(partial) {
|
|
6
|
+
config = {
|
|
7
|
+
...config,
|
|
8
|
+
...partial,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function normalizeHeaders(input) {
|
|
12
|
+
if (!input)
|
|
13
|
+
return {};
|
|
14
|
+
if (input instanceof Headers) {
|
|
15
|
+
const obj = {};
|
|
16
|
+
input.forEach((value, key) => {
|
|
17
|
+
obj[key] = value;
|
|
18
|
+
});
|
|
19
|
+
return obj;
|
|
20
|
+
}
|
|
21
|
+
if (Array.isArray(input)) {
|
|
22
|
+
const obj = {};
|
|
23
|
+
for (const [key, value] of input) {
|
|
24
|
+
obj[key] = value;
|
|
25
|
+
}
|
|
26
|
+
return obj;
|
|
27
|
+
}
|
|
28
|
+
// Plain object case
|
|
29
|
+
return { ...input };
|
|
30
|
+
}
|
|
31
|
+
export async function customFetch(url, init) {
|
|
32
|
+
if (!config.baseUrl) {
|
|
33
|
+
throw new Error('Mackinac baseUrl is not configured. Call configureMackinac() first.');
|
|
34
|
+
}
|
|
35
|
+
const fullUrl = url.startsWith('http')
|
|
36
|
+
? url
|
|
37
|
+
: `${config.baseUrl.replace(/\/$/, '')}/${url.replace(/^\//, '')}`;
|
|
38
|
+
// Get headers from provider if configured
|
|
39
|
+
let providerHeaders = {};
|
|
40
|
+
if (config.headersProvider) {
|
|
41
|
+
try {
|
|
42
|
+
providerHeaders = await config.headersProvider();
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
46
|
+
throw new Error(`Headers provider failed: ${message}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Merge headers: default < provider < request options (call-site overrides take precedence)
|
|
50
|
+
const headers = {
|
|
51
|
+
'Content-Type': 'application/json',
|
|
52
|
+
...providerHeaders,
|
|
53
|
+
...normalizeHeaders(init?.headers),
|
|
54
|
+
};
|
|
55
|
+
const res = await fetch(fullUrl, {
|
|
56
|
+
...init,
|
|
57
|
+
headers,
|
|
58
|
+
});
|
|
59
|
+
if (!res.ok) {
|
|
60
|
+
const text = await res.text().catch(() => '');
|
|
61
|
+
throw new Error(`Mackinac ${res.status}: ${text || res.statusText}`);
|
|
62
|
+
}
|
|
63
|
+
if (res.status === 204) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
return (await res.json());
|
|
67
|
+
}
|