openapi: 3.2.0 info: title: Kelowna Production myCC - Mix Designs API version: v1 tags: - name: myCC - Mix Designs paths: /Accounts/{accountId}/MixDesigns/BaselineMixes: get: tags: - myCC - Mix Designs summary: Gets a list of baseline mixes description: Mostly for use in dropdowns. Is sorted by mix code. parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: plantId in: query description: The ID of the plant to get mixes for schema: type: integer format: int32 - name: projectMixDesignId in: query description: ID of CO2 mix that baselines must be included for, regardless of plant or cement content. schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: type: array items: $ref: '#/components/schemas/SimpleMixArgs' application/json: schema: type: array items: $ref: '#/components/schemas/SimpleMixArgs' text/json: schema: type: array items: $ref: '#/components/schemas/SimpleMixArgs' security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsBaselineMixes x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/ProjectMixes: get: tags: - myCC - Mix Designs summary: Gets a list of project mixes parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: plantId in: query description: The ID of the plant to get mixes for schema: type: integer format: int32 - name: baselineMixDesignId in: query description: ID of non-CO2 mix that project mixes must be included for, regardless of plant or cement content. schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: type: array items: $ref: '#/components/schemas/SimpleMixArgs' application/json: schema: type: array items: $ref: '#/components/schemas/SimpleMixArgs' text/json: schema: type: array items: $ref: '#/components/schemas/SimpleMixArgs' security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsProjectMixes x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/Mixes: get: tags: - myCC - Mix Designs summary: Gets list of all mixes associated with a plant or MyCC account description: Mostly for use in dropdowns. Is sorted by mix code. parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: plantId in: query description: The ID of the plant to get mixes for schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: type: array items: $ref: '#/components/schemas/SimpleMixArgs' application/json: schema: type: array items: $ref: '#/components/schemas/SimpleMixArgs' text/json: schema: type: array items: $ref: '#/components/schemas/SimpleMixArgs' security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsMixes x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/QcMixCodes: get: tags: - myCC - Mix Designs summary: Gets a list of unique mix codes at the corporation level. description: Without a search key, an empty list is returned parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: searchKey in: query description: Search key for mix codes schema: type: string responses: '200': description: OK content: text/plain: schema: type: array items: type: string application/json: schema: type: array items: type: string text/json: schema: type: array items: type: string security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsQcMixCodes x-operation-id-source: derived /Accounts/{accountId}/MixDesigns: get: tags: - myCC - Mix Designs summary: Gets a table of a the mix designs parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: Limit in: query description: Limit number of responses. Used for pagination. schema: type: integer format: int32 - name: Offset in: query description: Skip this many rows in the query. Used for pagination. schema: type: integer format: int32 - name: SortColumn in: query description: The name of the column to sort by. schema: type: string - name: SortOrder in: query description: The order with which to sort the table by the sort column. schema: $ref: '#/components/schemas/SortOrder' - name: includeBaselineMixes in: query description: Whether to include baseline mix designs in the results schema: type: boolean default: true - name: includeProjectMixes in: query description: Whether to include CO2 mix designs in the results schema: type: boolean default: true - name: searchKey in: query description: Get only mix designs that contain this string somewhere schema: type: string - name: groupName in: query description: Get only mix designs from this group of lanes schema: type: string - name: getUserMixes in: query description: Whether to get user mix designs or system ones schema: type: boolean default: false responses: '200': description: OK content: text/plain: schema: $ref: '#/components/schemas/MixDesignsTableTableResults' application/json: schema: $ref: '#/components/schemas/MixDesignsTableTableResults' text/json: schema: $ref: '#/components/schemas/MixDesignsTableTableResults' security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesigns x-operation-id-source: derived post: tags: - myCC - Mix Designs summary: Adds a new user mix design parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 requestBody: description: The details of the mix design content: application/json: schema: $ref: '#/components/schemas/MixDesignArgs' text/json: schema: $ref: '#/components/schemas/MixDesignArgs' application/*+json: schema: $ref: '#/components/schemas/MixDesignArgs' responses: '200': description: OK security: - {} - MyCCAuth: - applicationId - roles - {} operationId: postAccountsByAccountIdMixDesigns x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/{mixDesignId}: get: tags: - myCC - Mix Designs summary: Gets a single mix design parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: mixDesignId in: path description: The ID of the mix design to get required: true schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: $ref: '#/components/schemas/MixDesignsTable' application/json: schema: $ref: '#/components/schemas/MixDesignsTable' text/json: schema: $ref: '#/components/schemas/MixDesignsTable' security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsByMixDesignId x-operation-id-source: derived post: tags: - myCC - Mix Designs summary: Modifies an existing user mix design parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: mixDesignId in: path description: The ID of the mix design to modify required: true schema: type: integer format: int32 requestBody: description: The details of the mix design content: application/json: schema: $ref: '#/components/schemas/MixDesignArgs' text/json: schema: $ref: '#/components/schemas/MixDesignArgs' application/*+json: schema: $ref: '#/components/schemas/MixDesignArgs' responses: '200': description: OK security: - {} - MyCCAuth: - applicationId - roles - {} operationId: postAccountsByAccountIdMixDesignsByMixDesignId x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/NoBaseline: get: tags: - myCC - Mix Designs summary: Gets project mixes without a baseline parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: limit in: query description: The number of mixes to return schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: $ref: '#/components/schemas/SimpleMixArgsQueryModelTableResults' application/json: schema: $ref: '#/components/schemas/SimpleMixArgsQueryModelTableResults' text/json: schema: $ref: '#/components/schemas/SimpleMixArgsQueryModelTableResults' security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsNoBaseline x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/NoDesignStrength: get: tags: - myCC - Mix Designs summary: Gets project mixes without a compressive strength parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: limit in: query description: The number of mixes to return schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: $ref: '#/components/schemas/SimpleMixArgsTableResults' application/json: schema: $ref: '#/components/schemas/SimpleMixArgsTableResults' text/json: schema: $ref: '#/components/schemas/SimpleMixArgsTableResults' security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsNoDesignStrength x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/Commissioning: get: tags: - myCC - Mix Designs summary: Gets details of mix design testing from commissioning parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: limit in: query description: The max number of mix designs to return (so swagger doesn't crash) schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: type: array items: $ref: '#/components/schemas/CommissioningMixDesignArgs' application/json: schema: type: array items: $ref: '#/components/schemas/CommissioningMixDesignArgs' text/json: schema: type: array items: $ref: '#/components/schemas/CommissioningMixDesignArgs' security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsCommissioning x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/ActionItems: get: tags: - myCC - Mix Designs summary: Gets mix design action items description: 'There are currently two types of actions: Shift (add CO2 to a non-CarbonCure mix design) and Optimize (reduce cement from a CarbonCure mix design)' parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: plantId in: query description: Get action items only for this plant schema: type: integer format: int32 - name: highRisk in: query description: "Whether to be risky when calculating required strength (10% risk of strength\n in the failure zone vs 1%)" schema: type: boolean default: true - name: limit in: query description: The max number of action items to return (for pagination) schema: type: integer format: int32 - name: offset in: query description: The number of action items to skip (for pagination) schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: type: array items: $ref: '#/components/schemas/MixDesignActionItem' application/json: schema: type: array items: $ref: '#/components/schemas/MixDesignActionItem' text/json: schema: type: array items: $ref: '#/components/schemas/MixDesignActionItem' security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsActionItems x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/{mixDesignId}/ActionItems: get: tags: - myCC - Mix Designs summary: Gets action item for a specific mix design description: 'This is meant for use on the production page for linkage to the mix optimization module. For that reason, this endpoint ONLY SUPPORTS SHIFT ACTION ITEMS! Meaning, it will never return an action item for a CO2 mix design.' parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: mixDesignId in: path description: The ID of the mix design to get the action item for required: true schema: type: integer format: int32 - name: highRisk in: query description: "Whether to be risky when calculating required strength (10% risk of strength\n in the failure zone vs 1%)" schema: type: boolean default: true responses: '200': description: OK security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsByMixDesignIdActionItems x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/{mixDesignId}/ActionItems/Accept: post: tags: - myCC - Mix Designs summary: Accepts the change proposed by a mix design action item parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: mixDesignId in: path description: The ID of the mix design whose action item we want to accept required: true schema: type: integer format: int32 - name: newMixCode in: query description: The new mix code for the changed mix design, if applicable schema: type: string - name: highRisk in: query description: "Whether to be risky when calculating required strength (10% risk of strength\n in the failure zone vs 1%)" schema: type: boolean default: true responses: '200': description: OK security: - {} - MyCCAuth: - applicationId - roles - {} operationId: postAccountsByAccountIdMixDesignsByMixDesignIdActionItemsAccept x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/{mixDesignId}/ActionItems/Dismiss: post: tags: - myCC - Mix Designs summary: Dismisses a mix design action item so it doesn't appear for a month parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 - name: mixDesignId in: path description: The ID of the mix design whose action item we want to dismiss required: true schema: type: integer format: int32 - name: reason in: query description: The reason for dismissing the action item schema: type: string responses: '200': description: OK security: - {} - MyCCAuth: - applicationId - roles - {} operationId: postAccountsByAccountIdMixDesignsByMixDesignIdActionItemsDismiss x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/Sandbox: post: tags: - myCC - Mix Designs summary: Makes suggestions based on inputted mix design parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 requestBody: description: The details of the mix design content: application/json: schema: $ref: '#/components/schemas/MixDesignArgs' text/json: schema: $ref: '#/components/schemas/MixDesignArgs' application/*+json: schema: $ref: '#/components/schemas/MixDesignArgs' responses: '200': description: OK security: - {} - MyCCAuth: - applicationId - roles - {} operationId: postAccountsByAccountIdMixDesignsSandbox x-operation-id-source: derived /Accounts/{accountId}/MixDesigns/PlantNames: get: tags: - myCC - Mix Designs summary: Gets a list of installed plant names + IDs description: For use in dropdowns. Is sorted by name. parameters: - name: accountId in: path description: The ID of the myCC account required: true schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: type: array items: $ref: '#/components/schemas/PlantDropdown' application/json: schema: type: array items: $ref: '#/components/schemas/PlantDropdown' text/json: schema: type: array items: $ref: '#/components/schemas/PlantDropdown' security: - {} - MyCCAuth: - applicationId - roles - {} operationId: getAccountsByAccountIdMixDesignsPlantNames x-operation-id-source: derived components: schemas: CommissioningTestDetailArgs: type: object properties: intervalDays: type: integer format: int32 cO2DosagePercent: type: number format: double cementReductionPercent: type: number format: double averageStrengthMPa: type: number format: double additionalProperties: false MixDesignActionItem: type: object properties: mixDesignId: type: - integer - 'null' format: int32 mixCode: type: - string - 'null' plantId: type: integer format: int32 isCO2Design: type: boolean compressiveStrengthMPa: type: - number - 'null' format: double compressiveStrengthDays: type: - integer - 'null' format: int32 originalWaterCementRatio: type: - number - 'null' format: double originalAirContentPercentageMin: type: - number - 'null' format: double originalAirContentPercentageMax: type: - number - 'null' format: double originalYieldUnitless: type: - number - 'null' format: double optimizedWaterCementRatio: type: - number - 'null' format: double optimizedAirContentPercentageMin: type: - number - 'null' format: double optimizedAirContentPercentageMax: type: - number - 'null' format: double optimizedYieldUnitless: type: - number - 'null' format: double ingredients: type: - array - 'null' items: $ref: '#/components/schemas/MixDesignIngredientArgs' type: $ref: '#/components/schemas/MixDesignActionItemType' originalCostUsdPerM3: type: - number - 'null' format: double savingsLocalCurrencyPerM3: type: - number - 'null' format: double currency: type: - string - 'null' originalGwpKgCO2EqPerM3: type: - number - 'null' format: double gwpSavingsKgCO2EqPerM3: type: - number - 'null' format: double averageStrengthMPa: type: - number - 'null' format: double requiredStrengthMPa: type: - number - 'null' format: double strengthStandardDeviation: type: - number - 'null' format: double overDesign: type: - number - 'null' format: double optimizedStrengthMPa: type: - number - 'null' format: double samples: type: - array - 'null' items: $ref: '#/components/schemas/TestSampleArgs' additionalProperties: false SimpleMixArgsQueryModel: type: object properties: mixDesignId: type: integer format: int32 mixCode: type: - string - 'null' plantId: type: integer format: int32 plantName: type: - string - 'null' additionalProperties: false MixIngredient: type: object properties: materialName: type: - string - 'null' materialType: $ref: '#/components/schemas/MaterialType' amount: type: number format: double unit: $ref: '#/components/schemas/MixUnit' specificGravity: type: - number - 'null' format: double additionalProperties: false MixDesignsTable: type: object properties: mixDesignId: type: integer format: int32 mixCode: type: - string - 'null' baselineMixCode: type: - string - 'null' baselineMixDesignId: type: - integer - 'null' format: int32 plantId: type: - integer - 'null' format: int32 divisionId: type: integer format: int32 plantName: type: - string - 'null' isCO2Design: type: boolean isUserCreated: type: boolean designStrengthMpa: type: - number - 'null' format: double designIntervalDays: type: - integer - 'null' format: int32 cementitiousContentKg: type: - number - 'null' format: double scmPercentage: type: - number - 'null' format: double waterCementRatio: type: - number - 'null' format: double airContentPercentageMin: type: - number - 'null' format: double airContentPercentageMax: type: - number - 'null' format: double slumpMmMin: type: - number - 'null' format: double slumpMmMax: type: - number - 'null' format: double description: type: - string - 'null' ingredients: type: - array - 'null' items: $ref: '#/components/schemas/MixIngredient' additionalProperties: false MixUnit: enum: - KgPerM3 - LitrePerM3 - PercentOfCementitious - PackagePerM3 type: string MixDesignActionItemType: enum: - Optimize - Shift type: string SimpleMixArgsTableResults: type: object properties: count: type: integer format: int32 results: type: - array - 'null' items: $ref: '#/components/schemas/SimpleMixArgs' additionalProperties: false PlantDropdown: type: object properties: plantId: type: integer format: int32 name: type: - string - 'null' additionalProperties: false CommissioningMixDesignArgs: type: object properties: mixDesignId: type: - integer - 'null' format: int32 mixCode: type: - string - 'null' plantId: type: integer format: int32 isCO2Design: type: boolean compressiveStrengthMPa: type: - number - 'null' format: double compressiveStrengthDays: type: - integer - 'null' format: int32 originalWaterCementRatio: type: - number - 'null' format: double originalAirContentPercentageMin: type: - number - 'null' format: double originalAirContentPercentageMax: type: - number - 'null' format: double originalYieldUnitless: type: - number - 'null' format: double optimizedWaterCementRatio: type: - number - 'null' format: double optimizedAirContentPercentageMin: type: - number - 'null' format: double optimizedAirContentPercentageMax: type: - number - 'null' format: double optimizedYieldUnitless: type: - number - 'null' format: double ingredients: type: - array - 'null' items: $ref: '#/components/schemas/MixDesignIngredientArgs' testDetails: type: - array - 'null' items: $ref: '#/components/schemas/CommissioningTestDetailArgs' additionalProperties: false TestSampleArgs: type: object properties: intervalDays: type: number format: double compressiveStrengthMPa: type: number format: double additionalProperties: false MixDesignsTableTableResults: type: object properties: count: type: integer format: int32 results: type: - array - 'null' items: $ref: '#/components/schemas/MixDesignsTable' additionalProperties: false SimpleMixArgs: type: object properties: mixDesignId: type: integer format: int32 mixCode: type: - string - 'null' plantId: type: integer format: int32 plantName: type: - string - 'null' additionalProperties: false MixDesignArgs: type: object properties: mixDesignId: type: - integer - 'null' format: int32 mixCode: type: - string - 'null' plantId: type: integer format: int32 isCO2Design: type: boolean baselineMixDesignId: type: - integer - 'null' format: int32 projectMixIds: type: - array - 'null' items: type: integer format: int32 description: type: - string - 'null' compressiveStrengthMPa: type: - number - 'null' format: double compressiveStrengthDays: type: - integer - 'null' format: int32 waterCementRatio: type: - number - 'null' format: double airContentPercentageMin: type: - number - 'null' format: double airContentPercentageMax: type: - number - 'null' format: double slumpMmMin: type: - number - 'null' format: double slumpMmMax: type: - number - 'null' format: double ingredients: type: - array - 'null' items: $ref: '#/components/schemas/MixIngredientArgs' additionalProperties: false MixIngredientArgs: type: object properties: materialName: type: - string - 'null' materialType: $ref: '#/components/schemas/MaterialType' amount: type: number format: double unit: $ref: '#/components/schemas/MixUnit' specificGravity: type: - number - 'null' format: double additionalProperties: false MixDesignIngredientArgs: type: object properties: materialName: type: - string - 'null' materialType: $ref: '#/components/schemas/MaterialType' originalWeight: type: - number - 'null' format: double originalVolumeUnitless: type: - number - 'null' format: double optimizedWeight: type: - number - 'null' format: double optimizedVolumeUnitless: type: - number - 'null' format: double weightUnit: $ref: '#/components/schemas/MixUnit' additionalProperties: false SimpleMixArgsQueryModelTableResults: type: object properties: count: type: integer format: int32 results: type: - array - 'null' items: $ref: '#/components/schemas/SimpleMixArgsQueryModel' additionalProperties: false MaterialType: enum: - Cement - CementTypeI - CementTypeIS - CementTypeIP - CementTypeIL - CementTypeII - CementTypeI_II - CementTypeI_IIMH - CementTypeI_II_LA - CementTypeIII - CementTypeIV - CementTypeII_V - CementTypeN - CementTypeS - CementCemI - CementCemII - CementCemIII - CementCemIV - CementCemV - CementCemVI - CementBlendedHydraulic - CoarseAggregate - IntermediateAggregate - FineAggregate - Fiber - FiberTypeI - FiberTypeII - FiberTypeIII - FiberTypeIV - Water - CO2 - SCM - Slag - SlagFerrous - SlagNonFerrous - SlagFerroalloy - FlyAsh - FlyAshC - FlyAshF - FlyAshN - SilicaFume - ReclaimedWater - Admixture - AirEntrainer - Retarder - SuperPlasticizer - WaterReducer - HighRangeWaterReducer - MidRangeWaterReducer - LowRangeWaterReducer - ViscosityModifier - HydrationStabilizer - CorrosionInhibitor - ShrinkageReducer - Accelerator - NonChlorideAccelerator - ChlorideAccelerator - StrengthEnhancer - AntiWashout - Waterproofer - Filler type: string SortOrder: enum: - Ascending - Descending type: string securitySchemes: OrcaAuth: type: oauth2 flows: authorizationCode: authorizationUrl: https://auth.carboncure.com/oauth2/authorize tokenUrl: https://auth.carboncure.com/oauth2/token scopes: {} MyCCAuth: type: oauth2 flows: authorizationCode: authorizationUrl: https://auth.carboncure.com/oauth2/authorize tokenUrl: https://auth.carboncure.com/oauth2/token scopes: {} M2MAuth: type: oauth2 flows: authorizationCode: authorizationUrl: https://auth.carboncure.com/oauth2/authorize tokenUrl: https://auth.carboncure.com/oauth2/token scopes: {}