Zaius Relationships schema API

The Relationships schema API from Zaius — 2 operation(s) for relationships schema.

OpenAPI Specification

zaius-relationships-schema-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Advanced Compliance Relationships schema API
  description: Advanced
  version: v3
servers:
- url: https://api.us1.odp.optimizely.com/v3
  description: United States
- url: https://api.eu1.odp.optimizely.com/v3
  description: Europe
- url: https://api.au1.odp.optimizely.com/v3
  description: Asia-Pacific
security:
- x-api-key: []
tags:
- name: Relationships schema
paths:
  /schema/objects/{object_name}/relations:
    post:
      tags:
      - Relationships schema
      summary: Create relationship
      description: Create a relation between objects in Optimizely Data Platform (ODP).
      operationId: create-relationship
      parameters:
      - name: object_name
        in: path
        required: true
        schema:
          type: string
        description: The name of the object where you want to create the relationship.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Relation'
            examples:
              Example Payload:
                description: Example Payload
                value:
                  name: relation_name
                  display_name: Relation Display Name
                  public_read: false
                  child_object: child_object_name
                  join_fields:
                  - parent: child_id
                    child: child_id
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Object'
              example:
                name: my_relation
                display_name: My Relationship
                child_object: child
                join_fields:
                - parent: child_id
                  child: child_id
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                title: Bad Request
                status: 400
                timestamp: '2018-08-14T12:23:04.500Z'
                detail:
                  invalids:
                  - field: join_fields[0].parent
                    reason: does not match child data type
        '403':
          description: Forbidden
          content:
            application/json:
              example: '{"message": "Forbidden"}'
    get:
      tags:
      - Relationships schema
      summary: List relations
      description: List the details of all relationships of a specific object.
      operationId: list-relations
      parameters:
      - name: object_name
        in: path
        required: true
        schema:
          type: string
        description: The name of the object.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Relation'
              example:
              - name: my_relation
                display_name: My Relationship
                child_object: child
                join_fields:
                - parent: child_id
                  child: child_id
              - name: my_relation2
                display_name: My Relationship 2
                child_object: child
                join_fields:
                - parent: child_id
                  child: child_id
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                example: {}
        '403':
          description: Forbidden
          content:
            application/json:
              example: '{"message": "Forbidden"}'
  /schema/objects/{object_name}/relations/{relation_name}:
    get:
      tags:
      - Relationships schema
      summary: Get relation
      description: List the details of a single relationship of a specific object.
      operationId: get-relation
      parameters:
      - name: relation_name
        in: path
        required: true
        schema:
          type: string
        description: The name of the relationship.
      - name: object_name
        in: path
        required: true
        schema:
          type: string
        description: The name of the object.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Relation'
              example:
                name: my_relation
                display_name: My Relationship
                child_object: target_object_name
                join_fields:
                - parent: child_id
                  child: child_id
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                example: {}
        '403':
          description: Forbidden
          content:
            application/json:
              example: '{"message": "Forbidden"}'
components:
  schemas:
    Object:
      required:
      - name
      - display_name
      - public_read
      - alias
      - fields
      type: object
      properties:
        name:
          type: string
          description: the plural name of the object (for example, tickets)
        display_name:
          type: string
          description: the human-readable name of the object (for example, Tickets)
        public_read:
          type: boolean
          description: enable access with the API public key
          default: false
        alias:
          type: string
          description: the singular name of the object (for example, ticket)
        fields:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                example: object_id
              display_name:
                type: string
                example: New Object Identifier
              type:
                type: string
                example: string
              primary:
                type: boolean
                example: true
                default: true
          description: an array of fields objects
        relations:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                example: my_relation
              display_name:
                type: string
                example: My Relationship
              child_object:
                type: string
                example: child
              join_fields:
                type: array
                items:
                  type: object
                  properties:
                    parent:
                      type: string
                      example: child_id
                    child:
                      type: string
                      example: child_id
          description: an array of relations objects
    Relation:
      required:
      - child_object
      - name
      - display_name
      - public_read
      - fields
      type: object
      properties:
        child_object:
          type: string
          example: child
          description: The name of the child object.
        name:
          type: string
          example: relation_name
          description: The name of the relationship (for example, ticket).
        display_name:
          type: string
          example: Relation Display Name
          description: The human-readable name of the field (for example, Ticket).
        public_read:
          type: string
          example: false
          default: false
          description: Enable access with the API public key.
        join_fields:
          type: array
          items:
            required:
            - parent
            type: object
            properties:
              parent:
                type: string
                example: id
                description: The name of the object that links to the child object (for example, id).
              child:
                type: string
                example: child_id
                description: The name of the child object that links to this object (for example, ticket_id).
    Error:
      type: object
      properties:
        title:
          type: string
          example: Bad Request
        status:
          type: integer
          example: 400
          default: 0
        timestamp:
          type: string
          example: '2018-08-07T13:44:17.659Z'
        detail:
          type: object
          properties:
            invalids:
              type: array
              items:
                type: object
                properties:
                  field:
                    type: string
                    example: name
                  reason:
                    type: string
                    example: already used by another object
  securitySchemes:
    x-api-key:
      type: apiKey
      name: x-api-key
      in: header
x-readme:
  explorer-enabled: true
  proxy-enabled: true