> ## Documentation Index
> Fetch the complete documentation index at: https://conductorone-eu-instance.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Create

> Create funds a group. The group is an AppEntitlement, so membership
 resolves through that entitlement's bindings on every acquire rather than
 being captured here. Creating the tenant's first rule is what turns group
 resolution on for that tenant.



## OpenAPI

````yaml https://spec.speakeasy.com/conductor-one/conductorone/my-source-with-code-samples post /api/v1/funds/rules
openapi: 3.1.0
info:
  description: The C1 API is a HTTP API for managing C1 resources.
  title: C1 API
  version: 0.1.0-alpha
servers:
  - description: The C1 API server for the current tenant.
    url: https://{tenantDomain}.conductor.one
    variables:
      tenantDomain:
        default: example
        description: The domain of the tenant to use for this request.
security:
  - bearerAuth: []
    oauth: []
paths:
  /api/v1/funds/rules:
    post:
      tags:
        - Fund Rules
      summary: Create
      description: |-
        Create funds a group. The group is an AppEntitlement, so membership
         resolves through that entitlement's bindings on every acquire rather than
         being captured here. Creating the tenant's first rule is what turns group
         resolution on for that tenant.
      operationId: c1.api.funds.v1.FundRuleService.Create
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/c1.api.funds.v1.FundRuleServiceCreateRequest
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/c1.api.funds.v1.FundRuleServiceCreateResponse
          description: Successful response
components:
  schemas:
    c1.api.funds.v1.FundRuleServiceCreateRequest:
      description: The FundRuleServiceCreateRequest message.
      properties:
        displayName:
          description: The displayName field.
          type: string
        grant:
          oneOf:
            - $ref: '#/components/schemas/c1.models.funds.v1.SpendLimit'
            - type: 'null'
        groupRef:
          oneOf:
            - $ref: '#/components/schemas/c1.api.app.v1.AppEntitlementRef'
            - type: 'null'
        reason:
          description: The reason field.
          type: string
      title: Fund Rule Service Create Request
      type: object
      x-speakeasy-name-override: FundRuleServiceCreateRequest
    c1.api.funds.v1.FundRuleServiceCreateResponse:
      description: The FundRuleServiceCreateResponse message.
      properties:
        rule:
          oneOf:
            - $ref: '#/components/schemas/c1.api.funds.v1.FundRule'
            - type: 'null'
      title: Fund Rule Service Create Response
      type: object
      x-speakeasy-name-override: FundRuleServiceCreateResponse
    c1.models.funds.v1.SpendLimit:
      description: >
        SpendLimit is the three-way behavior fork. Which arms are legal depends
        on the
         scope carrying it; pkg/funds enforces that matrix, not the schema, because one
         SpendControls shape is shared by every scope.

        This message contains a oneof named kind. Only a single field of the
        following list may be set at a time:
          - unlimited
          - amount
          - blocked
      properties:
        amount:
          oneOf:
            - $ref: '#/components/schemas/c1.models.funds.v1.SpendLimitAmount'
            - type: 'null'
        blocked:
          oneOf:
            - $ref: '#/components/schemas/c1.models.funds.v1.SpendLimitBlocked'
            - type: 'null'
        unlimited:
          oneOf:
            - $ref: '#/components/schemas/c1.models.funds.v1.SpendLimitUnlimited'
            - type: 'null'
      title: Spend Limit
      type: object
      x-speakeasy-name-override: SpendLimit
    c1.api.app.v1.AppEntitlementRef:
      description: The AppEntitlementRef message.
      properties:
        appId:
          description: The appId field.
          type: string
        id:
          description: The id field.
          type: string
      title: App Entitlement Ref
      type: object
      x-speakeasy-name-override: AppEntitlementRef
    c1.api.funds.v1.FundRule:
      description: FundRule is one group grant as the API renders it.
      properties:
        createdAt:
          format: date-time
          type:
            - string
            - 'null'
        displayName:
          description: >-
            Admin-facing label, so a rule list reads as policy rather than as
            ids.
             Bounded on the message rather than only on Create: Update carries a whole
             FundRule, and this is the column the mirror's full-text and btree indexes
             are built on.
          type: string
        grant:
          oneOf:
            - $ref: '#/components/schemas/c1.models.funds.v1.SpendLimit'
            - type: 'null'
        groupRef:
          oneOf:
            - $ref: '#/components/schemas/c1.api.app.v1.AppEntitlementRef'
            - type: 'null'
        reason:
          description: >-
            Why this cohort is funded. Subject-visible where a grant is
            explained.
          type: string
        ruleId:
          description: The ruleId field.
          type: string
        tenantId:
          description: The tenantId field.
          type: string
        updatedAt:
          format: date-time
          type:
            - string
            - 'null'
      title: Fund Rule
      type: object
      x-speakeasy-name-override: FundRule
    c1.models.funds.v1.SpendLimitAmount:
      description: SpendLimitAmount caps spend at money per resolved period.
      properties:
        money:
          oneOf:
            - $ref: '#/components/schemas/c1.models.funds.v1.Money'
            - type: 'null'
      title: Spend Limit Amount
      type: object
      x-speakeasy-name-override: SpendLimitAmount
    c1.models.funds.v1.SpendLimitBlocked:
      description: >-
        SpendLimitBlocked refuses supply at this scope. Distinct from
        suspension:
         blocked is a stated policy posture, suspension is a reversible freeze that
         preserves the numbers underneath it.
      title: Spend Limit Blocked
      type: object
      x-speakeasy-name-override: SpendLimitBlocked
    c1.models.funds.v1.SpendLimitUnlimited:
      description: |-
        SpendLimitUnlimited is a tracking limit: full accounting, no admission
         condition. The maximum element, so an unlimited default makes grant rules
         no-ops.
      title: Spend Limit Unlimited
      type: object
      x-speakeasy-name-override: SpendLimitUnlimited
    c1.models.funds.v1.Money:
      description: >-
        Money is wire-compatible with google.type.Money field-for-field, so the
        public
         API converts with a field copy. Declared here rather than imported because
         protoc-gen-pgdb mirrors a nested message by calling its generated DBReflect,
         which only exists for messages this repo generates.
      properties:
        currencyCode:
          description: >-
            ISO 4217 currency code. Must equal the tenant's
            FundPolicy.currency_code.
          type: string
        nanos:
          description: >-
            Nano-unit remainder, 0 <= nanos < 10^9. Non-negative for the same
            reason
             as units, which also keeps the (units, nanos) pair unambiguous.
          format: int32
          type: integer
        units:
          description: >-
            Non-negative — grants, never debts — and bounded so units * 10^9 +
            nanos
             always fits int64. Without the ceiling a large value wraps positive and
             installs a limit nobody granted. The pair check spans two fields, so
             pkg/funds re-checks it on every conversion.
          format: int64
          type: string
      title: Money
      type: object
      x-speakeasy-name-override: Money
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http
    oauth:
      description: >-
        This API uses OAuth2 with the Client Credential flow.

        Client Credentials must be sent in the BODY, not the headers.

        For an example of how to implement this, refer to the
        [c1TokenSource.Token()](https://github.com/ConductorOne/conductorone-sdk-go/blob/3375fe7c0126d17e7ec4e711693dee7b791023aa/token_source.go#L101-L187)
        function.
      flows:
        clientCredentials:
          scopes: {}
          tokenUrl: /auth/v1/token
      type: oauth2

````