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

# Update a project

> This endpoint updates a project's name, logo, and config



## OpenAPI

````yaml put /v1/projects/{projectID}
openapi: 3.0.0
info:
  contact:
    email: support@getconvoy.io
    name: Convoy Support
    url: https://getconvoy.io/docs
  description: >-
    Convoy is a fast and secure webhooks proxy. This document contains
    datastore's API specification.
  license:
    name: Mozilla Public License 2.0
    url: https://www.mozilla.org/en-US/MPL/2.0/
  termsOfService: https://getconvoy.io/terms
  title: Convoy API Reference
  version: 26.3.5
servers:
  - url: https://us.getconvoy.cloud/api
    description: US Region
  - url: https://eu.getconvoy.cloud/api
    description: EU Region
security: []
tags:
  - description: Subscription related APIs
    name: Subscriptions
  - description: Endpoint related APIs
    name: Endpoints
  - description: Event related APIs
    name: Events
  - description: Source related APIs
    name: Sources
  - description: EventDelivery related APIs
    name: Event Deliveries
  - description: Delivery Attempt related APIs
    name: Delivery Attempts
  - description: Portal Links related APIs
    name: Portal Links
  - description: Meta Events related APIs
    name: Meta Events
  - description: Event Types related APIs
    name: EventTypes
  - description: Filters related APIs
    name: Filters
  - description: Onboard related APIs
    name: Onboard
paths:
  /v1/projects/{projectID}:
    put:
      tags:
        - Projects
      summary: Update a project
      description: This endpoint updates a project's name, logo, and config
      operationId: UpdateProject
      parameters:
        - description: Project ID
          in: path
          name: projectID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/models.UpdateProject'
        description: Project Details
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/util.ServerResponse'
                  - properties:
                      data:
                        $ref: '#/components/schemas/models.ProjectResponse'
                    type: object
          description: Accepted
        '400':
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/util.ServerResponse'
                  - properties:
                      data:
                        $ref: '#/components/schemas/handlers.Stub'
                    type: object
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/util.ServerResponse'
                  - properties:
                      data:
                        $ref: '#/components/schemas/handlers.Stub'
                    type: object
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/util.ServerResponse'
                  - properties:
                      data:
                        $ref: '#/components/schemas/handlers.Stub'
                    type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/util.ServerResponse'
                  - properties:
                      data:
                        $ref: '#/components/schemas/handlers.Stub'
                    type: object
          description: Not Found
      security:
        - ApiKeyAuth: []
components:
  schemas:
    models.UpdateProject:
      properties:
        config:
          allOf:
            - $ref: '#/components/schemas/models.ProjectConfig'
          description: Project Config
        logo_url:
          type: string
        name:
          description: Project Name
          type: string
      type: object
    util.ServerResponse:
      properties:
        message:
          type: string
        status:
          type: boolean
      type: object
    models.ProjectResponse:
      properties:
        config:
          $ref: '#/components/schemas/datastore.ProjectConfig'
        created_at:
          type: string
        deleted_at:
          type: string
        logo_url:
          type: string
        name:
          type: string
        organisation_id:
          type: string
        retained_events:
          type: integer
        statistics:
          $ref: '#/components/schemas/datastore.ProjectStatistics'
        type:
          $ref: '#/components/schemas/datastore.ProjectType'
        uid:
          type: string
        updated_at:
          type: string
      type: object
    handlers.Stub:
      type: object
    models.ProjectConfig:
      properties:
        add_event_id_trace_headers:
          description: >-
            Controls of the Event ID and Event Delivery ID Headers are added to
            the request when events are dispatched to endpoints
          type: boolean
        circuit_breaker:
          allOf:
            - $ref: '#/components/schemas/datastore.CircuitBreakerConfiguration'
          description: >-
            CircuitBreaker is used to configure the project's circuit breaker
            settings
        disable_endpoint:
          description: >-
            Controls if the project will disable and endpoint after the retry
            threshold for an event is reached
          type: boolean
        max_payload_read_size:
          description: >-
            Specifies how many bytes and incoming project should read from the
            ingest request, and how many bytes an outgoing project should from
            the response of your endpoints

            Defaults to 50KB.
          type: integer
        meta_event:
          allOf:
            - $ref: '#/components/schemas/models.MetaEventConfiguration'
          description: MetaEvent is used to configure the project's meta events
        multiple_endpoint_subscriptions:
          description: >-
            MultipleEndpointSubscriptions is used to configure if multiple
            subscriptions

            can be created for the endpoint in a project
          type: boolean
        ratelimit:
          allOf:
            - $ref: '#/components/schemas/models.RateLimitConfiguration'
          description: >-
            RateLimit is used to configure the projects rate limiting config
            values
        replay_attacks_prevention_enabled:
          description: >-
            Controls if your project will add a timestamp to it's webhook
            signature header to prevent a replay attack, See this blog
            post[https://getconvoy.io/blog/generating-stripe-like-webhook-signatures]
            for more]
          type: boolean
        search_policy:
          description: Specify the interval in hours for which the event tokenizer runs
          type: string
        signature:
          allOf:
            - $ref: '#/components/schemas/models.SignatureConfiguration'
          description: >-
            Signature is used to configure the project's signature header
            versions
        ssl:
          allOf:
            - $ref: '#/components/schemas/models.SSLConfiguration'
          description: >-
            SSL is used to configure the project's endpoint ssl enforcement
            rules
        strategy:
          allOf:
            - $ref: '#/components/schemas/models.StrategyConfiguration'
          description: >-
            Strategy is used to configure the project's retry strategies for
            failing events.
      type: object
    datastore.ProjectConfig:
      properties:
        add_event_id_trace_headers:
          type: boolean
        circuit_breaker:
          $ref: '#/components/schemas/datastore.CircuitBreakerConfiguration'
        disable_endpoint:
          type: boolean
        max_payload_read_size:
          type: integer
        meta_event:
          $ref: '#/components/schemas/datastore.MetaEventConfiguration'
        multiple_endpoint_subscriptions:
          type: boolean
        ratelimit:
          $ref: '#/components/schemas/datastore.RateLimitConfiguration'
        replay_attacks_prevention_enabled:
          type: boolean
        search_policy:
          type: string
        signature:
          $ref: '#/components/schemas/datastore.SignatureConfiguration'
        ssl:
          $ref: '#/components/schemas/datastore.SSLConfiguration'
        strategy:
          $ref: '#/components/schemas/datastore.StrategyConfiguration'
      type: object
    datastore.ProjectStatistics:
      properties:
        endpoints_exist:
          type: boolean
        events_exist:
          type: boolean
        sources_exist:
          type: boolean
        subscriptions_exist:
          type: boolean
      type: object
    datastore.ProjectType:
      enum:
        - outgoing
        - incoming
      type: string
      x-enum-varnames:
        - OutgoingProject
        - IncomingProject
    datastore.CircuitBreakerConfiguration:
      properties:
        consecutive_failure_threshold:
          type: integer
        error_timeout:
          type: integer
        failure_threshold:
          type: integer
        minimum_request_count:
          type: integer
        observability_window:
          type: integer
        sample_rate:
          type: integer
        success_threshold:
          type: integer
      type: object
    models.MetaEventConfiguration:
      properties:
        event_type:
          items:
            type: string
          type: array
        is_enabled:
          type: boolean
        secret:
          type: string
        type:
          type: string
        url:
          type: string
      type: object
    models.RateLimitConfiguration:
      properties:
        count:
          type: integer
        duration:
          type: integer
      type: object
    models.SignatureConfiguration:
      properties:
        header:
          $ref: '#/components/schemas/config.SignatureHeaderProvider'
        versions:
          items:
            $ref: '#/components/schemas/models.SignatureVersion'
          type: array
      type: object
    models.SSLConfiguration:
      properties:
        enforce_secure_endpoints:
          type: boolean
      type: object
    models.StrategyConfiguration:
      properties:
        duration:
          type: integer
        retry_count:
          type: integer
        type:
          type: string
      type: object
    datastore.MetaEventConfiguration:
      properties:
        event_type:
          items:
            type: string
          type: array
        is_enabled:
          type: boolean
        pub_sub:
          $ref: '#/components/schemas/datastore.PubSubConfig'
        secret:
          type: string
        type:
          $ref: '#/components/schemas/datastore.MetaEventType'
        url:
          type: string
      type: object
    datastore.RateLimitConfiguration:
      properties:
        count:
          type: integer
        duration:
          type: integer
      type: object
    datastore.SignatureConfiguration:
      properties:
        header:
          $ref: '#/components/schemas/config.SignatureHeaderProvider'
        versions:
          items:
            $ref: '#/components/schemas/datastore.SignatureVersion'
          type: array
      type: object
    datastore.SSLConfiguration:
      properties:
        enforce_secure_endpoints:
          type: boolean
      type: object
    datastore.StrategyConfiguration:
      properties:
        duration:
          type: integer
        retry_count:
          type: integer
        type:
          $ref: '#/components/schemas/datastore.StrategyProvider'
      type: object
    config.SignatureHeaderProvider:
      enum:
        - X-Convoy-Signature
      type: string
      x-enum-varnames:
        - DefaultSignatureHeader
    models.SignatureVersion:
      properties:
        created_at:
          type: string
        encoding:
          type: string
        hash:
          type: string
        uid:
          type: string
      type: object
    datastore.PubSubConfig:
      properties:
        amqp:
          $ref: '#/components/schemas/datastore.AmqpPubSubConfig'
        google:
          $ref: '#/components/schemas/datastore.GooglePubSubConfig'
        kafka:
          $ref: '#/components/schemas/datastore.KafkaPubSubConfig'
        sqs:
          $ref: '#/components/schemas/datastore.SQSPubSubConfig'
        type:
          $ref: '#/components/schemas/datastore.PubSubType'
        workers:
          type: integer
      type: object
    datastore.MetaEventType:
      enum:
        - http
        - pub_sub
      type: string
      x-enum-varnames:
        - HTTPMetaEvent
        - PubSubMetaEvent
    datastore.SignatureVersion:
      properties:
        created_at:
          type: string
        encoding:
          $ref: '#/components/schemas/datastore.EncodingType'
        hash:
          type: string
        uid:
          type: string
      type: object
    datastore.StrategyProvider:
      enum:
        - linear
        - exponential
      type: string
      x-enum-varnames:
        - LinearStrategyProvider
        - ExponentialStrategyProvider
    datastore.AmqpPubSubConfig:
      properties:
        host:
          type: string
        auth:
          $ref: '#/components/schemas/datastore.AmqpCredentials'
        bindedExchange:
          type: string
        deadLetterExchange:
          type: string
        port:
          type: string
        queue:
          type: string
        routingKey:
          type: string
        schema:
          type: string
        vhost:
          type: string
      type: object
    datastore.GooglePubSubConfig:
      properties:
        project_id:
          type: string
        service_account:
          items:
            type: integer
          type: array
        subscription_id:
          type: string
      type: object
    datastore.KafkaPubSubConfig:
      properties:
        auth:
          $ref: '#/components/schemas/datastore.KafkaAuth'
        brokers:
          items:
            type: string
          type: array
        consumer_group_id:
          type: string
        topic_name:
          type: string
      type: object
    datastore.SQSPubSubConfig:
      properties:
        access_key_id:
          type: string
        default_region:
          type: string
        endpoint:
          description: 'Optional: for LocalStack testing'
          type: string
        queue_name:
          type: string
        secret_key:
          type: string
      type: object
    datastore.PubSubType:
      enum:
        - sqs
        - google
        - kafka
        - amqp
      type: string
      x-enum-varnames:
        - SqsPubSub
        - GooglePubSub
        - KafkaPubSub
        - AmqpPubSub
    datastore.EncodingType:
      enum:
        - base64
        - hex
      type: string
      x-enum-varnames:
        - Base64Encoding
        - HexEncoding
    datastore.AmqpCredentials:
      properties:
        password:
          type: string
        user:
          type: string
      type: object
    datastore.KafkaAuth:
      properties:
        hash:
          type: string
        password:
          type: string
        tls:
          type: boolean
        type:
          type: string
        username:
          type: string
      type: object
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: Authorization
      type: apiKey

````