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

# Update system.



## OpenAPI

````yaml /openapi/platform-api.yaml put /o/{organisation_id}/systems/{system_id}
openapi: 3.1.0
info:
  title: Versori Platform API
  version: 0.0.1
  license:
    name: UNLICENSED
servers:
  - description: Production
    url: https://platform.versori.com/api/v2
  - description: Staging
    url: https://platform-staging.versori.com/api/v2
  - description: Development
    url: http://localhost:8901
security:
  - bearerToken: []
  - cookie: []
paths:
  /o/{organisation_id}/systems/{system_id}:
    parameters:
      - $ref: '#/components/parameters/organisation_id'
      - name: system_id
        in: path
        required: true
        schema:
          type: string
          format: ulid
          x-go-type: ulid.ULID
          x-go-name: SystemID
          x-go-type-import:
            path: versori.dev/vergo/ulid
    put:
      tags:
        - systems
      summary: Update system.
      operationId: UpdateSystem
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSystem'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/System'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  parameters:
    organisation_id:
      name: organisation_id
      in: path
      required: true
      schema:
        type: string
        format: ulid
        x-go-type: ulid.ULID
        x-go-name: OrganisationID
        x-go-type-import:
          path: versori.dev/vergo/ulid
  schemas:
    UpdateSystem:
      type: object
      properties:
        name:
          type: string
        domain:
          type: string
        templateBaseUrl:
          type: string
    System:
      type: object
      properties:
        id:
          type: string
          format: ulid
          x-go-type: ulid.ULID
          x-go-type-skip-optional-pointer: true
          x-go-type-import:
            path: versori.dev/vergo/ulid
          x-go-name: ID
        name:
          type: string
        domain:
          type: string
        authSchemeConfigs:
          description: ''
          type: array
          items:
            $ref: '#/components/schemas/AuthSchemeConfig'
        templateBaseUrl:
          type: string
      required:
        - name
        - domain
        - templateBaseUrl
        - authSchemeConfigs
        - id
    Error:
      type: object
      properties:
        code:
          type: string
          description: Code is a machine-readable error code.
        message:
          type: string
          description: Message is a human-readable error message.
        fields:
          type: array
          items:
            $ref: '#/components/schemas/ErrorField'
          x-go-type-skip-optional-pointer: true
        details:
          type: string
          x-go-type-skip-optional-pointer: true
      required:
        - code
        - message
    AuthSchemeConfig:
      type: object
      description: >
        An AuthSchemeConfig describes how credentials should be used to
        authenticate with a System, an example being where

        an API key should be sent and what the header/query parameter/cookie
        name is. For OAuth2, this config object also

        contains data such as the token URL, client ID and secret, and scopes to
        request.

        This type contains a string called `type` which denotes which field in
        this object should be populated.

        For example if the `type` is `api-key`, then the `apiKey` field will be
        populated with an

        `AuthSchemeConfigAPIKey` object.
      properties:
        type:
          $ref: '#/components/schemas/AuthSchemeType'
        none:
          $ref: '#/components/schemas/AuthSchemeConfigNone'
        apiKey:
          $ref: '#/components/schemas/AuthSchemeConfigAPIKey'
        basicAuth:
          $ref: '#/components/schemas/AuthSchemeConfigBasicAuth'
        oauth2:
          $ref: '#/components/schemas/AuthSchemeConfigOAuth2'
        oauth1:
          $ref: '#/components/schemas/AuthSchemeConfigOAuth1'
        hmac:
          $ref: '#/components/schemas/AuthSchemeConfigHMAC'
        certificate:
          $ref: '#/components/schemas/AuthSchemeConfigCertificate'
      required:
        - type
    ErrorField:
      description: ErrorField denotes a field which has an error.
      type: object
      properties:
        field:
          type: string
          description: >
            Field is the name of the field which has an error, this may be a
            path to a nested field, including array

            elements. The format of this field is of the form:
            "field1.field2[0].field3"
        message:
          type: string
          description: Message is the error message for this specific field.
      required:
        - field
        - message
    AuthSchemeType:
      description: >
        Type is a unique identifier of the AuthScheme, this is a kebab-case
        formatted string, see

        enum values for possible options.
      type: string
      enum:
        - none
        - api-key
        - basic-auth
        - oauth2
        - hmac
        - jwt-bearer
        - certificate
        - oauth1
        - secret
    AuthSchemeConfigNone:
      title: None
      description: >
        AuthSchemeConfigNone is a placeholder object with the schemeType set to
        `none`. There is no other configuration

        required.
      type: object
      allOf:
        - $ref: '#/components/schemas/AuthSchemeConfigBase'
    AuthSchemeConfigAPIKey:
      title: API Key
      description: >
        AuthSchemeConfigAPIKey defines how a Connector uses an API key
        credential to authenticate with the system.
      type: object
      allOf:
        - $ref: '#/components/schemas/AuthSchemeConfigBase'
        - type: object
          properties:
            name:
              type: string
              description: >-
                Name is the query parameter/header/cookie name which will be
                used to send the API key.
            in:
              $ref: '#/components/schemas/AuthSchemeConfigAPIKeyIn'
          required:
            - name
            - in
    AuthSchemeConfigBasicAuth:
      title: Basic Auth
      description: >
        AuthSchemeConfigBasicAuth is a placeholder object with the schemeType
        set to `basic-auth`. There is no other

        configuration required.
      type: object
      allOf:
        - $ref: '#/components/schemas/AuthSchemeConfigBase'
    AuthSchemeConfigOAuth2:
      title: OAuth 2.0
      description: >
        AuthSchemeConfigOAuth2 defines how a Connector uses an OAuth2 credential
        to authenticate

        with the system. This is to be used for all OAuth 2.0 flows which
        require a client ID and

        client secret as part of the Connector's configuration. Connectors which
        use the

        `client_credentials` grant type, where the user provides the Client ID 
        and Client Secret at

        the point where they connect, should use the
        `AuthSchemeConfigOAuth2ClientCredentials` type

        instead.
      type: object
      allOf:
        - $ref: '#/components/schemas/AuthSchemeConfigBase'
        - type: object
          properties:
            authorizeUrl:
              type: string
              format: uri
              description: >
                AuthorizeURL is the URL which the user will be redirected to in
                order to authorize

                the application.
              x-go-name: AuthorizeURL
              x-go-type-skip-optional-pointer: true
            tokenUrl:
              type: string
              format: uri
              description: >
                TokenURL is the URL which the application will use to issue an
                access token.
              x-go-name: TokenURL
            scopes:
              description: >
                Scopes is the list of all OAuth2 scopes which the application
                supports. The user

                will be allowed to choose which scopes to request when
                configuring the Connection.
              type: array
              items:
                $ref: '#/components/schemas/OAuth2Scope'
            defaultScopes:
              description: >
                DefaultScopes is the list of scopes which will be requested by
                default when the user

                connects the Connector. This is useful for Connectors which
                require a specific set

                of scopes to function correctly.
              type: array
              items:
                type: string
            additionalAuthorizeParams:
              description: >
                AdditionalAuthorizeParams is a URL-encoded query string which
                should be attached to

                the AuthorizeURL when the user is redirected to the OAuth 2.0
                authorization

                endpoint.


                This value is only used by the UI to drive the default values
                when connecting, the

                API to `InitialiseOAuth2Connection` can be provided a different
                value if required.
              type: string
              x-go-type-skip-optional-pointer: true
            additionalTokenParams:
              description: >
                AdditionalTokenParams is a URL-encoded string following the

                `application/x-www-form-urlencoded` mime-type, which can be used
                to pass additional

                parameters to the OAuth 2.0 token endpoint within the request
                body.
              type: string
              x-go-type-skip-optional-pointer: true
            mtlsEnabled:
              type: boolean
              description: >
                MTLSEnabled is a flag which determines whether the Connector
                should use Mutual TLS

                (mTLS) to authenticate with the OAuth 2.0 token endpoint. This
                is useful for

                Connectors which require a higher level of security.
              x-go-name: MTLSEnabled
              x-go-type-skip-optional-pointer: true
            mtlsCredentialId:
              type: string
              description: >
                MTLSCredentialID is the unique identifier of the Credential
                which contains the

                client certificate and private key to be used as part of the
                mTLS connection.


                This may be unset when creating a connection, in which case if
                `mtlsEnabled` is

                true, then the API will find an associated
                AuthSchemeConfigCertificate and link

                them automatically.
              x-go-name: MTLSCredentialID
            pkce:
              type: boolean
              x-go-type-skip-optional-pointer: true
            grant:
              $ref: '#/components/schemas/AuthSchemeConfigOAuth2Grant'
          required:
            - tokenUrl
            - scopes
            - defaultScopes
            - grant
    AuthSchemeConfigOAuth1:
      title: OAuth 2.0
      type: object
      allOf:
        - $ref: '#/components/schemas/AuthSchemeConfigBase'
        - type: object
          properties:
            tokenAuth:
              type: boolean
              description: >
                If set to 'true' the endpoints are optional but when connecting
                you need to use oauth1-token credentials and provide the token
                and token secret.

                If left empty or set to 'false' you need to provide all the
                endpoint and connect using the oauth1 credentials which uses the
                browser authorize flow.
              x-go-type-skip-optional-pointer: true
            consumerKey:
              type: string
            consumerSecret:
              type: string
            tempCredentialEndpoint:
              $ref: '#/components/schemas/Endpoint'
            resourceOwnerAuthorizationEndpoint:
              $ref: '#/components/schemas/Endpoint'
            tokenEndpoint:
              $ref: '#/components/schemas/Endpoint'
            signatureMethod:
              type: string
              description: One of 'sha256', 'sha1'
            credentialId:
              type: string
              format: ulid
              x-go-type: ulid.ULID
              x-go-name: CredentialID
              x-go-type-import:
                path: versori.dev/vergo/ulid
              x-go-type-skip-optional-pointer: true
          required:
            - consumerKey
            - consumerSecret
            - signatureMethod
    AuthSchemeConfigHMAC:
      title: HMAC
      description: >
        AuthSchemeConfigHMAC defines how a Connector uses an HMAC credential to
        authenticate with the system.


        This may be used on outbound requests to sign the request body, however
        it is more commonly used on inbound

        requests (i.e. from Webhook Triggers) to verify the sender of the
        request is allowed to invoke the Trigger.
      type: object
      allOf:
        - $ref: '#/components/schemas/AuthSchemeConfigBase'
        - type: object
          properties:
            name:
              type: string
              description: >-
                Name is the query parameter/header/cookie name which will be
                used to send the signature.
            in:
              $ref: '#/components/schemas/AuthSchemeConfigHMACIn'
            algorithm:
              description: >-
                AuthSchemeConfigHMACAlgorithm defines the hashing algorithm to
                use when generating the HMAC signature.
              type: string
              enum:
                - sha1
                - sha256
                - sha512
            digestInputs:
              description: >
                AuthSchemeConfigHMACInputs defines what parts of a HTTP request
                are consumed to generate the HMAC signature. Some systems

                only generate the signature from the request body, others may
                include the URL. The order of this array

                defines the order in which the input is fed into the hashing
                function.
              type: array
              items:
                type: string
                enum:
                  - body
                  - url
            encoding:
              description: >
                Encoding defines how the HMAC signature was encoded. This can be
                one of `hex`, `base64` or `base64url`.
              type: string
              enum:
                - hex
                - base64
                - base64url
          required:
            - name
            - in
            - algorithm
            - digestInputs
            - encoding
    AuthSchemeConfigCertificate:
      title: TLS Certificate
      description: >
        AuthSchemeConfigCertificate is a placeholder object with the schemeType
        set to `certificate`.

        There is no other config required
      type: object
      allOf:
        - $ref: '#/components/schemas/AuthSchemeConfigBase'
    AuthSchemeConfigBase:
      type: object
      properties:
        id:
          type: string
          format: ulid
          description: >
            ID is the unique identifier of the AuthSchemeConfig, this is
            generated by the client and

            only requires to be unique amongst the elements of the array in
            which is it contained.
          x-go-name: ID
        description:
          description: >
            Description enables users to distinguish multiple configurations
            which use the same

            schemeType.
          type: string
        validationMessages:
          description: >
            ValidationMessages is a list of messages which are generated when
            the AuthSchemeConfig

            is validated. This is typically used to provide feedback to the user
            when they are

            creating or updating the AuthSchemeConfig.


            This field will be ignored if sent to the API.
          type: array
          items:
            $ref: '#/components/schemas/Message'
          x-go-type-skip-optional-pointer: true
      required:
        - id
        - description
    AuthSchemeConfigAPIKeyIn:
      description: >
        AuthSchemeConfigAPIKeyIn defines the location of the API key in the
        request.
      type: string
      enum:
        - query
        - header
        - cookie
    OAuth2Scope:
      description: >
        OAuth2Scope represents a single scope which can be requested by an
        OAuth2 application.
      type: object
      properties:
        name:
          type: string
          description: >
            Name is the name of the scope as determined by the application to
            which this Connector

            is connecting to.
        description:
          type: string
          description: >
            Description describes the scope in human-friendly terminology. This
            text may be

            displayed to users via a help tooltip or similar.
          x-go-type-skip-optional-pointer: true
      required:
        - name
    AuthSchemeConfigOAuth2Grant:
      type: object
      properties:
        authorizationCode:
          $ref: '#/components/schemas/AuthSchemeConfigOAuth2GrantAuthorizationCode'
        clientCredentials:
          $ref: '#/components/schemas/AuthSchemeConfigOAuth2GrantClientCredentials'
        password:
          $ref: '#/components/schemas/AuthSchemeConfigOAuth2GrantPassword'
        type:
          $ref: '#/components/schemas/AuthSchemeConfigOAuth2GrantType'
      required:
        - type
    Endpoint:
      type: object
      properties:
        url:
          type: string
          description: URL of the endpoint, may contain templated values in curly braces
        additionalParamConfigs:
          type: array
          items:
            $ref: '#/components/schemas/ParameterConfig'
          x-go-type-skip-optional-pointer: true
        parameterTransmission:
          type: string
          enum:
            - AUTH_STYLE_AUTHORIZATION_HEADER
            - AUTH_STYLE_FORM
            - AUTH_STYLE_QUERY
      required:
        - url
    AuthSchemeConfigHMACIn:
      description: >-
        AuthSchemeConfigHMACIn defines where the signature should be set on
        requests.
      type: string
      enum:
        - query
        - header
        - cookie
    Message:
      description: >
        Message is a message to be displayed to the user to indicate some
        information about the

        preceding request.
      type: object
      properties:
        text:
          description: Text contains the text of the message.
          type: string
        severity:
          $ref: '#/components/schemas/MessageSeverity'
        detail:
          description: >
            Details contains additional information about the message. This is
            intended to be used

            to provide more information about the message, such as a list of
            validation errors.
          type: array
          items:
            type: string
          x-go-type-skip-optional-pointer: true
      required:
        - text
        - severity
    AuthSchemeConfigOAuth2GrantAuthorizationCode:
      title: authorization_code
      description: >
        AuthSchemeConfigOAuth2GrantAuthorizationCode contains grant-specific
        configuration for the

        `authorization_code` grant type.


        How the API manages changes to this configuration is as follows:


        - CredentialID and OrganisationID are not set, a new credential is
        created containing the
          sensitive information and the non-sensitive information is updated in the database.
        - Otherwise, both the credential and the database are updated using JSON
        Merge Patch, with
          undefined properties not being updated.
        - Any other permutation will result in a 400 Bad Request.
      type: object
      properties:
        credentialId:
          description: >
            CredentialID is the unique identifier of the Credential which
            contains the client ID and

            client secret to be used as part of the `password` flow.
          type: string
          format: ulid
          x-go-name: CredentialID
          x-go-type: ulid.ULID
          x-go-type-import:
            path: versori.dev/vergo/ulid
          x-go-type-skip-optional-pointer: true
        organisationId:
          description: >
            OrganisationID is the unique identifier of the Organisation that
            owns the Credential.

            This can be different to the Connector's OrganisationID since some
            may be imported from

            Versori's public library.
          type: string
          format: ulid
          x-go-name: OrganisationID
          x-go-type: ulid.ULID
          x-go-type-import:
            path: versori.dev/vergo/ulid
          x-go-type-skip-optional-pointer: true
        clientId:
          description: >
            ClientID is the OAuth 2.0 client's identifier. This is not a
            sensitive value and may be

            presented to the user in plaintext.
          type: string
          x-go-name: ClientID
        clientSecret:
          description: >
            ClientSecret is the OAuth 2.0 client's secret. This is a sensitive
            value and will not be

            displayed to the user.
          type: string
      required:
        - grantType
    AuthSchemeConfigOAuth2GrantClientCredentials:
      title: client_credentials
      type: object
    AuthSchemeConfigOAuth2GrantPassword:
      title: password
      description: >
        AuthSchemeConfigOAuth2GrantPassword contains grant-specific
        configuration for the `password`

        grant type.


        How the API manages changes to this configuration is as follows:


        - CredentialID and OrganisationID are not set, a new credential is
        created containing the
          sensitive information and the non-sensitive information is created/updated in the
          database.
        - Otherwise, both the credential and the database are updated using JSON
        Merge Patch.

        - Any other permutation will result in a 400 Bad Request.
      type: object
      properties:
        credentialId:
          description: >
            CredentialID is the unique identifier of the Credential which
            contains the client ID and

            client secret to be used as part of the `password` flow.
          type: string
          format: ulid
          x-go-name: CredentialID
          x-go-type: ulid.ULID
          x-go-type-import:
            path: versori.dev/vergo/ulid
          x-go-type-skip-optional-pointer: true
        organisationId:
          description: >
            OrganisationID is the unique identifier of the Organisation that
            owns the Credential. This can be different

            to the Connector's OrganisationID since some may be imported from
            Versori's public library.
          type: string
          format: ulid
          x-go-name: OrganisationID
          x-go-type: ulid.ULID
          x-go-type-import:
            path: versori.dev/vergo/ulid
          x-go-type-skip-optional-pointer: true
        clientId:
          description: >
            ClientID is the OAuth 2.0 client's identifier. This is not a
            sensitive value and may be presented to the

            user in plaintext.
          type: string
          x-go-name: ClientID
        clientSecret:
          description: >
            ClientSecret is the OAuth 2.0 client's secret. This is a sensitive
            value and will not be displayed to the

            user. It may be populated when updating the Credential.
          type: string
      required:
        - grantType
    AuthSchemeConfigOAuth2GrantType:
      type: string
      enum:
        - authorizationCode
        - clientCredentials
        - password
    ParameterConfig:
      type: object
      properties:
        parameterName:
          type: string
          description: Key of the additional parameter to insert
        targetName:
          type: string
          description: Override name for the parameter in endpoint requests
          x-go-type-skip-optional-pointer: true
        location:
          type: string
          enum:
            - LOCATION_IGNORE
            - LOCATION_BODY
            - LOCATION_HEADER
            - LOCATION_QUERY
            - LOCATION_ENDPOINT
            - LOCATION_HEADER_PARAMETER
        usages:
          type: string
          enum:
            - USAGE_UNKNOWN
            - USAGE_TEMP_CREDENTIAL_ENDPOINT
            - USAGE_TOKEN_REQUEST_ENDPOINT
        required:
          type: boolean
          description: Whether parameter is required in requests
        modifiable:
          type: boolean
          description: Whether parameter can be modified by user
      required:
        - location
        - usage
        - required
        - modifiable
        - parameterName
    MessageSeverity:
      type: string
      enum:
        - info
        - warning
        - error
  securitySchemes:
    bearerToken:
      description: >
        Bearer token authentication used by the Versori Platform. External
        consumers must provide an API key, however

        internal consumers must provide a JWT id_token issued by our IdP.
      type: http
      scheme: bearer
    cookie:
      description: Cookie authentication used by the Versori Platform.
      type: apiKey
      in: cookie
      name: cookie

````