import stampit from 'stampit'; import {Meta, Model} from './base'; import _ from 'lodash'; import {BaseQuerySet, Create, BulkCreate, Get, Delete, GetOrCreate, List} from '../querySet'; const InstanceInvitationQuerySet = stampit().compose( BaseQuerySet, Create, BulkCreate, Get, GetOrCreate, Delete, List, Delete ).methods({ resend(properties = {}) { this.properties = _.assign({}, this.properties, properties); this.method = 'POST'; this.endpoint = 'resend'; return this; } }); const InstanceInvitationMeta = Meta({ name: 'instanceInvitation', pluralName: 'instanceInvitations', endpoints: { 'detail': { 'methods': ['delete', 'get'], 'path': '/v1.1/instances/{instanceName}/invitations/{id}/' }, 'list': { 'methods': ['post', 'get'], 'path': '/v1.1/instances/{instanceName}/invitations/' }, 'resend': { 'methods': ['post'], 'path': '/v1.1/instances/{instanceName}/invitations/{id}/resend/' } } }); const InstanceInvitationConstraints = { email: { presence: true, email: true }, role: { presence: true, inclusion: ['full', 'write', 'read'] }, instanceName: { presence: true, length: { minimum: 5 } } }; /** * OO wrapper around instance invitations {@link # endpoint}. * @constructor * @type {InstanceInvitation} * @property {String} email * @property {String} role * @property {String} [key = null] * @property {String} [inviter = null] * @property {String} [status = null] * @property {Number} [id = null] * @property {String} [description = null] * @property {String} [links = {}] * @property {Date} [created_at = null] * @property {Date} [updated_at = null] */ const InstanceInvitation = stampit() .compose(Model) .setMeta(InstanceInvitationMeta) .methods({ resend() { const meta = this.getMeta(); const path = meta.resolveEndpointPath('resend', this); return this.makeRequest('POST', path); } }) .setQuerySet(InstanceInvitationQuerySet) .setConstraints(InstanceInvitationConstraints); export default InstanceInvitation;