Extole Profiles API

The Profiles API from Extole — 41 operation(s) for profiles.

OpenAPI Specification

extole-profiles-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  description: 'Consumer-to-Extole integration endpoints: consumer event submission, zone rendering, profile management, and SDK-backing operations for browser and native app environments.'
  title: Integration API - Consumer to Extole Audiences Profiles API
  version: '1.0'
servers:
- description: Production
  url: https://{brand}.extole.io
  variables:
    brand:
      default: yourcompany
      description: Your Extole client subdomain (e.g. 'mycompany' for mycompany.extole.io)
security:
- HEADER: []
- QUERY: []
- COOKIE: []
tags:
- name: Profiles
paths:
  /api/v4/events/share/status/{pollingId}:
    get:
      deprecated: true
      description: Deprecated. Returns the processing status for a prior `POST /api/v4/events/share` call identified by `pollingId`.
      operationId: shareEventStatus
      parameters:
      - in: path
        name: pollingId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSharePollingResponse'
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                expired_access_token:
                  $ref: '#/components/examples/expired_access_token'
                invalid_access_token:
                  $ref: '#/components/examples/invalid_access_token'
                jwt_authentication_error:
                  $ref: '#/components/examples/jwt_authentication_error'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
      summary: Get share event status
      tags:
      - Profiles
      x-extole-bundle: integration-consumer-to-extole
      x-extole-visibility: visible
  /api/v4/me:
    get:
      description: Returns the profile of the consumer identified by the supplied access token. The response includes the consumer's identity attributes (email, partner user id, name), custom data fields stored in `parameters`, and consent state.
      operationId: getMyProfile
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MyProfileResponse'
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                expired_access_token:
                  $ref: '#/components/examples/expired_access_token'
                invalid_access_token:
                  $ref: '#/components/examples/invalid_access_token'
                jwt_authentication_error:
                  $ref: '#/components/examples/jwt_authentication_error'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
      summary: Get the authenticated consumer profile
      tags:
      - Profiles
      x-extole-bundle: integration-consumer-to-extole
      x-extole-visibility: visible
    post:
      description: Updates identity attributes and consent fields on the profile of the consumer identified by the access token.
      operationId: updateMyProfile
      requestBody:
        content:
          application/json:
            example:
              access_token: access_token
              email: email
              first_name: first_name
              last_name: last_name
              partner_user_id: partner_user_id
              profile_picture_url: profile_picture_url
            schema:
              $ref: '#/components/schemas/PersonProfileUpdateRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PersonProfileUpdateRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_length_first_name:
                  $ref: '#/components/examples/invalid_length_first_name'
                invalid_length_last_name:
                  $ref: '#/components/examples/invalid_length_last_name'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                invalid_person_email:
                  $ref: '#/components/examples/invalid_person_email'
                invalid_person_id:
                  $ref: '#/components/examples/invalid_person_id'
                invalid_profile_picture_url:
                  $ref: '#/components/examples/invalid_profile_picture_url'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
                partner_user_id_already_defined:
                  $ref: '#/components/examples/partner_user_id_already_defined'
                partner_user_id_invalid_length:
                  $ref: '#/components/examples/partner_user_id_invalid_length'
                person_email_already_defined:
                  $ref: '#/components/examples/person_email_already_defined'
                person_not_found:
                  $ref: '#/components/examples/person_not_found'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                expired_access_token:
                  $ref: '#/components/examples/expired_access_token'
                invalid_access_token:
                  $ref: '#/components/examples/invalid_access_token'
                jwt_authentication_error:
                  $ref: '#/components/examples/jwt_authentication_error'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
      summary: Update the authenticated consumer profile
      tags:
      - Profiles
      x-extole-bundle: integration-consumer-to-extole
      x-extole-visibility: visible
  /api/v4/me/advocates:
    get:
      deprecated: true
      description: Deprecated. Returns advocates who referred the authenticated consumer.
      operationId: getAdvocateRelationships
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RelationshipResponse'
                type: array
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                expired_access_token:
                  $ref: '#/components/examples/expired_access_token'
                invalid_access_token:
                  $ref: '#/components/examples/invalid_access_token'
                jwt_authentication_error:
                  $ref: '#/components/examples/jwt_authentication_error'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
      summary: List advocate relationships
      tags:
      - Profiles
      x-extole-bundle: integration-consumer-to-extole
      x-extole-visibility: visible
  /api/v4/me/assets:
    get:
      description: Returns all assets attached to the profile of the consumer identified by the access token. Assets are binary or text files such as wallet passes, QR codes, or uploaded images.
      operationId: listAssets
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AssetResponse'
                type: array
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                expired_access_token:
                  $ref: '#/components/examples/expired_access_token'
                invalid_access_token:
                  $ref: '#/components/examples/invalid_access_token'
                jwt_authentication_error:
                  $ref: '#/components/examples/jwt_authentication_error'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
      summary: List assets for the authenticated consumer
      tags:
      - Profiles
      x-extole-bundle: integration-consumer-to-extole
      x-extole-visibility: visible
    post:
      description: Uploads a new asset and attaches it to the authenticated consumer's profile. Supply asset metadata in the `asset` form field and the file content in the `file` form field.
      operationId: createAsset
      requestBody:
        content:
          multipart/form-data:
            example:
              asset:
                data_type: PRIVATE
                name: name
                tags:
                - tag
              file:
                content: {}
                contentDisposition:
                  creationDate: '2025-10-24T09:00:00.000Z'
                  fileName: fileName
                  modificationDate: '2025-10-24T09:00:00.000Z'
                  parameters:
                    parameters_key: parameters_key
                  readDate: '2025-10-24T09:00:00.000Z'
                  size: 1
                  type: type
                entity: {}
                fileName: fileName
                formDataContentDisposition:
                  creationDate: '2025-10-24T09:00:00.000Z'
                  fileName: fileName
                  modificationDate: '2025-10-24T09:00:00.000Z'
                  name: name
                  parameters:
                    parameters_key: parameters_key
                  readDate: '2025-10-24T09:00:00.000Z'
                  size: 1
                  type: type
                headers:
                  empty: true
                  headers_key:
                  - headers_key
                mediaType:
                  parameters:
                    parameters_key: parameters_key
                  subtype: subtype
                  type: type
                  wildcardSubtype: true
                  wildcardType: true
                messageBodyWorkers: {}
                name: name
                parameterizedHeaders:
                  empty: true
                  parameterizedHeaders_key:
                  - parameters:
                      parameters_key: parameters_key
                    value: value
                parent:
                  bodyParts:
                  - contentDisposition:
                      creationDate: '2025-10-24T09:00:00.000Z'
                      fileName: fileName
                      modificationDate: '2025-10-24T09:00:00.000Z'
                      parameters:
                        parameters_key: parameters_key
                      readDate: '2025-10-24T09:00:00.000Z'
                      size: 1
                      type: type
                    entity: {}
                    headers:
                      empty: true
                      headers_key:
                      - headers_key
                    mediaType:
                      parameters:
                        parameters_key: parameters_key
                      subtype: subtype
                      type: type
                      wildcardSubtype: true
                      wildcardType: true
                    messageBodyWorkers: {}
                    parameterizedHeaders:
                      empty: true
                      parameterizedHeaders_key:
                      - parameters:
                          parameters_key: parameters_key
                        value: value
                    providers: {}
                  contentDisposition:
                    creationDate: '2025-10-24T09:00:00.000Z'
                    fileName: fileName
                    modificationDate: '2025-10-24T09:00:00.000Z'
                    parameters:
                      parameters_key: parameters_key
                    readDate: '2025-10-24T09:00:00.000Z'
                    size: 1
                    type: type
                  entity: {}
                  headers:
                    empty: true
                    headers_key:
                    - headers_key
                  mediaType:
                    parameters:
                      parameters_key: parameters_key
                    subtype: subtype
                    type: type
                    wildcardSubtype: true
                    wildcardType: true
                  messageBodyWorkers: {}
                  parameterizedHeaders:
                    empty: true
                    parameterizedHeaders_key:
                    - parameters:
                        parameters_key: parameters_key
                      value: value
                  providers: {}
                providers: {}
                simple: true
                value: value
            schema:
              properties:
                asset:
                  $ref: '#/components/schemas/AssetRequest'
                file:
                  $ref: '#/components/schemas/FormDataBodyPart'
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetResponse'
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                asset_limit_exceeded:
                  $ref: '#/components/examples/asset_limit_exceeded'
                asset_mime_type_invalid:
                  $ref: '#/components/examples/asset_mime_type_invalid'
                asset_size_invalid:
                  $ref: '#/components/examples/asset_size_invalid'
                binding_error:
                  $ref: '#/components/examples/binding_error'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                expired_access_token:
                  $ref: '#/components/examples/expired_access_token'
                invalid_access_token:
                  $ref: '#/components/examples/invalid_access_token'
                jwt_authentication_error:
                  $ref: '#/components/examples/jwt_authentication_error'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
      summary: Create an asset for the authenticated consumer
      tags:
      - Profiles
      x-extole-bundle: integration-consumer-to-extole
      x-extole-visibility: visible
  /api/v4/me/assets/download:
    get:
      description: Streams the binary or text content of the asset matching the `name` query parameter on the authenticated consumer's profile. Returns HTTP 302 if the content is hosted at a remote URL; returns HTTP 200 with the raw content otherwise.
      operationId: downloadAssetByName
      parameters:
      - in: query
        name: name
        schema:
          type: string
      responses:
        '200':
          content:
            '*/*': {}
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                asset_content_not_downloadable:
                  $ref: '#/components/examples/asset_content_not_downloadable'
                asset_not_found:
                  $ref: '#/components/examples/asset_not_found'
                binding_error:
                  $ref: '#/components/examples/binding_error'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                expired_access_token:
                  $ref: '#/components/examples/expired_access_token'
                invalid_access_token:
                  $ref: '#/components/examples/invalid_access_token'
                jwt_authentication_error:
                  $ref: '#/components/examples/jwt_authentication_error'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
      summary: Download an asset by name
      tags:
      - Profiles
      x-extole-bundle: integration-consumer-to-extole
      x-extole-visibility: visible
  /api/v4/me/assets/{assetId}:
    get:
      description: Returns metadata for the asset identified by `assetId` on the authenticated consumer's profile. Use the download endpoints to retrieve the asset content.
      operationId: readAsset
      parameters:
      - in: path
        name: assetId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetResponse'
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                asset_content_not_downloadable:
                  $ref: '#/components/examples/asset_content_not_downloadable'
                asset_not_found:
                  $ref: '#/components/examples/asset_not_found'
                binding_error:
                  $ref: '#/components/examples/binding_error'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                expired_access_token:
                  $ref: '#/components/examples/expired_access_token'
                invalid_access_token:
                  $ref: '#/components/examples/invalid_access_token'
                jwt_authentication_error:
                  $ref: '#/components/examples/jwt_authentication_error'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
      summary: Get an asset by ID
      tags:
      - Profiles
      x-extole-bundle: integration-consumer-to-extole
      x-extole-visibility: visible
    delete:
      description: Removes the asset identified by `assetId` from the authenticated consumer's profile and returns the deleted asset metadata.
      operationId: deleteAsset
      parameters:
      - in: path
        name: assetId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetResponse'
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                asset_content_not_downloada

# --- truncated at 32 KB (247 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/extole/refs/heads/main/openapi/extole-profiles-api-openapi.yml