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

# Get provider

> Returns information about a single provider. No authentication is required.




## OpenAPI

````yaml platform get /providers/{provider}
openapi: 3.0.1
info:
  title: Ampersand public API
  version: 1.0.0
servers:
  - url: https://api.withampersand.com/v1
security:
  - APIKeyHeader: []
  - Bearer: []
paths:
  /providers/{provider}:
    get:
      tags:
        - Provider
      summary: Get provider
      description: >
        Returns information about a single provider. No authentication is
        required.
      operationId: getProvider
      parameters:
        - name: provider
          in: path
          required: true
          description: The provider name (e.g. `salesforce`, `hubspot`).
          example: hubspot
          schema:
            type: string
      responses:
        '200':
          description: The requested provider.
          content:
            application/json:
              schema:
                title: Provider Info
                type: object
                required:
                  - name
                  - baseURL
                  - authType
                  - support
                  - defaultModule
                properties:
                  name:
                    type: string
                  authType:
                    title: Auth Type
                    description: The type of authentication required by the provider.
                    type: string
                    enum:
                      - oauth2
                      - apiKey
                      - basic
                      - jwt
                      - custom
                      - none
                    x-oapi-codegen-extra-tags:
                      validate: required
                  baseURL:
                    description: The base URL for making API requests.
                    type: string
                    x-oapi-codegen-extra-tags:
                      validate: required
                  defaultModule:
                    type: string
                  oauth2Opts:
                    title: OAuth2 Options
                    type: object
                    description: >-
                      Configuration for OAuth2.0. Must be provided if authType
                      is oauth2.
                    required:
                      - grantType
                      - tokenURL
                      - explicitScopesRequired
                      - explicitWorkspaceRequired
                      - tokenMetadataFields
                    properties:
                      grantType:
                        type: string
                        enum:
                          - authorizationCode
                          - authorizationCodePKCE
                          - clientCredentials
                          - password
                      authURL:
                        type: string
                        example: https://login.salesforce.com/services/oauth2/authorize
                        description: The authorization URL.
                        x-go-type-skip-optional-pointer: true
                      tokenURL:
                        type: string
                        example: https://login.salesforce.com/services/oauth2/token
                        description: The token URL.
                        x-oapi-codegen-extra-tags:
                          validate: required
                      explicitScopesRequired:
                        type: boolean
                        description: >-
                          Whether scopes are required to be known ahead of the
                          OAuth flow.
                        example: true
                      explicitWorkspaceRequired:
                        type: boolean
                        description: >-
                          Whether the workspace is required to be known ahead of
                          the OAuth flow.
                        example: true
                      audience:
                        type: array
                        items:
                          type: string
                        example:
                          - https://api.mparticle.com
                        description: >-
                          A list of URLs that represent the audience for the
                          token, which is needed for some client credential
                          grant flows.
                        x-go-type-skip-optional-pointer: true
                      scopeMappings:
                        type: object
                        description: >-
                          Maps input scopes to their full OAuth scope values
                          with template variable support. Scopes not in this map
                          are passed through unchanged. Needed for some
                          providers.
                        additionalProperties:
                          type: string
                        x-go-type-skip-optional-pointer: true
                        example:
                          default: https://{{.workspace}}.api.com/default
                      tokenMetadataFields:
                        title: Token Metadata Fields
                        type: object
                        description: >-
                          Fields to be used to extract token metadata from the
                          token response.
                        properties:
                          workspaceRefField:
                            type: string
                            example: account-id
                            x-go-type-skip-optional-pointer: true
                          consumerRefField:
                            type: string
                            example: user-id
                            x-go-type-skip-optional-pointer: true
                          scopesField:
                            type: string
                            example: scopes
                            x-go-type-skip-optional-pointer: true
                          otherFields:
                            type: array
                            title: Token Metadata Fields - Other fields
                            description: >-
                              Additional fields to extract and transform from
                              the token response
                            items:
                              type: object
                              required:
                                - name
                                - displayName
                                - path
                              properties:
                                name:
                                  type: string
                                  description: The internal name of the field
                                  x-go-type-skip-optional-pointer: true
                                displayName:
                                  type: string
                                  description: The human-readable name of the field
                                  x-go-type-skip-optional-pointer: true
                                path:
                                  type: string
                                  description: >-
                                    The path to the field in the token response
                                    (accepts dot notation for nested fields)
                                  example: owner.siteId
                                  x-go-type-skip-optional-pointer: true
                                capture:
                                  type: string
                                  description: >-
                                    A regex expression to capture the value that
                                    we need from the path. There must be only
                                    one capture group named 'result' in the
                                    expression. If not provided, will cause an
                                    error.
                                  example: https:\/\/(?<result>[^.]+)\.docusign\.net
                                  x-go-type-skip-optional-pointer: true
                      docsURL:
                        type: string
                        description: >-
                          URL with more information about where to retrieve
                          Client ID and Client Secret, etc.
                        example: https://docs.example.com/client-credentials
                        x-go-type-skip-optional-pointer: true
                      authURLParams:
                        type: object
                        additionalProperties:
                          type: string
                        x-go-type-skip-optional-pointer: true
                        example:
                          access_type: offline
                          duration: permanent
                      accessTokenOpts:
                        title: Oauth2 Access Token Options
                        type: object
                        description: >
                          Configuration that defines how an OAuth 2.0 access
                          token is attached to

                          outbound API requests. When provided, this
                          configuration overrides the

                          default access-token handling behavior for the
                          connector.
                        required:
                          - attachmentType
                        properties:
                          attachmentType:
                            type: string
                            description: >-
                              How the access token should be attached to
                              requests.
                            enum:
                              - accessTokenHeaderAttachment
                            x-oapi-codegen-extra-tags:
                              validate: required
                          header:
                            title: Access Token Header Options
                            type: object
                            description: >-
                              Configuration for access token in header. Must be
                              provided if type is in-header.
                            required:
                              - name
                            properties:
                              name:
                                type: string
                                example: X-Access-Token
                                description: >-
                                  The name of the header to be used for the
                                  access token.
                                x-go-type-skip-optional-pointer: true
                              valuePrefix:
                                type: string
                                example: 'Bearer '
                                description: >-
                                  The prefix to be added to the access token
                                  value when it is sent in the header.
                                x-go-type-skip-optional-pointer: true
                          docsURL:
                            type: string
                            description: >-
                              URL with more information about how access token
                              is used.
                            example: https://docs.example.com/oauth2-access-token-usage
                            x-go-type-skip-optional-pointer: true
                  apiKeyOpts:
                    title: API Key Options
                    type: object
                    description: >-
                      Configuration for API key. Must be provided if authType is
                      apiKey.
                    required:
                      - attachmentType
                    properties:
                      attachmentType:
                        type: string
                        description: How the API key should be attached to requests.
                        enum:
                          - query
                          - header
                        x-oapi-codegen-extra-tags:
                          validate: required
                      query:
                        title: API Key Query Options
                        type: object
                        description: >-
                          Configuration for API key in query parameter. Must be
                          provided if type is in-query.
                        required:
                          - name
                        properties:
                          name:
                            type: string
                            example: api_key
                            description: >-
                              The name of the query parameter to be used for the
                              API key.
                            x-go-type-skip-optional-pointer: true
                      header:
                        title: API Key Header Options
                        type: object
                        description: >-
                          Configuration for API key in header. Must be provided
                          if type is in-header.
                        required:
                          - name
                        properties:
                          name:
                            type: string
                            example: X-Api-Key
                            description: The name of the header to be used for the API key.
                            x-go-type-skip-optional-pointer: true
                          valuePrefix:
                            type: string
                            example: 'Bearer '
                            description: >-
                              The prefix to be added to the API key value when
                              it is sent in the header.
                            x-go-type-skip-optional-pointer: true
                      docsURL:
                        type: string
                        description: >-
                          URL with more information about how to get or use an
                          API key.
                        example: https://docs.example.com/api-key
                        x-go-type-skip-optional-pointer: true
                  basicOpts:
                    title: Basic Auth Options
                    type: object
                    description: Configuration for Basic Auth. Optional.
                    properties:
                      apiKeyAsBasic:
                        type: boolean
                        example: true
                        description: >-
                          If true, the provider uses an API key which then gets
                          encoded as a basic auth user:pass string.
                        x-go-type-skip-optional-pointer: true
                      apiKeyAsBasicOpts:
                        title: API Key as Basic Options
                        type: object
                        description: >-
                          when this object is present, it means that this
                          provider uses Basic Auth to actually collect an API
                          key
                        properties:
                          fieldUsed:
                            type: string
                            enum:
                              - username
                              - password
                            example: username
                            description: >-
                              whether the API key should be used as the username
                              or password.
                            x-go-type-skip-optional-pointer: true
                            x-enum-varnames:
                              - UsernameField
                              - PasswordField
                          keyFormat:
                            type: string
                            example: api:%s
                            description: >-
                              How to transform the API key in to a basic auth
                              user:pass string. The %s is replaced with the API
                              key value.
                            x-go-type-skip-optional-pointer: true
                      docsURL:
                        type: string
                        description: >-
                          URL with more information about how to get or use an
                          API key.
                        example: https://docs.example.com/api-key
                        x-go-type-skip-optional-pointer: true
                  customOpts:
                    title: Custom Auth Options
                    type: object
                    description: Configuration for custom auth. Optional.
                    properties:
                      headers:
                        type: array
                        items:
                          title: Custom Auth Header
                          type: object
                          description: >-
                            A custom header to be used for authentication.
                            Automatically added by the backend.
                          required:
                            - name
                            - valueTemplate
                          properties:
                            name:
                              type: string
                              example: X-Custom-Auth
                              description: The name of the header.
                            valueTemplate:
                              type: string
                              example: Bearer {{ .token }}
                              description: >-
                                The value of the header, represented as a Golang
                                text/template expression. Only the backend will
                                interpret this.
                              x-oapi-codegen-extra-tags:
                                skipSubstitutions: 'true'
                        description: >-
                          A list of custom headers to be used for
                          authentication. The backend will add these headers.
                        x-go-type-skip-optional-pointer: true
                      queryParams:
                        type: array
                        items:
                          title: Custom Auth Query Parameter
                          type: object
                          description: >-
                            A custom query parameter to be used for
                            authentication. Automatically added by the backend.
                          required:
                            - name
                            - valueTemplate
                          properties:
                            name:
                              type: string
                              example: custom_auth
                              description: The name of the query parameter.
                            valueTemplate:
                              type: string
                              example: '{{ .token }}'
                              description: >-
                                The value of the query parameter, represented as
                                a Golang text/template expression. Only the
                                backend will interpret this.
                              x-oapi-codegen-extra-tags:
                                skipSubstitutions: 'true'
                        description: >-
                          A list of custom query parameters to be used for
                          authentication. The backend will add these query
                          parameters.
                        x-go-type-skip-optional-pointer: true
                      inputs:
                        type: array
                        items:
                          title: Custom Auth Input
                          type: object
                          description: >-
                            A custom input field for authentication. This is
                            used by the frontend to dynamically render input
                            fields for custom auth. The backend will not
                            interpret this. It will however receive the value of
                            this field before making a request (in the
                            connection secrets).
                          required:
                            - name
                            - displayName
                          properties:
                            name:
                              type: string
                              example: custom_auth_input
                              description: >-
                                The internal identifier for the custom auth
                                input field.
                            displayName:
                              type: string
                              example: Custom Auth Input
                              description: >-
                                The human-readable name for the custom auth
                                input field.
                            prompt:
                              type: string
                              example: >-
                                See Authorization section of provider docs to
                                obtain this value
                              description: >-
                                Some helpful text or context to be displayed to
                                the user when asking for this input.
                              x-go-type-skip-optional-pointer: true
                            docsURL:
                              type: string
                              example: https://docs.example.com/custom-auth-input
                              description: >-
                                URL with details about this authentication
                                mechanism and how to use it. Might be specific
                                to this field, or a general URL for the
                                provider. Optional.
                              x-go-type-skip-optional-pointer: true
                        description: >-
                          A list of custom input fields for authentication. The
                          frontend will render these input fields and the
                          backend will receive the values of these fields before
                          making a request.
                        x-go-type-skip-optional-pointer: true
                  support:
                    title: Support
                    type: object
                    description: The supported features for the provider.
                    x-oapi-codegen-extra-tags:
                      validate: required
                    required:
                      - bulkWrite
                      - proxy
                      - read
                      - subscribe
                      - write
                      - delete
                      - search
                    properties:
                      bulkWrite:
                        title: Bulk Write Support
                        type: object
                        x-oapi-codegen-extra-tags:
                          validate: required
                        required:
                          - insert
                          - update
                          - upsert
                          - delete
                        properties:
                          insert:
                            type: boolean
                          update:
                            type: boolean
                          upsert:
                            type: boolean
                          delete:
                            type: boolean
                      proxy:
                        type: boolean
                      read:
                        type: boolean
                      subscribe:
                        type: boolean
                      write:
                        type: boolean
                      delete:
                        type: boolean
                      subscribeSupport:
                        title: Subscribe Support
                        type: object
                        properties:
                          create:
                            type: boolean
                          update:
                            type: boolean
                          delete:
                            type: boolean
                          passThrough:
                            type: boolean
                      batchWrite:
                        required:
                          - delete
                          - create
                          - update
                          - upsert
                        properties:
                          delete:
                            required:
                              - supported
                            properties:
                              supported:
                                description: >-
                                  Whether this type of batch write operation is
                                  supported
                                type: boolean
                              defaultRecordLimit:
                                description: >-
                                  The default number of records supported in a
                                  batch
                                type: integer
                              objectRecordLimits:
                                description: >-
                                  Defines object-level overrides for batch
                                  record limits. Keys represent object names,
                                  and values specify the maximum number of
                                  records per batch for those objects.
                                type: object
                                additionalProperties:
                                  type: integer
                          create:
                            required:
                              - supported
                            properties:
                              supported:
                                description: >-
                                  Whether this type of batch write operation is
                                  supported
                                type: boolean
                              defaultRecordLimit:
                                description: >-
                                  The default number of records supported in a
                                  batch
                                type: integer
                              objectRecordLimits:
                                description: >-
                                  Defines object-level overrides for batch
                                  record limits. Keys represent object names,
                                  and values specify the maximum number of
                                  records per batch for those objects.
                                type: object
                                additionalProperties:
                                  type: integer
                          update:
                            required:
                              - supported
                            properties:
                              supported:
                                description: >-
                                  Whether this type of batch write operation is
                                  supported
                                type: boolean
                              defaultRecordLimit:
                                description: >-
                                  The default number of records supported in a
                                  batch
                                type: integer
                              objectRecordLimits:
                                description: >-
                                  Defines object-level overrides for batch
                                  record limits. Keys represent object names,
                                  and values specify the maximum number of
                                  records per batch for those objects.
                                type: object
                                additionalProperties:
                                  type: integer
                          upsert:
                            required:
                              - supported
                            properties:
                              supported:
                                description: >-
                                  Whether this type of batch write operation is
                                  supported
                                type: boolean
                              defaultRecordLimit:
                                description: >-
                                  The default number of records supported in a
                                  batch
                                type: integer
                              objectRecordLimits:
                                description: >-
                                  Defines object-level overrides for batch
                                  record limits. Keys represent object names,
                                  and values specify the maximum number of
                                  records per batch for those objects.
                                type: object
                                additionalProperties:
                                  type: integer
                      search:
                        title: Search Support
                        type: object
                        required:
                          - operators
                        properties:
                          operators:
                            title: Supported Operators for Search Action
                            type: object
                            required:
                              - equals
                            properties:
                              equals:
                                type: boolean
                  authHealthCheck:
                    title: Auth Health Check
                    type: object
                    description: >-
                      A URL to check the health of a provider's credentials.
                      It's used to see if the credentials are valid and if the
                      provider is reachable.
                    required:
                      - url
                    properties:
                      url:
                        type: string
                        description: >-
                          a no-op URL to check the health of the credentials.
                          The URL MUST not mutate any state. If the provider
                          doesn't have such an endpoint, then don't provide
                          credentialsHealthCheck.
                        example: https://api.example.com/health-check
                      method:
                        type: string
                        description: >-
                          The HTTP method to use for the health check. If not
                          set, defaults to GET.
                        example: GET
                        x-go-type-skip-optional-pointer: true
                      successStatusCodes:
                        type: array
                        items:
                          type: integer
                        description: >-
                          The HTTP status codes that indicate a successful
                          health check. If not set, defaults to 200 and 204.
                        example:
                          - 200
                          - 204
                        x-go-type-skip-optional-pointer: true
                  displayName:
                    type: string
                    example: Zendesk Chat
                    description: >-
                      The display name of the provider, if omitted, defaults to
                      provider name.
                    x-go-type-skip-optional-pointer: true
                  postAuthInfoNeeded:
                    type: boolean
                    example: true
                    description: >-
                      If true, we require additional information after auth to
                      start making requests.
                    x-go-type-skip-optional-pointer: true
                  media:
                    title: Media
                    properties:
                      regular:
                        title: Media Type Regular
                        type: object
                        description: Media for light/regular mode.
                        properties:
                          iconURL:
                            type: string
                            example: https://example.com/icon.png
                            description: URL to the icon for the provider.
                            x-go-type-skip-optional-pointer: true
                          logoURL:
                            type: string
                            example: https://example.com/logo.png
                            description: URL to the logo for the provider.
                            x-go-type-skip-optional-pointer: true
                      darkMode:
                        title: Media Type Dark Mode
                        type: object
                        description: Media to be used in dark mode.
                        properties:
                          iconURL:
                            type: string
                            example: https://example.com/icon.png
                            description: >-
                              URL to the icon for the provider that is to be
                              used in dark mode.
                            x-go-type-skip-optional-pointer: true
                          logoURL:
                            type: string
                            example: https://example.com/logo.png
                            description: >-
                              URL to the logo for the provider that is to be
                              used in dark mode.
                            x-go-type-skip-optional-pointer: true
                  labels:
                    title: Labels
                    type: object
                    additionalProperties:
                      type: string
                  subscribeRequirements:
                    title: Subscribe Requirements
                    type: object
                    description: >-
                      Declares which auxiliary steps a provider requires to
                      support subscriptions, beyond the per-object subscribe
                      call itself.
                    properties:
                      registration:
                        type: boolean
                        description: >-
                          Whether the provider requires a one-time registration
                          step that is shared across all subscribed objects. The
                          subscribe method is object-scoped, so if a separate
                          API call is needed beyond per-object configuration
                          (e.g., registering a single webhook/endpoint that all
                          object subscriptions hang off of), registration is
                          required.
                      maintenance:
                        type: boolean
                        description: >-
                          Whether the subscription requires periodic
                          maintenance. Some providers expire
                          subscriptions/watches after a fixed TTL, so the
                          subscription must be renewed on a schedule to remain
                          active.
                      postProcess:
                        type: boolean
                        description: >-
                          Whether subscribing requires a third-party setup step
                          that the connector instance itself cannot perform.
                          Examples: Salesforce requires AWS EventBridge
                          configuration; Gmail requires a Google Pub/Sub topic
                          to be configured. Any configuration that must happen
                          outside the connector falls into post-process.
                      subscribeByAPI:
                        type: boolean
                        description: >-
                          Whether the provider supports programmatic
                          subscription via API. If false, provider may still
                          support webhooks via manual configuration in UI. 
                  modules:
                    title: Modules that this provider supports
                    type: object
                    description: The registry of provider modules.
                    additionalProperties:
                      title: Module Info
                      type: object
                      required:
                        - displayName
                        - baseURL
                        - support
                      properties:
                        displayName:
                          type: string
                        baseURL:
                          type: string
                        support:
                          title: Support
                          type: object
                          description: The supported features for the provider.
                          x-oapi-codegen-extra-tags:
                            validate: required
                          required:
                            - bulkWrite
                            - proxy
                            - read
                            - subscribe
                            - write
                            - delete
                            - search
                          properties:
                            bulkWrite:
                              title: Bulk Write Support
                              type: object
                              x-oapi-codegen-extra-tags:
                                validate: required
                              required:
                                - insert
                                - update
                                - upsert
                                - delete
                              properties:
                                insert:
                                  type: boolean
                                update:
                                  type: boolean
                                upsert:
                                  type: boolean
                                delete:
                                  type: boolean
                            proxy:
                              type: boolean
                            read:
                              type: boolean
                            subscribe:
                              type: boolean
                            write:
                              type: boolean
                            delete:
                              type: boolean
                            subscribeSupport:
                              title: Subscribe Support
                              type: object
                              properties:
                                create:
                                  type: boolean
                                update:
                                  type: boolean
                                delete:
                                  type: boolean
                                passThrough:
                                  type: boolean
                            batchWrite:
                              required:
                                - delete
                                - create
                                - update
                                - upsert
                              properties:
                                delete:
                                  required:
                                    - supported
                                  properties:
                                    supported:
                                      description: >-
                                        Whether this type of batch write
                                        operation is supported
                                      type: boolean
                                    defaultRecordLimit:
                                      description: >-
                                        The default number of records supported
                                        in a batch
                                      type: integer
                                    objectRecordLimits:
                                      description: >-
                                        Defines object-level overrides for batch
                                        record limits. Keys represent object
                                        names, and values specify the maximum
                                        number of records per batch for those
                                        objects.
                                      type: object
                                      additionalProperties:
                                        type: integer
                                create:
                                  required:
                                    - supported
                                  properties:
                                    supported:
                                      description: >-
                                        Whether this type of batch write
                                        operation is supported
                                      type: boolean
                                    defaultRecordLimit:
                                      description: >-
                                        The default number of records supported
                                        in a batch
                                      type: integer
                                    objectRecordLimits:
                                      description: >-
                                        Defines object-level overrides for batch
                                        record limits. Keys represent object
                                        names, and values specify the maximum
                                        number of records per batch for those
                                        objects.
                                      type: object
                                      additionalProperties:
                                        type: integer
                                update:
                                  required:
                                    - supported
                                  properties:
                                    supported:
                                      description: >-
                                        Whether this type of batch write
                                        operation is supported
                                      type: boolean
                                    defaultRecordLimit:
                                      description: >-
                                        The default number of records supported
                                        in a batch
                                      type: integer
                                    objectRecordLimits:
                                      description: >-
                                        Defines object-level overrides for batch
                                        record limits. Keys represent object
                                        names, and values specify the maximum
                                        number of records per batch for those
                                        objects.
                                      type: object
                                      additionalProperties:
                                        type: integer
                                upsert:
                                  required:
                                    - supported
                                  properties:
                                    supported:
                                      description: >-
                                        Whether this type of batch write
                                        operation is supported
                                      type: boolean
                                    defaultRecordLimit:
                                      description: >-
                                        The default number of records supported
                                        in a batch
                                      type: integer
                                    objectRecordLimits:
                                      description: >-
                                        Defines object-level overrides for batch
                                        record limits. Keys represent object
                                        names, and values specify the maximum
                                        number of records per batch for those
                                        objects.
                                      type: object
                                      additionalProperties:
                                        type: integer
                            search:
                              title: Search Support
                              type: object
                              required:
                                - operators
                              properties:
                                operators:
                                  title: Supported Operators for Search Action
                                  type: object
                                  required:
                                    - equals
                                  properties:
                                    equals:
                                      type: boolean
                        subscribeRequirements:
                          title: Subscribe Requirements
                          type: object
                          description: >-
                            Declares which auxiliary steps a provider requires
                            to support subscriptions, beyond the per-object
                            subscribe call itself.
                          properties:
                            registration:
                              type: boolean
                              description: >-
                                Whether the provider requires a one-time
                                registration step that is shared across all
                                subscribed objects. The subscribe method is
                                object-scoped, so if a separate API call is
                                needed beyond per-object configuration (e.g.,
                                registering a single webhook/endpoint that all
                                object subscriptions hang off of), registration
                                is required.
                            maintenance:
                              type: boolean
                              description: >-
                                Whether the subscription requires periodic
                                maintenance. Some providers expire
                                subscriptions/watches after a fixed TTL, so the
                                subscription must be renewed on a schedule to
                                remain active.
                            postProcess:
                              type: boolean
                              description: >-
                                Whether subscribing requires a third-party setup
                                step that the connector instance itself cannot
                                perform. Examples: Salesforce requires AWS
                                EventBridge configuration; Gmail requires a
                                Google Pub/Sub topic to be configured. Any
                                configuration that must happen outside the
                                connector falls into post-process.
                            subscribeByAPI:
                              type: boolean
                              description: >-
                                Whether the provider supports programmatic
                                subscription via API. If false, provider may
                                still support webhooks via manual configuration
                                in UI. 
                  metadata:
                    title: Provider Metadata
                    type: object
                    description: >-
                      Provider metadata that needs to be given by the user or
                      fetched by the connector post authentication for the
                      connector to work.
                    properties:
                      input:
                        type: array
                        description: Metadata provided as manual input
                        items:
                          title: Metadata Item (as input)
                          type: object
                          required:
                            - name
                          properties:
                            name:
                              type: string
                              description: The internal identifier for the metadata field
                              x-go-type-skip-optional-pointer: true
                            displayName:
                              type: string
                              description: The human-readable name for the field
                              x-go-type-skip-optional-pointer: true
                            prompt:
                              type: string
                              description: >-
                                Human-readable description that can contain
                                instructions on how to collect metadata
                              x-go-type-skip-optional-pointer: true
                            defaultValue:
                              type: string
                              description: Default value for this metadata item
                              x-go-type-skip-optional-pointer: true
                            docsURL:
                              type: string
                              description: >-
                                URL with more information about how to locate
                                this value
                              example: https://example.com/how-to-find-subdomain
                              x-go-type-skip-optional-pointer: true
                            moduleDependencies:
                              description: >-
                                Which modules require this metadata item (see
                                ModuleDependencies for naming clarification).
                              title: Module Dependencies
                              type: object
                              additionalProperties:
                                title: Module Dependency
                                type: object
                                description: Dependency for a single module.
                                properties: {}
                        x-go-type-skip-optional-pointer: true
                      postAuthentication:
                        type: array
                        description: Metadata fetched by the connector post authentication
                        items:
                          title: Metadata Item (fetched post authentication)
                          type: object
                          required:
                            - name
                          properties:
                            name:
                              type: string
                              description: The internal identifier for the metadata field
                              x-go-type-skip-optional-pointer: true
                            moduleDependencies:
                              description: >-
                                Which modules require this metadata item (see
                                ModuleDependencies for naming clarification).
                              title: Module Dependencies
                              type: object
                              additionalProperties:
                                title: Module Dependency
                                type: object
                                description: Dependency for a single module.
                                properties: {}
                        x-go-type-skip-optional-pointer: true
                  providerAppMetadata:
                    title: Provider App Metadata
                    type: object
                    description: >-
                      Describes the provider-app-level fields that the Ampersand
                      dashboard should collect from the builder when creating a
                      ProviderApp for this provider. These descriptors tell the
                      dashboard which form fields to render; the submitted
                      values are stored in ProviderApp.metadata.
                    properties:
                      authQueryParams:
                        type: array
                        description: >-
                          Descriptors for fields stored in
                          ProviderApp.metadata.authQueryParams (e.g.,
                          optional_scope for HubSpot).
                        items:
                          title: Metadata Item (as input)
                          type: object
                          required:
                            - name
                          properties:
                            name:
                              type: string
                              description: The internal identifier for the metadata field
                              x-go-type-skip-optional-pointer: true
                            displayName:
                              type: string
                              description: The human-readable name for the field
                              x-go-type-skip-optional-pointer: true
                            prompt:
                              type: string
                              description: >-
                                Human-readable description that can contain
                                instructions on how to collect metadata
                              x-go-type-skip-optional-pointer: true
                            defaultValue:
                              type: string
                              description: Default value for this metadata item
                              x-go-type-skip-optional-pointer: true
                            docsURL:
                              type: string
                              description: >-
                                URL with more information about how to locate
                                this value
                              example: https://example.com/how-to-find-subdomain
                              x-go-type-skip-optional-pointer: true
                            moduleDependencies:
                              description: >-
                                Which modules require this metadata item (see
                                ModuleDependencies for naming clarification).
                              title: Module Dependencies
                              type: object
                              additionalProperties:
                                title: Module Dependency
                                type: object
                                description: Dependency for a single module.
                                properties: {}
                        x-go-type-skip-optional-pointer: true
                      providerParams:
                        type: array
                        description: >-
                          Descriptors for fields stored in
                          ProviderApp.metadata.providerParams (e.g.,
                          packageInstallURL for Salesforce, gcpProjectId for
                          Gmail).
                        items:
                          title: Metadata Item (as input)
                          type: object
                          required:
                            - name
                          properties:
                            name:
                              type: string
                              description: The internal identifier for the metadata field
                              x-go-type-skip-optional-pointer: true
                            displayName:
                              type: string
                              description: The human-readable name for the field
                              x-go-type-skip-optional-pointer: true
                            prompt:
                              type: string
                              description: >-
                                Human-readable description that can contain
                                instructions on how to collect metadata
                              x-go-type-skip-optional-pointer: true
                            defaultValue:
                              type: string
                              description: Default value for this metadata item
                              x-go-type-skip-optional-pointer: true
                            docsURL:
                              type: string
                              description: >-
                                URL with more information about how to locate
                                this value
                              example: https://example.com/how-to-find-subdomain
                              x-go-type-skip-optional-pointer: true
                            moduleDependencies:
                              description: >-
                                Which modules require this metadata item (see
                                ModuleDependencies for naming clarification).
                              title: Module Dependencies
                              type: object
                              additionalProperties:
                                title: Module Dependency
                                type: object
                                description: Dependency for a single module.
                                properties: {}
                        x-go-type-skip-optional-pointer: true
        default:
          description: Error
          content:
            application/problem+json:
              schema:
                title: API Problem
                type: object
                allOf:
                  - title: Problem
                    description: >
                      A Problem Details object (RFC 9457).


                      Additional properties specific to the problem type may be
                      present.
                    type: object
                    properties:
                      type:
                        type: string
                        format: uri
                        description: An absolute URI that identifies the problem type
                        default: about:blank
                      href:
                        type: string
                        format: uri
                        description: >-
                          An absolute URI that, when dereferenced, provides
                          human-readable documentation for the problem type
                          (e.g. using HTML).
                      title:
                        type: string
                        description: >-
                          A short summary of the problem type. Written in
                          English and readable for engineers (usually not suited
                          for non technical stakeholders and not localized).
                        example: Service Unavailable
                      status:
                        type: integer
                        format: int32
                        description: >-
                          The HTTP status code generated by the origin server
                          for this occurrence of the problem.
                        minimum: 400
                        maximum: 600
                        exclusiveMaximum: true
                        example: 503
                      detail:
                        type: string
                        description: >-
                          A human-readable explanation specific to this
                          occurrence of the problem
                      instance:
                        type: string
                        format: uri
                        description: >-
                          An absolute URI that identifies the specific
                          occurrence of the problem. It may or may not yield
                          further information if dereferenced.
                    example:
                      type: urn:problem-type:exampleOrganization:exampleProblem
                      href: >-
                        https://www.belgif.be/specification/rest/api-guide/#standardized-problem-types
                      title: Description of the type of problem that occurred
                      status: 400
                      detail: Description of specific occurrence of the problem
                      instance: urn:uuid:123e4567-e89b-12d3-a456-426614174000
                properties:
                  subsystem:
                    type: string
                    description: The subsystem that generated the problem
                    example: api
                  time:
                    type: string
                    format: date-time
                    description: The time the problem occurred, formatted as RFC-3339
                    example: '2024-04-22T18:55:28.456076Z'
                  requestId:
                    type: string
                    description: A unique identifier for the request, useful for debugging
                    example: 89eb1ffb-2a54-4105-aaae-7bf990f1aa69#87715
                  causes:
                    type: array
                    items:
                      type: string
                      description: >-
                        A brief description of something which caused the
                        problem
                      example: database connection failed
                    example:
                      - database connection failed
                      - database query failed
                      - unable to fetch user
                    description: >
                      A list of problems that caused this problem. This can be
                      used to represent multiple

                      root causes. There is no guaranteed ordering of the
                      causes.
                  remedy:
                    type: string
                    description: A brief description of how to resolve the problem
                    example: Shorten your input to be under 100 characters
                  supportEmail:
                    type: string
                    format: email
                    description: An email address to contact for support
                    example: support@withampersand.com
                  supportPhone:
                    type: string
                    description: A phone number to contact for support
                    example: +1-555-555-5555
                  supportUrl:
                    type: string
                    format: uri
                    description: A URL to contact for support
                    example: https://withampersand.com/support
                  retryable:
                    type: boolean
                    description: Whether the request can be retried
                    example: false
                  retryAfter:
                    type: string
                    format: date-time
                    description: >-
                      A timestamp after which the request can be retried,
                      formatted as RFC-3339
                    example: '2024-04-22T18:55:28.456076Z'
                  context:
                    type: object
                    description: Additional context for the problem
                    additionalProperties: true
                    example:
                      name: Rick Sanchez
      security: []
components:
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      name: X-Api-Key
      in: header
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````