# Ajouter une attribution personnalisée

> Ajoute des données d'attribution marketing personnalisées à un profil.

## OpenAPI

```yaml
/api-specs/web-api.yaml post /api/v2/web-api/attribution/
openapi: 3.1.0
info:
  title: Adapty Web API
  version: 1.0.0
  description: |
    L'API Web Adapty vous permet d'intégrer la plateforme de gestion des abonnements 
    Adapty dans vos applications web. Cette API fournit des endpoints pour récupérer des paywalls, 
    enregistrer des vues de paywall et ajouter des données d'attribution.
servers:
  - url: https://api.adapty.io
    description: Serveur de production
security:
  - apikeyAuth: []
paths:
  /api/v2/web-api/attribution/:
    post:
      summary: Ajouter une attribution personnalisée
      description: Ajoute des données d'attribution marketing personnalisées à un profil.
      operationId: addAttribution
      security:
        - apikeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddAttributionRequest"
            examples:
              basic:
                summary: Données d'attribution simples
                value:
                  status: organic
                  attribution_user_id: attribution_user_id_value
                  channel: marketing_channel_value
                  campaign: campaign_name_value
                  ad_group: ad_group_name_value
                  ad_set: ad_set_name_value
                  creative: creative_name_value
                  customer_user_id: user123
      responses:
        "201":
          description: L'attribution a été ajoutée avec succès au profil. Le corps de la réponse est vide.
          content:
            application/json:
              schema:
                type: object
                description: Corps de réponse vide
        "400":
          description: Requête incorrecte
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InvalidEnumerationMemberError"
        "401":
          description: Non autorisé
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UnauthorizedError"
        "404":
          description: Introuvable
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProfileNotFoundError"
components:
  schemas:
    AddAttributionRequest:
      type: object
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - organic
            - non_organic
            - unknown
          description: Indique si l'attribution est organique ou non organique.
          example: organic
        attribution_user_id:
          type: string
          description: Identifiant attribué à l'utilisateur par la source d'attribution.
          example: attribution_user_id_value
        channel:
          type: string
          description: Nom du canal marketing.
          example: marketing_channel_value
        campaign:
          type: string
          description: Nom de la campagne marketing.
          example: campaign_name_value
        ad_group:
          type: string
          description: Groupe d'annonces de l'attribution.
          example: ad_group_name_value
        ad_set:
          type: string
          description: Ensemble d'annonces de l'attribution.
          example: ad_set_name_value
        creative:
          type: string
          description: Mot-clé créatif de l'attribution.
          example: creative_name_value
        customer_user_id:
          type: string
          description: Identifiant utilisateur que vous utilisez dans votre application pour identifier l'utilisateur, le cas échéant. Il peut s'agir par exemple de l'UUID, de l'e-mail ou de tout autre identifiant de l'utilisateur. Null si vous ne l'avez pas défini. Soit `customer_user_id`, soit `profile_id` est requis.
          example: user123
        profile_id:
          type: string
          description: Identifiant d'un utilisateur dans Adapty. Vous pouvez le trouver dans le champ **Adapty ID** du profil dans l'Adapty Dashboard. Soit `customer_user_id`, soit `profile_id` est requis.
          example: 3286abd3-48b0-4e9c-a5f6-ac0a006804a6
    InvalidEnumerationMemberError:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              source:
                type: string
              errors:
                type: array
                items:
                  type: string
        error_code:
          type: string
        status_code:
          type: integer
    UnauthorizedError:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              source:
                type: string
              errors:
                type: array
                items:
                  type: string
        error_code:
          type: string
        status_code:
          type: integer
    ProfileNotFoundError:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              source:
                type: string
              errors:
                type: array
                items:
                  type: string
        error_code:
          type: string
        status_code:
          type: integer
  securitySchemes:
    apikeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: |
        Les requêtes API doivent être authentifiées avec votre clé API publique dans l'en-tête **Authorization** 
        avec la valeur `Api-Key {votre_clé_api_publique}`, par exemple 
        `Api-Key public_live_...`. Vous trouverez cette clé dans l'Adapty Dashboard -> 
        **App Settings** -> onglet **General** -> section **API keys**.
```
