Class OrganizationsResource

Hierarchy

  • Resource
    • OrganizationsResource

Constructors

Methods

  • Las organizaciones que cuelgan de ésta.

    Parameters

    Returns Promise<
        Paginated<
            {
                _id: string;
                actual_asigned?: {
                    accounts: number;
                    ai_credits?: number;
                    artificial_inteligence?: boolean;
                    integrations: number;
                    publications: number;
                    space: number;
                    stats?: boolean;
                    twitter_credits?: number;
                    users: number;
                    whatsapp?: boolean;
                };
                actual_plan?: {
                    accounts: number;
                    ai_credits?: number;
                    artificial_inteligence?: boolean;
                    integrations: number;
                    publications: number;
                    space: number;
                    stats?: boolean;
                    twitter_credits?: number;
                    users: number;
                    whatsapp?: boolean;
                };
                actual_use?: {
                    accounts: number;
                    ai_credits?: number;
                    artificial_inteligence?: boolean;
                    integrations: number;
                    publications: number;
                    space: number;
                    stats?: boolean;
                    twitter_credits?: number;
                    users: number;
                    whatsapp?: boolean;
                };
                ai_context?: {
                    audience?: string;
                    avoid?: string;
                    blog_url?: string;
                    brand_name?: string;
                    default_tone?: string;
                    description?: string;
                    keywords?: string[];
                    notes?: string;
                    products?: string;
                    sector?: string;
                    shop_url?: string;
                    social_urls?: string[];
                    value_proposition?: string;
                    website?: string;
                };
                creation_date: string;
                id_client: string;
                name: string;
                parent_organization?: string;
                social_credentials?: {
                    discord?: {
                        application_name?: string;
                        client_id?: string;
                        has_bot_token?: boolean;
                        has_client_secret?: boolean;
                        verified_date?: string;
                    };
                };
                stats_settings?: { auto_refresh_twitter: boolean };
            },
        >,
    >

  • Crea una organización hija con el cupo que se le reparta del plan de ésta.

    Parameters

    Returns Promise<
        {
            _id: string;
            actual_asigned?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_plan?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_use?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            ai_context?: {
                audience?: string;
                avoid?: string;
                blog_url?: string;
                brand_name?: string;
                default_tone?: string;
                description?: string;
                keywords?: string[];
                notes?: string;
                products?: string;
                sector?: string;
                shop_url?: string;
                social_urls?: string[];
                value_proposition?: string;
                website?: string;
            };
            creation_date: string;
            id_client: string;
            name: string;
            parent_organization?: string;
            social_credentials?: {
                discord?: {
                    application_name?: string;
                    client_id?: string;
                    has_bot_token?: boolean;
                    has_client_secret?: boolean;
                    verified_date?: string;
                };
            };
            stats_settings?: { auto_refresh_twitter: boolean };
        },
    >

  • Emite el token temporal con el que una persona conecta una cuenta social a esta organización. Es la única forma que tiene una app de que se le conecte una cuenta.

    Y es el reverso exacto del resto del flujo: éste es el endpoint que exige credenciales de app —con un token de usuario contesta 514—, mientras que los tres que vienen después (accounts.connectLinks, accounts.connect, accounts.enable) las rechazan con un 519.

    Un token temporal tampoco puede pedir otro: también contesta 514. Un credencial que se renovase a sí mismo no caducaría nunca, y éste anda suelto en el navegador de tu usuario.

    Vuelven las dos formas del mismo credencial, y las dos sirven:

    • url — el camino alojado. Se redirige al usuario ahí y PlanVortex se encarga de la elección de red, del OAuth y de la pantalla donde elige qué cuentas dar de alta. Es lo que hace el ejemplo examples/connect-flow, y lo que casi todo el mundo quiere.
    • token — el credencial suelto, para pv.asTemporalToken(token) cuando la interfaz la pone el integrador.

    Caduca en quince minutos y sólo vale para esta organización: usarlo contra otra contesta 1101.

    Y conecta una vez. En cuanto un accounts.connect sale bien, ese token deja de poder conectar y contesta 543; los accounts.enable que rematan esa misma conexión siguen valiendo hasta que caduque. Emite uno por conexión: son gratis e inmediatos.

    Si pasas social_network, el token queda atado a esa red y no conecta ninguna otra (544). Sin ella, el token abre cualquiera y es la persona quien elige.

    Parameters

    Returns Promise<{ expires_at: string; token: string; url: string }>

  • Borra las credenciales propias de una red. Las cuentas ya conectadas con ellas dejan de funcionar: no hay a quién pedirle un token.

    Parameters

    Returns Promise<
        {
            _id: string;
            actual_asigned?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_plan?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_use?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            ai_context?: {
                audience?: string;
                avoid?: string;
                blog_url?: string;
                brand_name?: string;
                default_tone?: string;
                description?: string;
                keywords?: string[];
                notes?: string;
                products?: string;
                sector?: string;
                shop_url?: string;
                social_urls?: string[];
                value_proposition?: string;
                website?: string;
            };
            creation_date: string;
            id_client: string;
            name: string;
            parent_organization?: string;
            social_credentials?: {
                discord?: {
                    application_name?: string;
                    client_id?: string;
                    has_bot_token?: boolean;
                    has_client_secret?: boolean;
                    verified_date?: string;
                };
            };
            stats_settings?: { auto_refresh_twitter: boolean };
        },
    >

  • La ficha de una organización.

    Parameters

    Returns Promise<
        {
            _id: string;
            actual_asigned?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_plan?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_use?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            ai_context?: {
                audience?: string;
                avoid?: string;
                blog_url?: string;
                brand_name?: string;
                default_tone?: string;
                description?: string;
                keywords?: string[];
                notes?: string;
                products?: string;
                sector?: string;
                shop_url?: string;
                social_urls?: string[];
                value_proposition?: string;
                website?: string;
            };
            creation_date: string;
            id_client: string;
            name: string;
            parent_organization?: string;
            social_credentials?: {
                discord?: {
                    application_name?: string;
                    client_id?: string;
                    has_bot_token?: boolean;
                    has_client_secret?: boolean;
                    verified_date?: string;
                };
            };
            stats_settings?: { auto_refresh_twitter: boolean };
        },
    >

  • Las organizaciones hijas, encadenando páginas.

    Parameters

    Returns AsyncGenerator<
        {
            _id: string;
            actual_asigned?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_plan?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_use?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            ai_context?: {
                audience?: string;
                avoid?: string;
                blog_url?: string;
                brand_name?: string;
                default_tone?: string;
                description?: string;
                keywords?: string[];
                notes?: string;
                products?: string;
                sector?: string;
                shop_url?: string;
                social_urls?: string[];
                value_proposition?: string;
                website?: string;
            };
            creation_date: string;
            id_client: string;
            name: string;
            parent_organization?: string;
            social_credentials?: {
                discord?: {
                    application_name?: string;
                    client_id?: string;
                    has_bot_token?: boolean;
                    has_client_secret?: boolean;
                    verified_date?: string;
                };
            };
            stats_settings?: { auto_refresh_twitter: boolean };
        },
    >

  • Lo que esta organización puede usar de verdad, con la cascada ya resuelta: su plan propio, o el del primer padre que tenga uno, o el resto sin repartir del cliente.

    Es lo que hay que mirar antes de conectar una cuenta o programar una publicación, no organization.actual_plan.

    Parameters

    Returns Promise<
        {
            accounts: number;
            ai_credits?: number;
            artificial_inteligence?: boolean;
            integrations: number;
            publications: number;
            space: number;
            stats?: boolean;
            twitter_credits?: number;
            users: number;
            whatsapp?: boolean;
        },
    >

  • Borra una organización con todo lo que tiene dentro: sus hijas, sus cuentas, sus publicaciones, sus ficheros y sus comentarios. No se deshace.

    Parameters

    Returns Promise<void>

  • Cambia el nombre de una organización o el cupo que tiene asignado.

    Parameters

    Returns Promise<
        {
            _id: string;
            actual_asigned?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_plan?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_use?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            ai_context?: {
                audience?: string;
                avoid?: string;
                blog_url?: string;
                brand_name?: string;
                default_tone?: string;
                description?: string;
                keywords?: string[];
                notes?: string;
                products?: string;
                sector?: string;
                shop_url?: string;
                social_urls?: string[];
                value_proposition?: string;
                website?: string;
            };
            creation_date: string;
            id_client: string;
            name: string;
            parent_organization?: string;
            social_credentials?: {
                discord?: {
                    application_name?: string;
                    client_id?: string;
                    has_bot_token?: boolean;
                    has_client_secret?: boolean;
                    verified_date?: string;
                };
            };
            stats_settings?: { auto_refresh_twitter: boolean };
        },
    >

  • Escribe el contexto de marca que la IA usa al redactar para esta organización.

    Es un REEMPLAZO del bloque entero, no un parcheo campo a campo. Y no afecta a los planes ya creados: cada plan se lleva una copia del contexto en el momento de pedirlo, para que un reintento genere lo mismo.

    Parameters

    • idOrganization: string
    • body: {
          audience?: string;
          avoid?: string;
          blog_url?: string;
          brand_name?: string;
          default_tone?: string;
          description?: string;
          keywords?: string[];
          notes?: string;
          products?: string;
          sector?: string;
          shop_url?: string;
          social_urls?: string[];
          value_proposition?: string;
          website?: string;
      }
      • Optionalaudience?: string

        Who the content is aimed at.

      • Optionalavoid?: string

        Topics, expressions or competitors that must never appear.

      • Optionalblog_url?: string
      • Optionalbrand_name?: string

        Commercial name, when it differs from the organization's.

      • Optionaldefault_tone?: string

        Default tone. A tone set on the plan itself wins over this one.

      • Optionaldescription?: string

        What the organization does.

      • Optionalkeywords?: string[]

        Recurring keywords and hashtags.

      • Optionalnotes?: string

        Anything else the model should know.

      • Optionalproducts?: string

        Products or services that may be promoted.

      • Optionalsector?: string
      • Optionalshop_url?: string
      • Optionalsocial_urls?: string[]

        Social profiles or other reference links.

      • Optionalvalue_proposition?: string
      • Optionalwebsite?: string
    • options: RequestOptions = {}

    Returns Promise<
        {
            _id: string;
            actual_asigned?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_plan?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_use?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            ai_context?: {
                audience?: string;
                avoid?: string;
                blog_url?: string;
                brand_name?: string;
                default_tone?: string;
                description?: string;
                keywords?: string[];
                notes?: string;
                products?: string;
                sector?: string;
                shop_url?: string;
                social_urls?: string[];
                value_proposition?: string;
                website?: string;
            };
            creation_date: string;
            id_client: string;
            name: string;
            parent_organization?: string;
            social_credentials?: {
                discord?: {
                    application_name?: string;
                    client_id?: string;
                    has_bot_token?: boolean;
                    has_client_secret?: boolean;
                    verified_date?: string;
                };
            };
            stats_settings?: { auto_refresh_twitter: boolean };
        },
    >

  • Guarda las credenciales de la aplicación PROPIA de la organización para una red (BYOB).

    Hoy sólo Discord: sin esto, Discord ni siquiera aparece como red conectable (error 960). El motivo de que la aplicación sea del cliente y no nuestra no es técnico — es que el permiso para leer el TEXTO de los mensajes se revisa por aplicación en cuanto se pasa de 10.000 usuarios alcanzables, y una app compartida arrastraría a toda la plataforma a esa revisión.

    Los secretos son de sólo escritura y no vuelven nunca. Las tres credenciales hacen falta la primera vez; después, lo que se omite se conserva, así que se puede corregir el client_id sin volver a mandar el secreto ni el token. El token del bot se valida contra Discord antes de guardar nada.

    Parameters

    • idOrganization: string
    • socialNetwork: SocialNetwork
    • body: { bot_token?: string; client_id?: string; client_secret?: string }
      • Optionalbot_token?: string

        The bot's token. Stored encrypted, and validated against Discord before anything is saved.

      • Optionalclient_id?: string

        The Discord application's id (its Application ID, which is also its client id).

      • Optionalclient_secret?: string

        The application's OAuth2 secret. Stored encrypted.

    • options: RequestOptions = {}

    Returns Promise<
        {
            _id: string;
            actual_asigned?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_plan?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_use?: {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            ai_context?: {
                audience?: string;
                avoid?: string;
                blog_url?: string;
                brand_name?: string;
                default_tone?: string;
                description?: string;
                keywords?: string[];
                notes?: string;
                products?: string;
                sector?: string;
                shop_url?: string;
                social_urls?: string[];
                value_proposition?: string;
                website?: string;
            };
            creation_date: string;
            id_client: string;
            name: string;
            parent_organization?: string;
            social_credentials?: {
                discord?: {
                    application_name?: string;
                    client_id?: string;
                    has_bot_token?: boolean;
                    has_client_secret?: boolean;
                    verified_date?: string;
                };
            };
            stats_settings?: { auto_refresh_twitter: boolean };
        },
    >

  • El consumo de esta organización y lo que ya tiene repartido a sus hijas.

    Es un atajo de get(id, {getUse: true}) que devuelve sólo las dos cifras, que es lo que se quiere cuando se está pintando una barra de "3 de 5 cuentas".

    Parameters

    Returns Promise<
        {
            actual_asigned: | undefined
            | {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
            actual_use: | undefined
            | {
                accounts: number;
                ai_credits?: number;
                artificial_inteligence?: boolean;
                integrations: number;
                publications: number;
                space: number;
                stats?: boolean;
                twitter_credits?: number;
                users: number;
                whatsapp?: boolean;
            };
        },
    >