openapi: 3.2.0 info: description: API reference for the Adobe Experience Platform Edge Network API. version: 1.0.0 title: Adobe Experience Platform Edge Network Profile updates API servers: - url: https://edge.adobedc.net/ee/ description: Production environment tags: - name: Profile updates description: Collect specific data for Platform profile(s) paths: /v1/privacy/set-consent: post: tags: - Profile updates summary: Set consent (non-authenticated) description: Manage explicit consent for marketing activities. All consent preferences previously saved in the user's profile(s) are overwritten through this operation. parameters: - $ref: '#/components/parameters/configId' - $ref: '#/components/parameters/requestId' - $ref: '#/components/parameters/requestIdHeader' requestBody: content: application/json: schema: $ref: '#/components/schemas/ConsentReplaceRequest' responses: 200: description: Successfully processed. Consent preferences are successfully saved for the supplied profile(s). content: application/json: schema: $ref: '#/components/schemas/InteractResponse' 400: description: Invalid input. 500: description: Internal error. components: schemas: ConsentLevel: description: "Consent Level selection:\n * `not_provided`: Not provided\n * `pending`: Pending verification\n * `in`: Opt-in\n * `out`: Opt-out\n" type: string enum: - not_provided - pending - in - out AdobeConsentV1: description: Consent level selection for each purpose or global (general) allOf: - $ref: '#/components/schemas/AdobeConsent' - properties: standard: type: string enum: - Adobe version: type: string enum: - '1.0' value: type: object properties: general: $ref: '#/components/schemas/ConsentLevel' IABConsent: description: Consent level selection for each purpose or global (general) type: object allOf: - $ref: '#/components/schemas/AdobeConsent' - properties: standard: type: string enum: - IAB TCF version: type: string enum: - '2.0' value: type: string ConsentStandard: description: Consent selection for the given standard type: object properties: standard: type: string version: type: string value: type: object discriminator: propertyName: standard mapping: Adobe: AdobeConsent IAB TCF: IABConsent required: - type - version - value IdentityItem: description: 'Identity is used to clearly distinguish people that are interacting with digital experiences. For more details, see [IdentityItem Schema](https://github.com/adobe/xdm/blob/master/docs/reference/context/identityitem.schema.md). ' type: object properties: id: description: Identity of the consumer in the related namespace. type: string authenticatedState: $ref: '#/components/schemas/AuthenticatedState' primary: description: Indicates this identity is the preferred identity. Is used as a hint to help systems better organize how identities are queried. type: boolean default: false required: - id AuthenticatedState: description: The state this identity is authenticated as for this observed ExperienceEvent. type: string enum: - ambiguous - authenticated - loggedOut default: ambiguous IdentityMap: description: 'Defines a map containing a set of end user identities, keyed on either namespace integration code or the namespace ID of the identity. Within each namespace, the identity is unique. The values of the map are an array, meaning that more than one identity of each namespace may be carried. For more details, see [IdentityMap Schema](https://github.com/adobe/xdm/blob/master/docs/reference/context/identitymap.schema.md). ' type: object additionalProperties: type: array items: $ref: '#/components/schemas/IdentityItem' example: email: - id: john.doe@example.com authenticatedState: authenticated AdobeConsent: type: object allOf: - $ref: '#/components/schemas/ConsentStandard' discriminator: propertyName: version mapping: '1.0': '#/components/schemas/AdobeConsentV1' '2.0': '#/components/schemas/AdobeConsentV2' EventHandle: description: Details and results for a given event type: object properties: eventIndex: description: Encodes the event to which this handle is attached as the index in the events array in EdgeRequest type: integer type: type: string payload: type: array items: type: object additionalProperties: true example: eventIndex: 0 type: state:store payload: - key: kndctr_53A16ACB5CC1D3760A495C99_AdobeOrg_optout value: '' maxAge: 7200 required: - type - payload MarketingConsentChoices: description: Consent level selection for marketing activities type: object properties: preferred: type: string description: "User's preferred channel for receiving communications\n * `email`: Email\n * `push`: Push Notifications\n * `inApp`: In-app Messages\n * `sms`: SMS (Text Messages)\n * `phone`: Phone Calls\n * `phyMail`: Physical Mail\n * `inVehicle`: In-vehicle Messages\n * `inHome`: In-home Messages\n * `iot`: IoT Messages\n * `social`: Social Media\n * `other`: Other\n * `none`: No Preferred Channel\n * `unknown`: Unknown\n" enum: - email - push - inApp - sms - phone - phyMail - inVehicle - inHome - iot - social - other - none - unknown any: $ref: '#/components/schemas/MarketingConsentChoice' email: $ref: '#/components/schemas/MarketingConsentChoice' push: $ref: '#/components/schemas/MarketingConsentChoice' sms: $ref: '#/components/schemas/MarketingConsentChoice' RequestMetadata: description: Metadata passed to solutions and to the API itself with possibility of overriding at event level type: object properties: state: $ref: '#/components/schemas/StateMetadata' ConsentChoice: description: "Consent level selection:\n * `y`: Yes\n * `n`: No\n * `p`: Pending verification\n * `u`: Unknown\n * `li`: Legitimate interest\n * `ct`: Required by Contract\n * `cp`: Compliance / Legal obligation\n * `vi`: Vital interest (individual)\n * `pi`: Public interest\n" type: object properties: val: type: string enum: - y - n - p - u - li - ct - cp - vi - pi AdobeConsentChoices: type: object properties: collect: $ref: '#/components/schemas/ConsentChoice' share: $ref: '#/components/schemas/ConsentChoice' adID: $ref: '#/components/schemas/ConsentChoice' personalize: $ref: '#/components/schemas/PersonalizationConsentChoices' marketing: $ref: '#/components/schemas/MarketingConsentChoices' metadata: $ref: '#/components/schemas/ConsentMetadata' AdobeConsentV2: description: Consent level selection for each purpose or global (general) type: object allOf: - $ref: '#/components/schemas/AdobeConsent' - properties: standard: type: string enum: - Adobe version: type: string enum: - '2.0' value: $ref: '#/components/schemas/AdobeConsentChoices' MarketingConsentChoice: allOf: - $ref: '#/components/schemas/ConsentChoice' - properties: reason: description: Reason for opting out maxLength: 16 type: string StateMetadata: description: Client side stored information type: object properties: entries: type: array items: type: object properties: key: type: string value: type: string scope: description: 'Differentiate between state that could be shared across applications or web properties (e.g. third-party cookies) and application/web property specific state (e.g. first-party cookies). ' type: string enum: - APPLICATION - DEVICE domain: description: The APEX domain that will be used when materializing client-side state in 1st party cookies. type: string example: entries: [] ConsentMetadata: type: object properties: time: type: string format: date-time description: Timestamp of this complete set of user consents and preferences. This value should conform to ISO 8601 standard. example: '2004-10-23T12:00:00-06:00' PersonalizationConsentChoices: description: Consent level selection for personalization type: object properties: content: $ref: '#/components/schemas/ConsentChoice' ConsentReplaceRequest: description: Replace the explicit user consent for Marketing Activities. type: object properties: identityMap: $ref: '#/components/schemas/IdentityMap' consent: type: array items: anyOf: - $ref: '#/components/schemas/AdobeConsentV1' - $ref: '#/components/schemas/AdobeConsentV2' - $ref: '#/components/schemas/IABConsent' meta: $ref: '#/components/schemas/RequestMetadata' InteractResponse: type: object properties: requestId: description: The entropy-augmented identifier for this request, in the format `-` (for example, `708e4f90-5bff-41c5-8f4b-6c15bab76b11-f46e48eb52594815`). If a requestId was supplied in the request it is used as the prefix; otherwise a generated UUID is used. This value always differs from any caller-supplied requestId. Match on the prefix when correlating requests to responses. type: string handle: description: Contains one or multiple handles for each received event type: array items: $ref: '#/components/schemas/EventHandle' required: - requestId - handle parameters: requestIdHeader: in: header name: x-request-id schema: type: string format: uuid description: 'Alternate way to supply an external request tracing ID (equivalent to the requestId query parameter). The Edge Network always appends a 16-character hex entropy suffix to the provided value (or generates a new UUID if none is provided) to guarantee uniqueness across concurrent requests. The returned identifier uses the format `-` (for example, `708e4f90-5bff-41c5-8f4b-6c15bab76b11-f46e48eb52594815`). Because the entropy suffix is always added, the value in the response always differs from the value supplied in the request. When correlating requests to responses, match on the prefix of the returned requestId rather than an exact string match. ' required: false requestId: in: query name: requestId schema: type: string format: uuid description: 'Provide an external request tracing ID; it can also be supplied in the x-request-id header. The Edge Network always appends a 16-character hex entropy suffix to the provided value (or generates a new UUID if none is provided) to guarantee uniqueness across concurrent requests. The returned identifier uses the format `-` (for example, `708e4f90-5bff-41c5-8f4b-6c15bab76b11-f46e48eb52594815`). Because the entropy suffix is always added, the value in the response always differs from the value supplied in the request. When correlating requests to responses, match on the prefix of the returned requestId rather than an exact string match. ' required: false configId: in: query name: configId schema: type: string default: '8888888' description: The datastream ID. The v1 APIs use configId instead of datastreamId. required: true securitySchemes: ApiKeyAuth: type: apiKey in: header name: x-api-key description: API Access Key IMSAuth: type: http scheme: bearer bearerFormat: JWT description: Should be a valid IMS token for authenticating with the Edge Gateway