> ## Documentation Index
> Fetch the complete documentation index at: https://docs.isometric.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Post Project Component

> Creates a component that will be automatically attributed to GHG statements in the project based on the provided allocation strategy.



## OpenAPI

````yaml post /project_components
openapi: 3.1.0
info:
  description: >
    # Standards


    ## Versioning


    This API will be safely versioned using root path versioning, in the format
    `/v{major}`. For example, `/registry/v0/supplier`.


    ### Compatibility


    We won't make breaking changes to existing API services or endpoints for API
    versions higher than `v0`. If breaking changes are necessary, we'll release
    a new major version.

    We may deprecate APIs that have been replaced by a newer version. When doing
    so, we will expect

    integrated partners to manage a transition to new resources within the
    deprecation timeline of old ones.


    We will make the following sort of changes we do not consider to be
    breaking:


    - Adding new endpoints

    - Adding optional query parameters to API endpoints

    - Adding new properties to existing API responses

    - Reordering properties in existing API responses


    It is important that clients are built to be robust to these changes.


    ## Pagination


    Our API is based on the
    [Relay](https://relay.dev/docs/tutorial/connections-pagination/) pagination
    spec. Paginated endpoints

    will return a `PaginatedListResource` which contains:


    - `page_info` - Containing information regarding pagination cursors and the
    total number of entities.

    - `nodes` - Each node is a paginated entity.

    - `total_count` - The total size of the list across all pages.


    ### Pagination Parameters


    Paginated endpoints also accepted a standard set of query parameters:


    - `last` - An integer number of items to retrieve **before** the item
    represented by the cursor passed in the `before` parameter. Defaults to 10
    with a maximum value of 50.

    - `before` - An opaque cursor representing the first item in the previously
    requested page to select items ordered before it. Submit the previously
    requested page's `start_cursor` here when paginated backwards.

    - `first` - An integer number of items to retrieve **after** the item
    represented by the cursor passed in the `after` parameter. Defaults to 10
    with a maximum value of 50.

    - `after` - An opaque cursor representing the last item in the previously
    requested page to select items ordered after it. Submit the previously
    requested page's `end_cursor` here when paginated forwards.


    For example, querying `/registry/v0/beneficiaries` will return a
    `PaginatedListResource` of the first page of 10 items:


    ```json

    {
        "page_info": {
            "has_previous_page": false,
            "start_cursor": ...,
            "has_next_page": true,
            "end_cursor": "mpG5kcuoFBYtlH",
        },
        "nodes": [{
            "id": "org_12345iso678",
            "name": "My Org",
            ...
        }],
        "total_count": 100
    }

    ```


    Then querying `/registry/v0/beneficiaries?first=15&after=mpG5kcuoFBYtlH`
    will return a `PaginatedListResource` of the next 15 items.


    ## Dates


    Datetime fields in the APIs conform to the [ISO
    8601](https://en.wikipedia.org/wiki/ISO_8601) date and time format in UTC.
    For example: `2024-01-22T11:56:48.520641Z`.


    ## Country Codes


    Countries are identified in the APIs via [ISO 3166-1
    Alpha-3](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) codes. For
    example: `GBR` and `USA`.

    # Authentication


    Most API requests will need to authenticate against the Isometric API in two
    ways simultaneously:


    - By passing a **client secret** in the `X-Client-Secret` header to identify
    the system integrating with the API.

    - By passing an **access token** in the `Authorization` header to
    authenticate as a specific organization, in order to gain access to its
    private data.


    ### Client Authentication


    Every API call to Isometric must include a **client secret** identifying the
    client application.


    This client secret is tied to a particular environment - sandbox or
    production.


    The client secret should be submitted on every API request via the
    `X-Client-Secret` header. For example `X-Client-Secret: uPrO...wxAh`.


    ### Organization Authentication


    In addition, a large number of API requests will require an **access token**
    in order for the caller to identify themselves and act as a specific
    Organization.


    To authenticate as an Organization you will need to submit a JWT bearer
    access token via the `Authorization` header. For example: `Authorization:
    Bearer eyJh...sw5c`.

    If you are going to be acting on behalf of other Organizations, they will
    need to generate the access token and pass it securely to you.

    Access tokens should be treated as highly sensitive, kept secret and stored
    accordingly.


    Access tokens are scoped to a single Organization - so if you are acting on
    behalf of multiple particular organizations, you will need to submit the
    appropriate access token on each request.


    ### Managing Credentials


    Credentials can be managed through Certify UI in the [Team
    settings](https://registry.isometric.com/account/team-settings) section.
    Access tokens will expire after 1 year from generation. When you are
    approaching expiry, a new token will need to be generated.


    Both client secrets and access tokens can be created and invalidated through
    UI.

    Client secrets do not expire and do not need to be rotated.

    If either secret becomes compromised, it should be invalidated through the
    UI.

    # Key Certify Concepts


    This page defines concepts used in Certify, and the [Certify
    API](/api-reference/certify/certify-introduction), which are helpful to
    understand when submitting information for verification via Certify. For a
    broader understanding of Isometric's verification processes on the Isometric
    Registry, please refer to the [Isometric
    Standard](https://isometric.com/standard).


    ## Resource visibility


    - Until resources are submitted as part of a GHG statement, they are visible
    only to members of your organization.

    - After statement submission, they are visible to the verifier assigned to
    the GHG statement.

    - Once credits have been issued, GHG entries are added to the [public
    registry](https://registry.isometric.com), and associated resources are
    visible publicly, with the exception of source documents.

    - Sources uploaded in the Certify platform are kept private by default once
    published on the Isometric registry (file names will be displayed). Contact
    Isometric to update public source visibility. Sources [added via the
    API](/api-reference/certify/post-source) can be set `public` on submission.


    ## Resources


    The main resources used in Certify are sources, datapoints, components and
    GHG entries.


    ### Sources


    - Sources represent a piece of evidence for a particular datapoint used in
    carbon accounting calculations.

    - Source documents are private, and only shared with the verifier assigned
    to a related GHG entry.

    - Other information associated with a source, such as its display name, is
    visible publicly once the GHG entry is on the public registry.

    - Verifiers are not notified when new sources are added to datapoints in a
    submitted GHG entry, but they will immediately have access to the source
    documentation. Please notify the Isometric Registry Operations team when
    sources are added on a verifier's request so that we can ensure that the
    verifier is aware.


    ### Datapoints


    - Datapoints represent any value used in carbon accounting calculations.

    - When creating datapoints, sources should be referenced to provide evidence
    for the value used.

    - A standard deviation should be provided if the datapoint is to be included
    in the variance propagation method of uncertainty analysis.

    - All datapoints are considered statistically independent for the purpose of
    variance propagation, although if a datapoint is used twice within a GHG
    entry calculation, this dependence is captured.


    ### Components


    - Components represent physical activities whose CO₂e flux needs to be
    accounted for.

    - Components are created from [component
    blueprints](/user-guides/certify/component-blueprint-library) that contain
    sets of equations used to calculate a transfer of CO₂e into or out of the
    atmosphere.

    - A blueprint defines a set of inputs that are the datapoints to be used in
    the calculation. For instance, a transport emissions blueprints would ask
    for datapoints representing a distance, mass and carbon intensity.

    - When creating a component from a blueprint, the blueprint must be
    specified, as well as a list of datapoints for the expected blueprint
    inputs. Learn more about components in [Identifying
    Components](/user-guides/certify/identifying-components).


    ### GHG entries


    - GHG entries represent a series of activities that result in CO₂e being
    removed from the atmosphere or reduced relative to a baseline.

    - The carbon accounting of a GHG entry typically contains sequestrations,
    counterfactuals and activities (emissions).

    - GHG entries are structured using a template, [defined in your
    LCA](/user-guides/certify/lca).

    - Templates are divided into component groups. For instance, a biochar
    template may contain a `Feedstock sourcing` group.

    - Groups can contain multiple components.

    - Components can also be partially attributed to GHG entries, if the
    activity the component represents contributed to multiple GHG entries.

    - The final uncertainty discounting is done on the GHG entry level - the API
    will return the CO₂e removed with and without discounting.

    - See the [Create a GHG entry](/user-guides/certify/ghg-entry) guide for
    more details.


    ### Feedstock types


    - Many carbon removal methods involve a feedstock, for instance biomass
    feedstock in BiCRS or silicate rock in enhanced weathering.

    - Feedstock types are used to describe the feedstock used in a GHG entry.

    - When creating a GHG entry, a feedstock type can be optionally specified so
    that Isometric and verifiers can see which GHG entries use which feedstocks.

    - This is important if different feedstocks are used in a single GHG
    statement.

    - See the [Add feedstock](/user-guides/certify/add-feedstock) guide for more
    details.
  title: Isometric Certify Data Ingestion API
  version: v0
servers:
  - description: Sandbox Isometric MRV API
    url: https://api.sandbox.isometric.com/mrv/v0
  - description: Production Isometric MRV API
    url: https://api.isometric.com/mrv/v0
security: []
paths:
  /project_components:
    post:
      summary: Post Project Component
      description: >-
        Creates a component that will be automatically attributed to GHG
        statements in the project based on the provided allocation strategy.
      operationId: post_project_component_project_components_post
      parameters:
        - description: A secret token identifying the client connecting to the API
          in: header
          name: x-client-secret
          required: true
          schema:
            description: A secret token identifying the client connecting to the API
            examples:
              - Syou3EZiO5vuMEgNyBeA8cjEMYOnQDwP
            title: Client secret
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectComponentRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Component'
          description: Successful Response
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      security:
        - HTTPBearer: []
components:
  schemas:
    CreateProjectComponentRequest:
      properties:
        allocation_strategy:
          $ref: '#/components/schemas/ProjectComponentAmortizationStrategy'
          description: >-
            The strategy that the components emissions are distributed across
            GHG Statements.
        component_data:
          $ref: '#/components/schemas/CreateComponentRequest'
          description: Data required to create any component
      required:
        - allocation_strategy
        - component_data
      title: CreateProjectComponentRequest
      type: object
    Component:
      properties:
        activity_completed_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Activity Completed At
        activity_started_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Activity Started At
        allocation_strategy:
          anyOf:
            - $ref: '#/components/schemas/ProjectComponentAmortizationStrategy'
            - type: 'null'
          description: >-
            Attribution strategy, manages how project-scoped components are
            distributed across GHG statements; value will be Null if scope is
            not of scope project
        blueprint_key:
          title: Blueprint Key
          type: string
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        display_name:
          title: Display Name
          type: string
        ghg_entry_template_component_id:
          anyOf:
            - example: rtc_1DAA58EDM1S0AMPN
              examples:
                - rtc_1DAA58EDM1S0AMPN
                - rtc_1CQAKRCVQSBXKKTM
              maxLength: 37
              minLength: 20
              type: string
            - type: 'null'
          description: >-
            The ID of the GHG entry template component, if this component was
            created via a template. May be null if the component was created
            directly, or if the template has been deleted.
          title: Ghg Entry Template Component Id
        id:
          example: cmp_1EP2SB7MZ1S036PY
          examples:
            - cmp_1EP2SB7MZ1S036PY
            - cmp_1EHK4R6QJSBXFC5N
          maxLength: 37
          minLength: 20
          title: Id
          type: string
        inputs:
          description: >-
            A list of component inputs. The inputs can be either scalars or list
            inputs.
          items:
            oneOf:
              - $ref: '#/components/schemas/ComponentListInput'
              - $ref: '#/components/schemas/ComponentScalarInput'
          title: Inputs
          type: array
        removal_template_component_id:
          anyOf:
            - example: rtc_1DAA58EDM1S0AMPN
              examples:
                - rtc_1DAA58EDM1S0AMPN
                - rtc_1CQAKRCVQSBXKKTM
              maxLength: 37
              minLength: 20
              type: string
            - type: 'null'
          deprecated: true
          description: >-
            The ID of the removal template component, if this component was
            created via a template. May be null if the component was created
            directly, or if the template has been deleted.
          title: Removal Template Component Id
        scope:
          $ref: '#/components/schemas/ComponentScope'
        supplier_reference_id:
          anyOf:
            - description: >-
                A string that must be unique for all resources created by a
                specific supplier. It can be used by a client to identify the
                correct objects in their system.
              maxLength: 200
              minLength: 1
              type: string
            - type: 'null'
          title: Supplier Reference Id
        type:
          $ref: '#/components/schemas/ComponentType'
      required:
        - id
        - supplier_reference_id
        - type
        - scope
        - display_name
        - description
        - activity_completed_at
        - activity_started_at
        - blueprint_key
        - removal_template_component_id
        - ghg_entry_template_component_id
        - inputs
      title: Component
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    ProjectComponentAmortizationStrategy:
      description: >-
        Strategies which control how Project Emissions are automatically
        amortized and attributed to GHG Statement and GHG entries


        ESTIMATED_PROJECT_TONNAGE - Automatic amortization ensuring full
        amortization in proportion to the project's estimated gross removal.


        MANUAL - No automatic amortization. All GHG Statement and GHG entry
        attributions are performed manually.


        CUSTOM_TIME_PERIOD - Automatic amortization ensuring full amortization
        by a specified target date.


        ESTIMATED_PROJECT_LIFETIME - Automatic amortization ensuring full
        amortization over the project's estimated lifetime.
      enum:
        - ESTIMATED_PROJECT_TONNAGE
        - MANUAL
        - CUSTOM_TIME_PERIOD
        - ESTIMATED_PROJECT_LIFETIME
      title: ProjectComponentAmortizationStrategy
      type: string
    CreateComponentRequest:
      properties:
        activity_completed_at:
          description: >-
            The date at which the physical activity related to this component
            started
          format: date-time
          title: Activity Completed At
          type: string
        activity_started_at:
          description: >-
            The date by which the physical activity related to this component
            finished
          format: date-time
          title: Activity Started At
          type: string
        component_blueprint_key:
          description: The key of the blueprint which we are deriving this component from.
          title: Component Blueprint Key
          type: string
        description:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            An optional description that can be used to add more context to the
            component
          title: Description
        display_name:
          maxLength: 150
          minLength: 1
          title: Display Name
          type: string
        inputs:
          description: >-
            A list of component inputs. This must match the list of inputs on
            the component blueprint. See the component-blueprints endpoint.
          items:
            oneOf:
              - $ref: '#/components/schemas/CreateComponentListInput'
              - $ref: '#/components/schemas/CreateComponentScalarInput'
          title: Inputs
          type: array
        project_id:
          description: The project in which to create the component
          example: prj_1CTWZQGKE1S0VAXA
          examples:
            - prj_1CTWZQGKE1S0VAXA
            - prj_1E0QTWB22SBX34D1
          maxLength: 37
          minLength: 20
          title: Project Id
          type: string
        supplier_reference_id:
          description: >-
            A string that must be unique for all resources created by a specific
            supplier. It can be used by a client to identify the correct objects
            in their system.
          maxLength: 200
          minLength: 1
          title: Supplier Reference Id
          type: string
      required:
        - supplier_reference_id
        - project_id
        - component_blueprint_key
        - display_name
        - activity_completed_at
        - activity_started_at
        - inputs
      title: CreateComponentRequest
      type: object
    ComponentListInput:
      properties:
        __typename:
          const: ComponentListInput
          default: ComponentListInput
          description: >-
            Contains the name of the model (formally, OpenAPI Schema Object).
            Used to determine the type of data, for example when two different
            types are unioned.
          title: Type name
          type: string
        datapoint_ids:
          description: The Isometric ID of the datapoints assigned to this input
          items:
            example: dtp_1DVKHKS101S0Q61Q
            examples:
              - dtp_1DVKHKS101S0Q61Q
              - dtp_1DJN8P57VSBXASFX
            maxLength: 37
            minLength: 20
            type: string
          title: Datapoint Ids
          type: array
        input_key:
          description: An input key from the component blueprint.
          maxLength: 200
          minLength: 1
          title: Input Key
          type: string
      required:
        - input_key
        - datapoint_ids
      title: ComponentListInput
      type: object
    ComponentScalarInput:
      properties:
        __typename:
          const: ComponentScalarInput
          default: ComponentScalarInput
          description: >-
            Contains the name of the model (formally, OpenAPI Schema Object).
            Used to determine the type of data, for example when two different
            types are unioned.
          title: Type name
          type: string
        datapoint_id:
          description: The Isometric ID of the datapoint assigned to this input
          example: dtp_1DVKHKS101S0Q61Q
          examples:
            - dtp_1DVKHKS101S0Q61Q
            - dtp_1DJN8P57VSBXASFX
          maxLength: 37
          minLength: 20
          title: Datapoint Id
          type: string
        input_key:
          description: An input key from the component blueprint.
          maxLength: 200
          minLength: 1
          title: Input Key
          type: string
      required:
        - input_key
        - datapoint_id
      title: ComponentScalarInput
      type: object
    ComponentScope:
      enum:
        - REMOVAL
        - GHG_STATEMENT
        - PROJECT
        - NET_NEGATIVITY
      title: ComponentScope
      type: string
    ComponentType:
      enum:
        - ACTIVITY
        - REMOVAL_COUNTERFACTUAL
        - SEQUESTRATION
        - LOSS
        - ADJUSTMENT
        - UNCERTAINTY_DISCOUNT
      title: ComponentType
      type: string
    ValidationError:
      properties:
        ctx:
          title: Context
          type: object
        input:
          title: Input
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
    CreateComponentListInput:
      properties:
        __typename:
          const: CreateComponentListInput
          default: CreateComponentListInput
          description: >-
            Contains the name of the model (formally, OpenAPI Schema Object).
            Used to determine the type of data, for example when two different
            types are unioned.
          title: Type name
          type: string
        datapoint_ids:
          description: >-
            The Isometric IDs of the datapoints that will be used to populate
            the value of this input
          items:
            example: dtp_1DVKHKS101S0Q61Q
            examples:
              - dtp_1DVKHKS101S0Q61Q
              - dtp_1DJN8P57VSBXASFX
            maxLength: 37
            minLength: 20
            type: string
          title: Datapoint Ids
          type: array
        input_key:
          description: An input key from the component blueprint.
          maxLength: 200
          minLength: 1
          title: Input Key
          type: string
      required:
        - input_key
        - datapoint_ids
      title: CreateComponentListInput
      type: object
    CreateComponentScalarInput:
      properties:
        __typename:
          const: CreateComponentScalarInput
          default: CreateComponentScalarInput
          description: >-
            Contains the name of the model (formally, OpenAPI Schema Object).
            Used to determine the type of data, for example when two different
            types are unioned.
          title: Type name
          type: string
        datapoint_id:
          description: >-
            The Isometric ID of the datapoint that will be used to populate the
            value of this input
          example: dtp_1DVKHKS101S0Q61Q
          examples:
            - dtp_1DVKHKS101S0Q61Q
            - dtp_1DJN8P57VSBXASFX
          maxLength: 37
          minLength: 20
          title: Datapoint Id
          type: string
        input_key:
          description: An input key from the component blueprint.
          maxLength: 200
          minLength: 1
          title: Input Key
          type: string
      required:
        - input_key
        - datapoint_id
      title: CreateComponentScalarInput
      type: object
  securitySchemes:
    HTTPBearer:
      bearerFormat: JWT
      description: >-
        A JWT Bearer token header for authentication and authorization, in the
        format `Authorization: Bearer <token>`
      scheme: bearer
      type: http

````