Isometric Stripe API

The Stripe API from Isometric — 2 operation(s) for stripe.

OpenAPI Specification

isometric-stripe-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  description: "# Standards\n\n## Versioning\n\nThis API will be safely versioned using root path versioning, in the format `/v{major}`. For example, `/registry/v0/supplier`.\n\n### Compatibility\n\nWe 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.\nWe may deprecate APIs that have been replaced by a newer version. When doing so, we will expect\nintegrated partners to manage a transition to new resources within the deprecation timeline of old ones.\n\nWe will make the following sort of changes we do not consider to be breaking:\n\n- Adding new endpoints\n- Adding optional query parameters to API endpoints\n- Adding new properties to existing API responses\n- Reordering properties in existing API responses\n\nIt is important that clients are built to be robust to these changes.\n\n## Pagination\n\nOur API is based on the [Relay](https://relay.dev/docs/tutorial/connections-pagination/) pagination spec. Paginated endpoints\nwill return a `PaginatedListResource` which contains:\n\n- `page_info` - Containing information regarding pagination cursors and the total number of entities.\n- `nodes` - Each node is a paginated entity.\n- `total_count` - The total size of the list across all pages.\n\n### Pagination Parameters\n\nPaginated endpoints also accepted a standard set of query parameters:\n\n- `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.\n- `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.\n- `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.\n- `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.\n\nFor example, querying `/registry/v0/beneficiaries` will return a `PaginatedListResource` of the first page of 10 items:\n\n```json\n{\n    \"page_info\": {\n        \"has_previous_page\": false,\n        \"start_cursor\": ...,\n        \"has_next_page\": true,\n        \"end_cursor\": \"mpG5kcuoFBYtlH\",\n    },\n    \"nodes\": [{\n        \"id\": \"org_12345iso678\",\n        \"name\": \"My Org\",\n        ...\n    }],\n    \"total_count\": 100\n}\n```\n\nThen querying `/registry/v0/beneficiaries?first=15&after=mpG5kcuoFBYtlH` will return a `PaginatedListResource` of the next 15 items.\n\n## Dates\n\nDatetime 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`.\n\n## Country Codes\n\nCountries 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`.\n# Authentication\n\nMost API requests will need to authenticate against the Isometric API in two ways simultaneously:\n\n- By passing a **client secret** in the `X-Client-Secret` header to identify the system integrating with the API.\n- By passing an **access token** in the `Authorization` header to authenticate as a specific organization, in order to gain access to its private data.\n\n### Client Authentication\n\nEvery API call to Isometric must include a **client secret** identifying the client application.\n\nThis client secret is tied to a particular environment - sandbox or production.\n\nThe client secret should be submitted on every API request via the `X-Client-Secret` header. For example `X-Client-Secret: uPrO...wxAh`.\n\n### Organization Authentication\n\nIn 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.\n\nTo authenticate as an Organization you will need to submit a JWT bearer access token via the `Authorization` header. For example: `Authorization: Bearer eyJh...sw5c`.\nIf 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.\nAccess tokens should be treated as highly sensitive, kept secret and stored accordingly.\n\nAccess 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.\n\n### Managing Credentials\n\nCredentials 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.\n\nBoth client secrets and access tokens can be created and invalidated through UI.\nClient secrets do not expire and do not need to be rotated.\nIf either secret becomes compromised, it should be invalidated through the UI.\n# Key Certify Concepts\n\nThis 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).\n\n## Resource visibility\n\n- Until resources are submitted as part of a GHG statement, they are visible only to members of your organization.\n- After statement submission, they are visible to the verifier assigned to the GHG statement.\n- Once credits have been issued, removals are added to the [public registry](https://registry.isometric.com), and associated resources are visible publicly, with the exception of source documents.\n- 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.\n\n## Resources\n\nThe main resources used in Certify are sources, datapoints, components and removals.\n\n### Sources\n\n- Sources represent a piece of evidence for a particular datapoint used in carbon accounting calculations.\n- Source documents are private, and only shared with the verifier assigned to a related removal.\n- Other information associated with a source, such as its display name, is visible publicly once the removal is on the public registry.\n- Verifiers are not notified when new sources are added to datapoints in a submitted removal, 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.\n\n### Datapoints\n\n- Datapoints represent any value used in carbon accounting calculations.\n- When creating datapoints, sources should be referenced to provide evidence for the value used.\n- A standard deviation should be provided if the datapoint is to be included in the variance propagation method of uncertainty analysis.\n- All datapoints are considered statistically independent for the purpose of variance propagation, although if a datapoint is used twice within a removal calculation, this dependence is captured.\n\n### Components\n\n- Components represent physical activities whose CO₂e flux needs to be accounted for.\n- 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.\n- 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.\n- 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).\n\n### Removals\n\n- Removals represent a series of activities that result in CO₂e being removed from the atmosphere.\n- The carbon accounting of a removal typically contains sequestrations, counterfactuals and activities (emissions).\n- Removals are structured using a template, [defined in your LCA](/user-guides/certify/lca).\n- Templates are divided into component groups. For instance, a biochar template may contain a `Feedstock sourcing` group.\n- Groups can contain multiple components.\n- Components can also be partially attributed to removals, if the activity the component represents contributed to multiple removals.\n- The final uncertainty discounting is done on the removal level - the API will return the CO₂e removed with and without discounting.\n- See the [Create a removal](/user-guides/certify/removal) guide for more details.\n\n### Feedstock types\n\n- Many carbon removal methods involve a feedstock, for instance biomass feedstock in BiCRS or silicate rock in enhanced weathering.\n- Feedstock types are used to describe the feedstock used in a removal.\n- When creating a removal, a feedstock type can be optionally specified so that Isometric and verifiers can see which removals use which feedstocks.\n- This is important if different feedstocks are used in a single GHG statement.\n- See the [Add feedstock](/user-guides/certify/add-feedstock) guide for more details.\n"
  title: Isometric Certify Data Ingestion Beneficiaries Stripe 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
tags:
- name: Stripe
paths:
  /stripe/checkout:
    post:
      description: 'Create a Stripe Checkout Session for purchasing credits with Isometric verification.

        This endpoint returns a Stripe Checkout URL to redirect the user to for completing the payment.'
      operationId: create_stripe_checkout_session_stripe_checkout_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/CreateStripeCheckoutSessionRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StripeCheckoutResponse'
          description: Successful Response
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      security:
      - HTTPBearer: []
      summary: Create Stripe Checkout Session
      tags:
      - Stripe
  /stripe/configuration:
    get:
      description: 'Get Stripe configuration for the current organisation.

        This will return 404 if the current organisation is not set up for Stripe Connect.'
      operationId: get_stripe_configuration_stripe_configuration_get
      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
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupplierStripeConfiguration'
          description: Successful Response
        '404':
          description: Supplier not set up for Stripe Connect
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      security:
      - HTTPBearer: []
      summary: Get Stripe Configuration
      tags:
      - Stripe
components:
  schemas:
    CreateStripeCheckoutSessionRequest:
      properties:
        cancel_url:
          description: The URL to redirect customer to after a cancelled or failed payment
          examples:
          - https://example.com/cancel
          title: Cancel Url
          type: string
        customer_email:
          anyOf:
          - type: string
          - type: 'null'
          description: The email of the customer to prefill the checkout session with. If not provided, the customer will be prompted to enter their email during checkout.
          examples:
          - test@example.com
          title: Customer Email
        frequency:
          $ref: '#/components/schemas/StripeSubscriptionFrequency'
          description: The frequency of the subscription
          examples:
          - monthly
        isometric_terms_and_conditions_accepted:
          description: Whether the user has accepted the Isometric terms and conditions; the request will fail if this is not set to true
          examples:
          - true
          title: Isometric Terms And Conditions Accepted
          type: boolean
        quantity_kg:
          description: The quantity of credits to purchase, in kilograms. This field can handle bigint values.
          examples:
          - 1000
          title: Quantity Kg
          type: integer
        success_url:
          description: The URL to redirect customer to after a successful payment
          examples:
          - https://example.com/success
          title: Success Url
          type: string
        supplier_terms_and_conditions_accepted:
          description: Whether the user has accepted the supplier terms and conditions; the request will fail if this is not set to true
          examples:
          - true
          title: Supplier Terms And Conditions Accepted
          type: boolean
      required:
      - quantity_kg
      - frequency
      - isometric_terms_and_conditions_accepted
      - supplier_terms_and_conditions_accepted
      - success_url
      - cancel_url
      title: CreateStripeCheckoutSessionRequest
      type: object
    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
    StripeCheckoutResponse:
      properties:
        redirect_url:
          title: Redirect Url
          type: string
      required:
      - redirect_url
      title: StripeCheckoutResponse
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    StripeSubscriptionFrequency:
      enum:
      - one_time
      - monthly
      - yearly
      title: StripeSubscriptionFrequency
      type: string
    SupplierStripeConfiguration:
      properties:
        account_id:
          description: Stripe account ID of the supplier's connected account
          title: Account Id
          type: string
        credit_product_price_per_tonne:
          anyOf:
          - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            type: string
          - type: 'null'
          description: Price per tonne for carbon dioxide removal; set by the supplier. See `currency` field for the currency.
          title: Credit Product Price Per Tonne
        currency:
          anyOf:
          - type: string
          - type: 'null'
          description: Currency used for this account (ISO 4217 code)
          title: Currency
        id:
          example: ssc_1EFF4PWKE1S0TF1S
          examples:
          - ssc_1EFF4PWKE1S0TF1S
          - ssc_1FH1888QSSBXWB18
          maxLength: 37
          minLength: 20
          title: Id
          type: string
        isometric_terms_and_conditions_url:
          description: URL to the Isometric terms and conditions
          title: Isometric Terms And Conditions Url
          type: string
        verification_product_price_per_tonne:
          anyOf:
          - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            type: string
          - type: 'null'
          description: Price per tonne for verification; set by Isometric. See `currency` field for the currency.
          title: Verification Product Price Per Tonne
      required:
      - id
      - account_id
      - credit_product_price_per_tonne
      - verification_product_price_per_tonne
      - currency
      - isometric_terms_and_conditions_url
      title: SupplierStripeConfiguration
      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