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

# Create Function

> CreateFunction registers a new serverless function and creates its
 initial code commit. Functions run as TypeScript modules in a sandboxed
 runtime; see initial_content for the entry-file signature and SDK import.

 The new function is unpublished. To make the commit the default
 runnable version (and have the function appear as runnable in the
 Functions UI), call UpdateFunction with function.published_commit_id
 set and update_mask=["published_commit_id"].



## OpenAPI

````yaml https://spec.speakeasy.com/conductor-one/conductorone/my-source-with-code-samples post /api/v1/functions
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/functions:
    post:
      tags:
        - Function
      summary: Create Function
      description: |-
        CreateFunction registers a new serverless function and creates its
         initial code commit. Functions run as TypeScript modules in a sandboxed
         runtime; see initial_content for the entry-file signature and SDK import.

         The new function is unpublished. To make the commit the default
         runnable version (and have the function appear as runnable in the
         Functions UI), call UpdateFunction with function.published_commit_id
         set and update_mask=["published_commit_id"].
      operationId: c1.api.functions.v1.FunctionsService.CreateFunction
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/c1.api.functions.v1.FunctionsServiceCreateFunctionRequest
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/c1.api.functions.v1.FunctionsServiceCreateFunctionResponse
          description: Successful response
      x-codeSamples:
        - lang: go
          label: CreateFunction
          source: "package main\n\nimport(\n\t\"context\"\n\t\"github.com/conductorone/conductorone-sdk-go/pkg/models/shared\"\n\tconductoronesdkgo \"github.com/conductorone/conductorone-sdk-go\"\n\t\"log\"\n)\n\nfunc main() {\n    ctx := context.Background()\n\n    s := conductoronesdkgo.New(\n        conductoronesdkgo.WithSecurity(shared.Security{\n            BearerAuth: \"<YOUR_BEARER_TOKEN_HERE>\",\n            Oauth: \"<YOUR_OAUTH_HERE>\",\n        }),\n    )\n\n    res, err := s.Functions.CreateFunction(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.FunctionsServiceCreateFunctionResponse != nil {\n        // handle response\n    }\n}"
        - lang: typescript
          label: Typescript (SDK)
          source: >-
            import { ConductoroneSDKTypescript } from
            "conductorone-sdk-typescript";


            const conductoroneSDKTypescript = new ConductoroneSDKTypescript({
              security: {
                bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
                oauth: "<YOUR_OAUTH_HERE>",
              },
            });


            async function run() {
              const result = await conductoroneSDKTypescript.functions.createFunction();

              console.log(result);
            }


            run();
components:
  schemas:
    c1.api.functions.v1.FunctionsServiceCreateFunctionRequest:
      description: The FunctionsServiceCreateFunctionRequest message.
      properties:
        commitMessage:
          description: The commit message describing the initial code submission.
          type:
            - string
            - 'null'
        description:
          description: A description of what the function does.
          type:
            - string
            - 'null'
        displayName:
          description: The human-readable name for the function.
          type:
            - string
            - 'null'
        functionType:
          description: >-
            The type of function to create. Use FUNCTION_TYPE_ANY for user
            functions —
             that is the type the Functions UI lists. Do not use any other value.
          enum:
            - FUNCTION_TYPE_UNSPECIFIED
            - FUNCTION_TYPE_ANY
            - FUNCTION_TYPE_CODE_MODE
          type:
            - string
            - 'null'
          x-speakeasy-unknown-values: allow
        initialContent:
          additionalProperties:
            format: base64
            type: string
          description: |-
            File map for the initial code commit. Keys are file paths in the
             function root (e.g. "main.ts", "main.test.ts"); values are file
             contents as bytes.

             Runtime: TypeScript. The entry file MUST be "main.ts" exporting a
             default async handler:

               import { JSONObject } from "@c1/functions-sdk";
               export default async function main(input: JSONObject): Promise<JSONObject> {
                 return { ok: true, echo: input };
               }

             The handler MUST return a JSON object — not a primitive, array, or null.
          type: object
      title: Functions Service Create Function Request
      type: object
      x-speakeasy-name-override: FunctionsServiceCreateFunctionRequest
    c1.api.functions.v1.FunctionsServiceCreateFunctionResponse:
      description: The FunctionsServiceCreateFunctionResponse message.
      properties:
        commit:
          oneOf:
            - $ref: '#/components/schemas/c1.api.functions.v1.FunctionCommit'
            - type: 'null'
        function:
          oneOf:
            - $ref: '#/components/schemas/c1.api.functions.v1.Function'
            - type: 'null'
      title: Functions Service Create Function Response
      type: object
      x-speakeasy-name-override: FunctionsServiceCreateFunctionResponse
    c1.api.functions.v1.FunctionCommit:
      description: FunctionCommit represents a single commit in a function's history
      properties:
        author:
          description: The author field.
          type:
            - string
            - 'null'
        createdAt:
          format: date-time
          type:
            - string
            - 'null'
        functionId:
          description: The functionId field.
          type:
            - string
            - 'null'
        id:
          description: The id field.
          type:
            - string
            - 'null'
        message:
          description: The message field.
          type:
            - string
            - 'null'
      title: Function Commit
      type: object
      x-speakeasy-name-override: FunctionCommit
    c1.api.functions.v1.Function:
      description: Function represents a customer-provided code extension in the API
      properties:
        createdAt:
          format: date-time
          readOnly: true
          type:
            - string
            - 'null'
        deletedAt:
          format: date-time
          readOnly: true
          type:
            - string
            - 'null'
        description:
          description: The description field.
          type:
            - string
            - 'null'
        displayName:
          description: The displayName field.
          type:
            - string
            - 'null'
        functionType:
          description: The functionType field.
          enum:
            - FUNCTION_TYPE_UNSPECIFIED
            - FUNCTION_TYPE_ANY
            - FUNCTION_TYPE_CODE_MODE
          type:
            - string
            - 'null'
          x-speakeasy-unknown-values: allow
        head:
          description: The head field.
          type:
            - string
            - 'null'
        id:
          description: The id field.
          type:
            - string
            - 'null'
        isDraft:
          description: The isDraft field.
          type:
            - boolean
            - 'null'
        outboundNetworkAllowlist:
          description: The outboundNetworkAllowlist field.
          items:
            type: string
          type:
            - array
            - 'null'
        publishedCommitId:
          description: The publishedCommitId field.
          type:
            - string
            - 'null'
        scopedRoleIds:
          description: >-
            Scoped role IDs define the permissions granted to this function when
            calling
             ConductorOne APIs. These are role IDs (not service roles) that get resolved
             to their service roles at authentication time.

             Currently only the "Read-Only Administrator" role (system:viewer) is supported.
             The role ID can be obtained from the roles API.
          items:
            type: string
          type:
            - array
            - 'null'
        secret:
          additionalProperties:
            type: string
          description: The secret field.
          type: object
        updatedAt:
          format: date-time
          readOnly: true
          type:
            - string
            - 'null'
        useSpn:
          description: >-
            FN-347 transition flag. When true, the function authenticates to
            c1-api
             as user:<sp_id> via the AssumeIdentity token exchange using its
             ServicePrincipalBinding; when false, it authenticates as
             function:<id>. Read-only from clients: set by CreateFunction (when the
             tenant has completed the FunctionsToSPN migration) and by the migration
             itself, never by UpdateFunction. Retired once all functions are on SPN.
          readOnly: true
          type:
            - boolean
            - 'null'
      title: Function
      type: object
      x-speakeasy-entity: Function
      x-speakeasy-name-override: Function
  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

````